В сети очень много статей как сделать из Raspberry Pi (RPI) Wi-Fi роутер, в этой заметке я кратко опишу свой способ создания Wi-Fi роутера с sing-box на борту. Описанный метод работает на текущий момент времени, и многое может измениться в будущем. Поэтому используйте эту заметку для примерного обзорного понимания того с чем предстоит столкнуться.
SSH
Для тех кто не умеет работать с OpenWrt, я рекомендую установить dietPI.
Подключите RPI к вашему текущему роутеру по eth0, далее подключитесь туда по SSH. Узнать ip адрес RPI можно в dhcp панели роутера. Подключайтесь сразу к root, например так:
ssh root@[IP_ADDRESS]
Wi-Fi адаптер
Встроенный в RPI3 оказался откровенно слабым и не поддерживающим 5GHz. Поэтому я подключил адаптер RITMIX RWA-150 на чипсете Realtek RTL8811CU через USB 2. Драйвера добавлены в ядро Linux которое было в моей версии dietPi. Далее с помощью dietpi-config отключил встроенный Wi-Fi полностью. В результате этого остался один wlan0 адаптер по USB.
Точка доступа
По умолчанию dietPI для root ставит пароль dietpi. После подключения вас встретит установщик/конфигуратор dietPI. По окончанию нужно будет подключиться снова из-за перезагрузки устройства.
Для начала вам нужно настроить hostapd для того чтобы устройства видели вашу точку доступа. Если hostapd не установлен, то установите его через apk.
Далее нужно будет написать конфиг для hostapd. Пример моего конфига:
interface=wlan0
driver=nl80211
ssid=MyPiAP
hw_mode=a
channel=157
wmm_enabled=1
auth_algs=1
wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ieee80211n=1
ieee80211ac=0
ieee80211ax=0
country_code=RU
Смысл конфига hostapd можно посмотреть в мануале. Однако из того что важно стоит настроить под себя – канал (2.4GHz или 5GHz), код страны, иначе без этого ваши локализованные устройства могут работать с точкой доступа корректно, это я уже проходил и знаю, поэтому установите свою страну обзятально.
DHCP
Далее установите и настройте dnsmasq для реализации DHCP. Это нужно для того чтобы подключенные компьютеры определяли ip адрес и dns сервера.
Пример моего конфига:
interface=wlan0
dhcp-range=172.19.0.10,172.19.0.200,255.255.255.0,12h
dhcp-option=3,172.19.0.1
dhcp-option=6,1.1.1.1,8.8.8.8
no-resolv
server=1.1.1.1
server=8.8.8.8
Это минимальный конфиг, который позволит подключиться к точке доступа и получить ip адрес. Далее вам нужно будет настроить маршрутизацию и NAT. Это нужно для того чтобы подключенные компьютеры могли выходить в интернет.
Здесь уже заметка переходит в разряд типичной настройки маршрутизации на обычной debian совместимой системе, о чем есть очень много статей в сети. Далее все зависит от того какие цели вы преследуете, например подключение к внешнему серверу как новому интерфейсу в системе, или просто делаете wlan0 <-> eth0, на этом специфика по RPI заканчивается, дальше настраивайте на свой вкус.
Хочется упомянуть также необходимость настройки кастомных системных сервисов через systemctl, возможно появится потребность в подключении сервисов по цепочке, все это есть в мануалах по systemctl в сети. Если возникли проблемы на уровне сервисов, то ознакомьтесь с логами в journalctl.
Заключение
Из замеров скорости удалость выжать из RPI3 около 50Мбит/с по Wi-Fi (после подключения 5GHz адаптера) что означает потерю половины скорости по сравнению с подключением напрямую к роутеру. Допускаю что более производительные модели RPI позволят добиться лучших результатов, также специализированные устройства на OpenWrt и готовые решения могут оказаться лучше для ваших потребностей.
Источники
https://forums.raspberrypi.com/viewtopic.php?t=394710
https://superuser.com/questions/1408586/raspberry-pi-wifi-hotspot-slow-internet-speed
https://www.youtube.com/watch?v=jlHWnKVpygw