Как сделать роутер из raspberry pi
Перейти к содержимому

Как сделать роутер из raspberry pi

  • автор:

Как превратить Raspberry Pi в роутер с поддержкой WireGuard VPN клиента

Если вдруг у вас есть Raspberry Pi, вы уже с ним наигрались и хотите найти ему полезное применение, то в этой статье я расскажу как быстро и просто превратить его в роутер, который может работать c VPN сервером по протоколу WireGuard. В виду того, что вычислительные возможности Raspberry Pi выше, чем у среднестатистического роутера, вы получите большую скорость Интернет при работе через VPN.

Ранее я публиковал статью, в которой рассказывал, как настроить WireGuard VPN клиент на роутере ASUS RT N56U. Вы можете сказать, что можно купить более мощный роутер или вообще роутер, который поддерживает WireGuard из коробки, но мне хотелось обойтись устройствами, которые были у меня в наличии. К тому же, что-то сделанное своими руками часто приносит большее удовольствие, так как ты начинаешь лучше разбираться в теме, да и греет душу мысль о том, что ты сэкономил деньги и можешь потратить их на что-то другое.

Как возникла идея

Купив себе Raspberry Pi 4 пару лет назад , я поигрался с ним, и как всегда, когда угасает интерес к вещи, положил на полку и забыл.

Когда я пытался установить VPN клиент на своей коллекции старых роутеров (TP-Link WR-841N, TP-Link WR-702N), и у меня это не выходило из-за их низких технических характеристик, я уже начал рассматривать Raspberry Pi в качестве альтернативы. У него было все для того, чтобы стать хорошим роутером: компактный размер, Ethernet разъем, встроенный модуль WiFi, производительный SoC и большой объем оперативной памяти, но мне попался ASUS RT N56U, и я решил использовать его.

На свой роутер АSUS я поставил прошивку OpenWRT и WireGuard клиент. Все работало, я даже написал статью о своем уcпешном опыте, но уж очень меня растраивала скорость Интернета через VPN. Да, она была больше, чем при использовании OpenVPN, достаточна для просмотра 4К видео, но WireGuard клиент на компьютере выдавал результат в несколько раз больше, так как производительность компьютера в разы выше производительности роутера.

Raspberry Pi 4 — это полноценный компьютер, отличающийся компактностью, на который можно установить множество операционных систем, такие как различные дистрибутивы Linux и даже Windows, поэтому я решил сделать из него роутер.

Поиск решения

Итак, задача о превращении Raspberry Pi 4 в роутер с поддержкой WireGuard была поставлена, и я принялся за ее решение.

Так как у мне удалось заставить свой роутер ASUS работать с протоколом WireGuard, используя прошивку OpenWRT, я и сейчас решил использовать ее.

OpenWRT – это Linux дистрибутив, основная задача которого – обеспечение работы роутера. Он имеет обширную библиотеку пакетов, позволяющую подстроить роутер под свои нужды.

WireGuard — это программное обеспечение и протокол, который проще и быстрее, чем OpenVPN и IPSec.

Первым делом я изучил видео и статьи в Интернете о том, как люди решали задачу, подобную моей. Но нужной мне полноценной инструкции от А до Я, я не нашел.

Больше всего меня увлекло эмоциональное и захватывающее видео от NetworkChuck, хотя оно подразумевало установку OpenVPN клиента, а не WireGuard, и подразумевалась настройка из командной строки, а не из GUI OpenWRT.

Как это часто бывает, видео немного устарело, и мне приходилось решать что-то уже по-своему, но когда я дошел до шага установки драйвера для WiFi USB адаптера, я не смог его установить, ни для одного из имеющихся у меня адаптеров.

Предлагаемое на форумах решение в виде компиляции исходного кода драйверов для OpenWRT мне с одной стороны показалось интересным и позволяющим получить новые знания, но с другой – нудным и менее универсальным. Хотелось какое-то другое решение.

У меня есть дорожный роутер TP-Link WR-702N, у которого всего лишь один разъем Ethernet и один встроенный модуль WiFi, я подумал, что ничто не мешает мне сделать что-то похожее из моего Raspberry Pi. Не знаю, для кого как, но для меня, когда я вижу, что задачу можно решить – это вдохновляет и мотивирует.

В итоге я нашел решение для своей задачи. Оно решает проблему подключения устройств из локальной сети к VPN, позволяет узнать новое применение вашему Raspberry Pi, разнообразить свой досуг или удивить друзей и знакомых необычным применением малинки.

Что понадобится
  1. Raspberry Pi 4.
  2. Роутер с доступом в Интернет.
  3. Ethernet кабель.
  4. Сетевой адаптер питания на 5В 3A с кабелем USB type C.
  5. MicroSD карта. Достаточно и 4GB.
  6. Адаптер MicroSD-SD и ноутбук с кардридером или USB MicroSD кардридер.

Решение задачи

  1. Заходим на страницу официального сайта OpenWRT, посвященную Raspberry Pi и загружаем свежий образ OpenWRT для Raspberry Pi 4. На момент написания статьи это версия 22.03.2
  2. Записываем образ OpenWRT на Micro SD карту. Я делал это в Windows при помощи программы balenaEtcher.
  3. Соединяем Ethernet кабелем компьютер и Raspberry Pi . Включаем Raspberry Pi. По умолчанию Raspberry Pi 4 c установленным OpenWRT имеет статический IP адрес 192.168.1.1, не имеет пароль для входа, также по умолчанию отключен WiFi интерфейс. Поэтому нужно включить и настроить WiFi, а также желательно поменять IP адрес и установить пароль.
  4. Настраиваем WiFi. Network->Wireless->Edit->Interface Configuration. Вводим настройки на владках General Setup, Advanced Settings.
  5. Устанавливаем пароль. System->Administration.
  6. Меняем IP адрес и убираем Ethernet интерфейс из LAN, чтобы использовать Ethernet интерфейс в качестве WAN. Network->Interfaces->Edit->LAN.
  7. Отключаем Raspberry Pi от сетевой карты компьютера.
  8. Подключаемся к точке доступа, созданной на Raspberry Pi. Открываем в браузере URL c адресом IP, который вы назначили Raspberry Pi.
  9. Настраиваем WAN порт Raspberry. Network->Interfaces->Add New Interface. В качестве WAN порта мы будем использовать Ethernet разъем Raspberry Pi. Так как разъем будет использоваться как WAN порт, а доступ к Raspberry Pi будет осуществляться через WiFi, при неверных настройках, которые нарушат работу интерфейса WiFi вам прийдется заново записать образ OpenWRT на microSD карту.
  10. Выключаем Raspberry Pi. Подключаем WAN порт Raspberry Pi к LAN порту домашнего роутера. Включаем Raspberry Pi.
  11. Убеждаемся, что доступ в интернет есть. Network->Diagnostics.
  12. Настраиваем файервол для WAN интерфейса. Network->Interfaces->WAN->Edit->Firewall Settings.
  13. Заходим на сайт https://www.myip.com/ чтобы узнать свой внешний IP адрес.
  14. Устанавливаем WireGuard. System->Software. Обновляем список пакетов (Update lists. ), находим пакет luci-i18n-wireguard-en и устанавливаем его.
  15. Перегружаем Rasperry Pi. System->Reboot.
  16. Устанавливаем WireGuard на VPS сервер. Как это сделать я подробно расписал в своей статье.
  17. Добавляем Wireguard интерфейс. Network->Interfaces->Add New Interface. -> Create Interface
  18. Вводим данные на вкладке General Settings. Здесь необходимо ввести Private Key, Public Key, IP Address для созданного WireGuard интерфейса, который теперь находится на Raspberry Pi. Public Key можно посмотреть в секции Peer в конфиграционном файле /etc/wireguard/wg0.conf на VPS сервере с установленным WireGuard или получить из имеющегося Private Key.
  19. Заходим на вкладку Peers. Нажимаем Add Peer. Вводим оставшиеся данные для WireGuard. Это параметры интерфейса WireGuard, который находится на удаленном сервере.
  20. Удостоверяемся, что WireGuard интерфейс работает. RX и TX должны содержать ненулевые значения.
  21. Настраиваем Firewall. Network->Firewall->Add.
  22. Настраиваем маршрутизацию. Network->Routing->Add. В поле Targetвводится IP адрес вашего сервера WireGuard фомате CIDR (/32).
  23. Настраиваем DNS. Network->Interfaces->WAN->Edit->Advanced Settings.
  24. Проверяем работу VPN. Заходим на сайт https://www.myip.com/ и смотрим на свой внешний IP. Если он отличается от того, что был до включения VPN, то VPN работает.
  25. Если все устраивает, то можно сделать резервную копию micro SD карты при помощи программы Win32 Disk Imager. Это позволит хранить всю настроенную OpenWRT для вашего Raspberry Pi на локальном диске компьютера и быстро развернуть уже настроенный OpenWRT в случае, если собьются настройки.

Надеюсь, что я вас не сильно утомил, и вы теперь наслаждаетесь результатами своего труда.

Сравнение с решением от NetworkChuck

Мое решение отличается от решения NetworkChuck следующим:

1. Я использую только один WiFi интерфейс, который работает в качестве точки доступа, а не два, один из которых (встроенный) работает в качестве WiFi клиента к точке доступа, предоставляющей доступ в Интернет, а второй (USB WiFi адаптер, желательно с антенной) в качестве точки доступа.

2. Я выполняю все настройки, используя исключительно GUI OpenWRT.

3. Для VPN я использую WireGuard, а не OpenVPN.

У решения от NetworkChuck есть ряд преимуществ:

1. Так как не нужен проводной доступ роутеру, раздающему Интернет, решение подходит для публичной точки доступа в кафе или в аэропорту (если конечно публичная точка доступа позволит это сделать).

2. Так как для организации точки доступа используется USB WiFi адаптер с антенной, покрытие созданной WiFi сети будет шире и стабильнее.

У моего решения тоже есть ряд преимуществ:

1. Неподготовленному пользователю проще выполнить все в GUI OpenWRT по приведенным скриншотам, чем вводить все в комадной строке.

2. Cкорость Интернет, у моего решения будет выше и стабильнее, так как я подключаю Raspberry Pi к роутеру с Интернет через проводное соединение и использую WireGuard вместо OpenVPN.

Оставляю вам возможность проверить решение от NetworkChuck, если у вас окажется USB WiFi адаптер, для которого вы сможете установить драйвер в OpenWRT.

Анализ результатов

У меня дома не было лабораторных условий для проведения эксперимента.

Подключившись к VPN серверу, установленному на VPS от PulseHeberg и проверив скорость Интернета, я получил заветные цифры. Если учитывать, что у меня Интернет от провайдера с заявленной скоростью 100 МБ/c, я не уже не вижу смысла улучшать скорость соединения.

Я надеюсь, что вы получите результат не хуже моего. Буду признателен, если вы в комментариях напишете, какие результаты получились у вас. Желательно указать версию Raspberry PI, версию OpenWRT, заявленную скорость интренет вашего провайдера, на каком хостинге располагается WireGuard VPN сервер, и полученные вами результаты в SPEEDTEST.

Выводы

Raspberry Pi подходит для создания компактного роутера с поддержкой WireGuard. Скорость Internet через Wireguard VPN на Rapsberry Pi практически такая же как и при работе без него.

Теоретически можно попробовать сделать роутер и из Raspberry Pi 3, но я не проверял и думаю скорость VPN будет значительно ниже.

К спорным моментам можно отнести:

  1. Cтоимость Raspberry Pi (роутер, на который можно поставить OpenWRT все-таки стоит дешевле).
  2. Доступность Raspberry Pi в контексте происходящих сейчас событий.
  3. Мощность антенны встроенного модуля WiFi (я считаю, что у обычного роутера антенна получше).

Сфера применения Raspberry Pi не ограничивается домашним роутером с VPN, я находил и другие интересные решения, способные удивить вас и ваших знакомых. Я думаю, что это тема моей следующей статьи.

Как сделать роутер из raspberry pi

Безопасность

Интернет

Интернет-маркетинг

Браузеры

Chrome

Internet Explorer

Firefox

Opera

Другие браузеры

Книги

Пиринговые сети

Поисковики

Google

Другие поисковики

Поисковая оптимизация

Программы

Каталоги

Инструменты безопасности

Мониторинг сайтов, RSS

Перевод

Поиск и загрузка

Воспроизведение аудио, видео

Специализированный поиск

Другие программы

Интернет-маркетинг

Безопасность в Интернете

Методы и инструменты

Поисковые системы

Поисковая оптимизация

Научно-популярные

ПРОЕКТЫ:

Raspberry Pi Unix, Linux. Ubuntu, Fedora. - это не так уж и страшно

Найти драйвер в Интернете Поиск технической документации

Сценарии для Интернета Поиск патентов в Интернете

Невидимый ИнтернетВидимые и невидимые пиринговые сети

Ссылки:

Сайт обо всем: isearch.in.ua

Ділова розвідка в Інтернеті



Как с Raspberry Pi сделать маршрутизатор Wi-Fi

Wi-Fi AP Raspberry Pi

Хотите иметь отдельную сеть Wi-Fi для своих гостей? Или домашнюю сеть, которая работает с альтернативной конфигурации DNS?

Вам больше не придется покупать новый Wi-Fi маршрутизатор, чтобы сделать это — Вы можете превратить свой Raspberry Pi (RPi) в Wi-Fi маршрутизатор.

Мы проведем Вас через процесс настройки RPi сети Wi-Fi.
Предпосылки и оборудование
Вам потребуются:
Raspberry Pi

USB Wi-Fi адаптер (например, Edimax EW-7811Un — беспроводной 802.11b/g/n нано USB адаптер — крошечный и дешевый)

SD-карта с установленной ОС Raspbian (руководство, если Вам нужно)
Доступ к RPi как с помощью клавиатуры и монитора, так и удаленно
Raspberry Pi с Edimax Wi-Fi адаптером

Прежде, чем мы приступим, хотим указать на важность покупки правильного USB Wi-Fi адаптера. Как Вы, возможно, почувствовали с другими типами устройств, что не все они plug-n-play. Иногда Вам было необходимо загрузить драйвер, чтобы заставить их работать. В то время как драйверы, как правило, легко доступны для компьютеров Windows, — это совсем другой мир для Linux и RPi. Вот почему очень важно купить Wi-Fi адаптер, который упоминает «Linux» в описании продукта или пакета. Автор использует Edimax — беспроводной 802.11b/g/n нано USB адаптер, потому что он дешевый и с ним очень легко работать. Рекомендую Вам сделать то же самое — это поможет сэкономить много головной боли.

Edimax Wi-Fi

Убедитесь, что Wi-Fi адаптер работает на Raspberry Pi

Вставьте адаптер USB Wi-Fi в один из свободных портов USB на RPi. Подайте питание на RPi. В этот момент Вы должны либо подключиться к RPi с помощью кабеля Ethernet, или использовать клавиатуру и монитор для доступа к RPi.

Если нужна помощь с внешним подключения к RPi, то прочитайте статью, как удаленно получить удобный защищенный доступ к RPii с помощью проводного подключения к сети.

После загрузки и регистрации Вы должны убедиться, что RPi нашел свой новый беспроводной адаптер. Чтобы посмотреть, какая периферия найдена операционной системой при загрузке, выполните следующую команду:

dmesg | more

Вы можете использовать пробел, чтобы прокрутить страницу вниз за один раз — в конце увидите что-то похожее на следующие строки

[ 3.282651] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[ 3.394810] usb 1-1.2: New USB device found, idVendor=7392, idProduct=7811
[ 3.407489] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3.420530] usb 1-1.2: Product: 802.11n WLAN Adapter

Это означает, что операционная система признала USB Wi-Fi адаптер с помощью одного из встроенных драйверов (можете вернуться к терминалу, нажав Q). Все, что осталось, это настроить подключение Wi-Fi.

Устновка программного обспечения маршрутизатора

Для того, чтобы RPi выступал как Wi-Fi роутер и точка доступа, необходимо установить некоторое дополнительное программное обеспечение на RPi. Вам необходимо следующее программное обеспечение:

hostapd

hostapd является службой (демоном) пользователя для серверов точек доступа и аутентификации. Это означает, что он может превратить Ваш RPi в точку доступа и другие компьютеры смогут подключиться. Он также будет заниматься безопасностью таким образом, чтобы можно было настроить Wi-Fi с паролем.

isc-dhcp-server

isc-dhcp-server является реализацией Internet Systems Consortium DHCP-сервера. DHCP-сервер отвечает за назначение адресов компьютерам и устройствам, подключенным к точке доступа Wi-Fi.

Чтобы установить ПО для DHCP выполните следующую команду:
sudo apt-get install isc-dhcp-server

Далее необходимо программное обеспечение для HostAPD. Потому, что драйвер точки доступа нашего USB-модуля не поддерживает родное приложение HostAPD, нам необходимо установить специальную версию, собранную с драйвером, который необходим. Это может быть сделано с помощью следующих команд, выполненных одна за другой:

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
sudo make
sudo make install

Это займет немного времени.
После загрузки мы готовы настроить программное обеспечение.
Настройка ISC-DHCP-сервера

Для настройки DHCP-сервера откройте файл /etc/dhcp/dhcpd.conf в Вашем любимом текстовом редакторе. Вы можете открыть его в нано с помощью команды:

sudo nano /etc/dhcp/dhcpd.conf
Найдите раздел, который ниже, и закомментируйте его, поставив хэштег в начале строки:
option domain-name «example.org»;
option domain-name-servers ns1.example.org, ns2.example.org;
Далее найдите ниже в разделе и раскомментируйте слово авторизации (удалите hastag):

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

Теперь файл должен выглядеть следующим образом:

Wi-Fi AP Raspberry Pi-1

Далее нам нужно указать сеть и сетевые адреса, которые DHCP-сервер будет обслуживать. Это делается путем добавления следующего блока конфигурации в конец файла:

subnet 192.168.10.0 netmask 255.255.255.0 <
range 192.168.10.10 192.168.10.20;
option broadcast-address 192.168.10.255;
option routers 192.168.10.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name «local-network»;
option domain-name-servers 8.8.8.8, 8.8.4.4;
>

Это позволит DHCP-серверу раздавать IP-адреса с 192.168.10.10 по 192.168.10.20 в собственной локальной сети. Специалисты по конфигурации сетей могут изменить эти значения, если хотят использовать другие сетевые адреса и/или другие серверы DNS. Приведенная конфигурация будет использовать DNS-серверы Google на 8.8.8.8 и 8.8.4.4.

Чтобы сохранить файл, нажмите Ctrl+O, чтобы записать файл на диск — потом можно выйти из нано, нажав Ctrl+X. Если нано спросит, хотите сохранить измененный буфер, то нажмите «Y», а затем нажмите Enter для подтверждения имени файла.

Следующий файл для редактирования /etc/default/isc-dhcp-server , который Вы можете открыть в нано помощью следующей команды:

sudo nano /etc/default/isc-dhcp-server
Выделите строки, упоминющие интерфейсы, и обновите строку, чтобы она выглядел так:
INTERFACES=»wlan0″

Это позволит DHCP-серверу раздавать сетевые адреса через беспроводной интерфейс. Сохраните файл и выйдите из нано .

На последнем шаге настройки DHCP-сервера необходимо настроить статический IP-адрес для адаптера беспроводной сети. Это делается в файле /etc/network/interfaces — перед его открытием убедитесь, что интерфейс WLAN не работает. Сделайте это с помощью следующих команд:

sudo ifdown wlan0
sudo nano /etc/network/interfaces
Измененный файл должен выглядеть следующим образом:

Wi-Fi AP Raspberry Pi-2

Это позволит беспроводному адаптеру взять адрес 192.168.10.1 в нашей новой локальной сети. Не забудьте закомментировать последние 3 строки файла.

На этом настройка DHCP-сервера завершена, однако, мы все еще не можем подключиться к нашей новой сети, потому что не установлена точка доступа. Это делается путем настройки программы hostapd.

Настройка HostAPD

Чтобы настроить HostAPD, откройте файл /etc/hostapd/hostapd.conf в текстовом редакторе. Вы можете открыть его в нано с помощью следующей команды:

sudo nano /etc/hostapd/hostapd.conf

Стандартная конфигурация создаст новую беспроводную сеть под названием wifi с паролем YourPassPhrase. Вы можете изменить параметр «ssid = wifi» по имени WiFi SSID, которое хотите, а в параметре «wpa_passphrase = YourPassPhrase» указать код доступа.

Это завершает конфигурацию программного обеспечения HostAPD нашей точки доступа. Следующим будет разрешение NAT.

Включенне NAT

Следующим шагом, прежде чем мы сможем запустить точку доступа, является настройка трансляции сетевых адресов (Network Address Translation — NAT). Это позволит убедиться, что наш сетевой трафик может достигнуть Интернета, используя соединение через Ethernet-кабель RPi с интернет-маршрутизатором.

Откройте etc/sysctl.conf з:
sudo nano /etc/sysctl.conf
Перейдите к последней строке файла и добавьте строку:
net.ipv4.ip_forward=1
Следующее — запустить трансляцию немедленно командой:
sudo sh -c «echo 1 > /proc/sys/net/ipv4/ip_forward»
Запустите беспроводную сеть через:
sudo ifup wlan0

Теперь создадим фактическую трансляцию между портом локальной сети под названием eth0 и беспроводной картой под названием wlan0 .

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state —state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Теперь с настроенным NAT настало время для первого запуска точки доступа.
Пуск собственного беспрводного маршрутизатора

Теперь Вы готовы запустить DHCP-сервер и приложение HostAPD точки доступа. Это можно сделать командой:

sudo service isc-dhcp-server start
sudo service hostapd start

В этот момент Вы должны быть в состоянии найти беспроводную сеть на ноутбуке, подключиться к ней и выйти в Интернете!

Завершенне.

В то время, как очень хорошо, что теперь у Вас есть своя RPi, которая работает как беспроводная точка доступа, но не все так хорошо, потому что Вы должны вводить логин каждый раз, когда перегружаетесь, чтобы запустить программное обеспечение HostAPD и DHCP.

Чтобы избежать этого, выполните следующие команды:
sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable

Чтобы избежать необходимости настраивать NAT каждый раз, когда перезагружаете RPi, можете сделать следующее.

Выполните данную команду для резервного копирования NAT конфигурации:
sudo sh -c «iptables-save > /etc/iptables.ipv4.nat»

Добавьте следующее в конец файла /etc/network/interfaces для восстановления конфигурации, когда поднимется сетевой интерфейс:

up iptables-restore < /etc/iptables.ipv4.nat Файл должен выглядеть так:

Wi-Fi AP Raspberry Pi-3

В этот момент попробуйте перезагрузить RPi, чтобы убедиться, что все работает как положено — можно перезагрузить с помощью команды:

sudo reboot

Надеюсь, Вы снова увидите свою новую точку доступа в онлайн. После того, как она поднимется, Вы сможете подключиться к ней и получить доступ к Интернету.

(Источник EN: raspberrypihq.com)

Останні статті за темою:

  • Як встановити програмне забезпечення Windows на Raspberry Pi, використовуючи Wine — 14.03.18
  • Машинне навчання для IoT за допомогою Android Things та TensorFlow — 13.03.18
  • Дистанційне керування іграшковим автомобілем за допомогою Android Things GPIO — 12.03.18
  • IoT, Android Things та хмара — 29.10.17
  • 3 плати для автономного живлення Raspberry Pi 3 — 17.09.17

Wifi роутер на Raspberry Pi

Внешний вид роутера на Raspberry pi с адаптерами Asus N14 и NoName Wifi adapter

Роутер должен не только раздавать интернет не только из Ethernet-порта, но и из одного WiFi-адаптера на другой. Это бывает очень полезно в путешествиях. Например, в гостинице легко оказаться в номере, куда местная точка доступа плохо добивает. А мощный WiFi-адаптер поймает даже слабый сигнал и раздаст его на все имеющиеся планшеты и телефоны. Это также может помочь сэкономить деньги там, где плата за интернет берётся с каждого устройства отдельно.

Подготовительные шаги

Практически каждую команду из этой статьи нужно запускать под super user’ом. Можно запустить под super user’ом Midnight Commander и спокойно редактировать им системные файлы и выполнять любые команды.

sudo mc

Обновление пакетов

Все мануалы по Raspberry Pi начинаются тем, что советуют обновить всё, что можно. Следуя канону, напишу эти команды и я:

apt-get update

Можно ещё обновить сам Raspberian.

apt-get upgrade

Удалённый доступ к Raspberry Pi

Если у вас не включён SSH, то стоит его включить в настройках Raspberry Pi. Запустить настройки можно командой:

raspi-conf

Там идём в раздел Advanced Options -> SSH. И включаем их.

Raspberry PI config utility

Raspberry PI config utility

Для подключения к Raspberry Pi через ssh можно использовать mRemoteNG, а можно утилиту ssh , она есть и в Linux и Windows.

ssh pi@192.168.1.2

Здесь 192.168.1.2 — это IP-адрес Raspberry, который выдал ей роутер моей локальной сети. Чтобы узнать, какой IP-адрес получила ваша Raspberry можно зайти в Admin-интерфейс вашего домашнего роутера или посмотреть информацию об интерефейсах на самом Raspberry через команду ifconfig .

Для удалённого доступа к рабочему столу Raspberry я пытался настроить VNC. Потратил много времени в итоге ничего хорошего не вышло. Проще использовать XRPD.

apt-get install tightvncserver apt-get install xrdp

После выполнения этой команды больше ничего настраивать не надо. Для подключения к Raspberry из Windows берём mstsc или программу вроде mRemoteNG и подключаемся к Raspberry Pi 2 используя логин и пароль юзера Raspberrian.

Доступ по rdp через MRemote

Доступ по rdp через MRemote

Кстати, удобно настраивать Raspberry Pi, если подключить его к локальной сети через Ethernet-кабель. Таким образом настройки WiFi-адаптеров не отрубят вас от Raspberry.

При настройке роутера удобно после каждого шага делать бэкап SD-карточки, для этого можно воспользоваться чем-нибудь вроде Acronis True Image или линуксовой утилиты dd: так будет легко откатиться назад, если что-то пошло не так.

При настройке роутера потребуется править несколько конфигурационных файлов. Мне показалось удобным создать папку, вроде /home/pi/vrouter и накидать туда soft-link’и на все нужные конфиги. Это стоит делать по ходу установки, потому что сами конфиги появляются только после установки соответсвующих программ.

ln -s /etc/network/interfaces interfaces ln -s /etc/wpa_supplicant/wpa_supplicant.conf wpa_supplicant.conf ln -s /etc/dnsmasq.conf dnsmasq.conf ln -s /etc/hostapd/hostapd.conf hostapd.conf ln -s /etc/default/hostapd hostapd_default ln -s /etc/rc.local rc.local ln -s /etc/sysctl.conf syctl.conf ln -s /etc/udev/rules.d/70-persistent-net.rules 70-persistent-net.rules ln -s /etc/dhcpcd.conf dhcpcd.conf

Настройка интерфейсов (Старые версии Raspberrian до Stretch)

Чтобы у знать, какие интерфейсы у нас есть, выполним команду ifconfig .

$ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:0f:10:4e inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:98 errors:0 dropped:1 overruns:0 frame:0 TX packets:72 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13006 (12.7 KiB) TX bytes:12910 (12.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1104 (1.0 KiB) TX bytes:1104 (1.0 KiB) wlan0 Link encap:Ethernet HWaddr 00:13:ef:c5:10:2e inet addr:192.168.1.28 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63 errors:0 dropped:13 overruns:0 frame:0 TX packets:30 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7905 (7.7 KiB) TX bytes:4702 (4.5 KiB) wlan1 Link encap:Ethernet HWaddr e0:3f:49:eb:b3:90 inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:76 errors:0 dropped:15 overruns:0 frame:0 TX packets:31 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10266 (10.0 KiB) TX bytes:4501 (4.3 KiB)

Если вместо wlan0, eth0 и т.п. вы видите что-то вроде «wlx00e01ce3030f» или «enxb822ebfb32ad», у вас включены «predictable network interface names» их можно выключить в raspi-config .

На выводе команды видны следующие интерфейсы:

  • eth0 — проводной Ethernet адаптер. Им мы будем пользоваться, чтобы подключаться к Raspberry на время настройки. С него также можно будет брать интерент.
  • lo — loop back, он же localhost, нам он не интересен.
  • wlan0 — простенький китайский noname WiFi-адаптер, которым я буду раздавать интернет. На нём развернём сеть Raspberry. Адаптер должен поддерживать master-mode.
  • wlan1 — у меня это мощный WiFi-адаптер Asus N-14, которым я буду ловить интернет.

Роутер подключён к сети 192.168.1.0 раздаёт интерентет в сеть 10.0.0.0

Роутер подключён к сети 192.168.1.0 раздаёт интерентет в сеть 10.0.0.0

Раздавать интернет соит имеено с адаптера wlan0. Таким образом мы сможем отключить второй адаптер, если захотим использовать eth0, как источник интеренета и wlan1 нам окажется без надобности.

Изменим конфигурацию интерфейсов следующим образом:

nano /etc/network/interfaces
auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet manual auto wlan1 allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan0 iface wlan0 inet static address 10.0.0.1 network 10.0.0.0 netmask 255.255.255.0 broadcast 255.0.0.0

Смысл этой конфигурации в том, что eth0 и wlan1 настраиваются автоматически. А wlan0 имеет статический IP-адрес 10.0.0.1. По этому IP-адресу можно будет подключаться к Raspberry Pi по SSH или VNC даже если остальные адаптеры будут выключены.

Wlan1 берёт настройки подключений к интернету из /etc/wpa_supplicant/wpa_supplicant.conf . Этот файл может понадобиться в будущем, для добавления новых сетей.

Вот пример wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network= < ssid="ASUS" psk="password123" key_mgmt=WPA-PSK >network=

Настройка интерфейсов в Raspberrian Stretch

В Raspberrian Stretch сильно изменилась настройка интерфейсов и, думаю, что этот момент ещё будут дорабатывтаь и менять дальше. На текщуй момент (4 апреля 2018 года) управлять интерфейсами нужно через /etc/dhcpcd.conf и через wpa_supplicant. Погрузиться в эту тему можно вот с этого поста https://raspberrypi.stackexchange.com/a/37921/32956.

Установим статический IP для интерфейса wlan0. Для этого нужно в конец файла добавить сдедующие 2 строки:

interface wlan0 static ip_address=10.0.0.1/8

Остальные интерфейсы будут подключаться к интернету автоматически.

На текущий момент в Stretch есть такая проблема, что wpa_supplicant всё равно пытается подключить wlan0 к доступной WiFi сети и получить IP. Это нам не нужно, потому что wlan0 будет использоваться hostapd и должен иметь статический IP 10.0.0.1.

Есть два способа, как можно запретить wpa_supplicant подключать wlan0 к сети.

    Первый Пропатчить файл /lib/dhcpcd/dhcpcd-hooks/10-wpa_supplicant . Там, вконце, есть строчки

if [ "$ifwireless" = "1" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then

заменить на

if [ "$ifwireless" = "1" ] && [ "$interface" != "wlan0" ] && \ type wpa_supplicant >/dev/null 2>&1 && \ type wpa_cli >/dev/null 2>&1 then

Где b8:27:eb:53:4d:fd — это mac-адрес встроенного адаптера (его можно узнать с помощю команды ifconfig ).

Dnsmasq

Dnsmasq — это DHCP-сервер, который будет раздавать IP-шники в нашей новой сети. Установить его очень просто:

apt-get install dnsmasq

Dnsmasq сам подымет свой сервис, а вам останется его сконфигурировать. Стоит сказать, что dnsmasq.config хорошо документирован.

nano /etc/dnsmasq.conf
# disables dnsmasq reading any other files like /etc/resolv.conf for nameservers no-resolv # Interface to bind to interface=wlan0 except-interface=wlan1 except-interface=eth0 # Specify starting_range,end_range,lease_time #address=/#/10.0.0.1 dhcp-range=10.0.0.3,10.0.0.20,12h # dns addresses to send to the clients server=8.8.8.8 server=8.8.4.4 log-facility=/var/log/dnsmasq.log log-queries

interface=wlan0 обозначает интерфейс, на котором dnsmasq будет ожидать входящих DHCP-запросы. Wlan1 и eth0 — интерфейсы, которыми мы ловим интернет.

Sysctl.conf

Включим пресылку пакетов, для этого поправим файл /etc/systcl.conf:

nano /etc/sysctl.conf

По умолчанию, все настройки в этом файле закомментировны. Для настройки роутера важно, чтобы были раскоментированы следующие настройки:

net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1

Iptables

Настроим NAT. Пусть настройки iptables устанавливаются при запуске Raspberry, для этого поправим файл rc.local .

nano /etc/rc.local

Заведём две переменные: SOURCE — адаптер-источник интернета — и DEST — адаптер, раздающий интернет. Так нам будет удобно удобно поменять назначение адаптеров.

#!/bin/sh -e # # rc.local SOURCE=wlan1 DEST=wlan0 iptables -t nat -A POSTROUTING -o $SOURCE -j MASQUERADE iptables -A FORWARD -i $SOURCE -o $DEST -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i $DEST -o $SOURCE -j ACCEPT exit 0

В будушем, чтобы изменить источник интернета с wlan1 на eth0 нам потребуется всего лишь поменять ЮSOURCE=wlan1 на SOURCE=eth0 . Другие файлы конфигурации менять не прийдётся.

Hostapd

hostapd — это утилита, которая будет делать точку доступа из WiFi-адаптера. Она переводит WiFi-адаптер в master mode и сама поднимает bridge между адаптерами. hostapd можно запускать из консоли командой hostapd [path_to_config] . Но нам нужно, чтобы wlan0 становился точкой доступа сразу же после загрузки Raspberry. Потому нам нужно запустить hostapd, как сервис. Для этого мы настроим путь до конфига hostapd в файле /etc/default/hostapd .

nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Теперь настроим конфиг hostapd.conf . Именно с ним возникают различные сложности.

nano /etc/hostapd/hostapd.conf

Для начала можно попробовать использовать конфиг для простой сети без авторизации с дефолтным драйвером:

interface=wlan0 ssid=Raspberry_Free hw_mode=g channel=6 auth_algs=1 wmm_enabled=0

Если у вас получилось подключиться к интернету с такой конфигурацией, значит можно настраивать авторизацию. А если подключиться не вышло, то, вероятно, проблема с драйвером. Нужно найти описание вашей сетевой карты и изучить, как установаить драйвер вашей сетевоей карты в Raspberrian. Найти информкцию по вашему адаптеру вам поможет https://wikidevi.com. Мой конфиг выглдяит следующим образом.

interface=wlan0 driver=nl80211 ssid=Raspberry channel=3 country_code=US ieee80211d=1 ieee80211n=1 wmm_enabled=1 hw_mode=g #auth wpa=2 wpa_passphrase=picupcake wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP auth_algs=1 macaddr_acl=0 ignore_broadcast_ssid=0 # control logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ctrl_interface=/var/run/hostapd ctrl_interface_group=0

Посмотреть активен ли сервис hostapd можно с помощю команды service —status-all .

Failed to update rate sets in kernel module

При запуске hostapd у меня он выдавал ошибку Failed to update rate sets in kernel module. Вылечить её конфирурированием я никак не смог, потому собрал hostapd из исходников. На момент написания статьи (RASPBIAN WHEEZY) в репозиториях Raspberian лежал hostapd 1.0, а из исходников я собрал версию 2.4. Вместе с RASPBIAN JESSIE в репозиториях появился hostapd 2.3, таким образом 2.3 вы можете поставить просто выполнив apt-get install hostapd .

Сборка hostapd из исходников.

Я собирал hostapd по этому мануалу: http://quadfinity.blogspot.ru/2014/09/compile-latest-hostapd-v2.3-on-Raspberry-Pi-or-ODROID.html Однако я бы советовал зайти на страницу https://w1.fi/cgit/hostap/refs/tags и посмотреть, что там есть за версии. На момент написания этой статьи версия hostap_2_4 неплохо работала.

Версии hostapd

Версии hostapd

Performance

На мой взгляд, быстродействие WiFi-роутер на Raspberry зависит не сколько от самой Raspberry, сколько от WiFi-адаптера, который был использован для раздачи интерента. Например, китайский No-Name адаптер дал мне скорость в ≈20 мегабит/с, а Asus N14 чуть больше 30 мегабит/с. Стоит ещё учесть, что WiFi-адаптер может потреблять много энергии, больше, чем способен дать USB-порт Raspberry Pi. В этом случае адаптер может понизить скорость, понизив своё энергопотребление. Побороться с этим можно спомощю USB-хаба с дополнительным питанием, либо использовав специальный USB-кабель. Стоит обратить на некоторые опции, в hostpad.conf , которые могут улучшить быстродействие:

country_code=US ieee80211d=1 ieee80211n=1 wmm_enabled=1 hw_mode=g

Превращение Raspberry Pi в WiFi роутер (маршрутизатор)

Технология WiFi в нашей время является одной из самых популярных технологий для осуществления беспроводной связи. Но в подобных условиях особенно остро стоит проблема перехвата пользовательской информации. И если вы хотите защитить свои данные от несанкционированных посягательств на них со стороны других лиц, то для использования технологии WiFi желательно использовать свой собственный роутер (маршрутизатор). И в данной статье мы рассмотрим создание своего собственного WiFi роутера на основе платы Raspberry Pi.

Ранее на нашем сайте мы также рассматривали создание ретранслятора WiFi сигнала на основе модуля ESP8266.

Что такое OpenWrt

OpenWrt (Open Wireless Router) – это операционная система с открытым исходным кодом на основе Linux, которая была разработана для встраиваемой электроники. Она позволяет разработчикам модифицировать (настраивать) программное обеспечение на совместимых сетевых устройствах. Благодаря ей нам доступен следующий функционал:

  • понятная и «естественная» блокировка рекламных объявлений, которая сделает ваш серфинг в сети интернет более комфортным;
  • возможность использования VPN аддонов, исключающих возможность контроля со стороны интернет-провайдера вашего трафика и ваших поисковых запросов;
  • обновления программного обеспечения. Многие производители роутеров спустя некоторое время прекращают выпуск для них обновлений прошивки, что делает их уязвимыми к новым возникающим угрозам безопасности. OpenWrt имеет огромное «живое» сообщество разработчиков, которое всегда выпускает обновления своего программного обеспечения, поэтому вы можете быть уверены в том, что ваш роутер будет защищен от новых угроз;
  • поскольку OpenWrt основана на дистрибутиве Linux, это означает что она по умолчанию не восприимчива к большинству обычных атак.

В данном проекте мы рассмотрим установку программного обеспечения OpenWrt на плату Raspberry Pi, которую будем использовать в качестве роутера, работающего мостом между роутером от вашего интернет-провайдера и вашим компьютером.

Необходимые компоненты

  1. Плата Raspberry Pi 3-й или 4-й серии (купить на AliExpress).
  2. Источник питания.
  3. Ethernet LAN кабель.
  4. Обычный WiFi роутер (можно от провайдера).
  5. SD карта и модуль чтения SD карт.

Принципы работы нашего проекта

Основное устройство, которое предоставляет нам доступ в сеть интернет, это WiFi роутер от провайдера, но вместо непосредственного подключения наших устройств к этому роутеру мы будем подключать к нему нашу плату Raspberry Pi с помощью сетевого (LAN) кабеля. И в этом случае наша плата Raspberry Pi с загруженной в нее операционной системой (ОС) OpenWrt будет работать как точка доступа WiFi для всех ваших остальных устройств. В данной статье мы рассмотрим как установить и настроить OpenWrt на плату Raspberry Pi, чтобы эффективно использовать ее в качестве персонального WiFi роутера.

Принцип работы нашего проекта роутера наглядно представлен в следующем видео:

Установка OpenWrt на плату Raspberry Pi и настройка точки доступа WiFi

1. Вначале необходимо скачать файлы образа самой последней стабильной версии OpenWrt с ее официального сайта.

Выберите модель платы Raspberry Pi, которую вы будете использовать, и скачайте файл образа EXT4 (мы рекомендуем использовать плату Raspberry Pi 3-й или 4-й серии).

2. После успешного скачивания последней сборки ОС OpenWrt нам необходимо поместить ее на SD карту, но для этого нам понадобится два дополнительных инструмента: SD Card Formatter для очистки SD карты и Balena Etcher для записи файла образа на SD карту. Их можно скачать с их официальных сайтов.

3. После того как вы скачаете и установите эти программы, вставьте SD карту в модуль чтения для нее и затем в компьютер. Откройте SD Card Formatter > выберите SD карту > нажмите на format.

4. Откройте программу Balena Etcher Tool и выберите в ней “Flash from file option”.

5. Выберите файл образа (image file), который вы загрузили с официального сайта OpenWrt на шаге 1.

6. Нажмите на кнопку Select Target и выберите вашу карту.

7. И, наконец, нажмите на кнопку Flash Button. После этого OpenWrt будет смонтирована на вашу SD карту и теперь ее можно будет вставлять в плату Raspberry Pi.

8. Перед загрузкой Raspberry Pi нам необходимо указать IP шлюз по умолчанию (default gateway) для нашего роутера от провайдера. Для этого подключите ваш Wi-fi роутер к компьютеру, откройте CMD (командную строку) и выполните в ней следующую команду:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *