Raspberry Pi 3 как Wi-Fi роутер (Rasbian Stretch)
Настройка Wi-Fi роутера на Raspberry Pi 3 (Rasbian Stretch).
Внимание!
В сети есть много инструкций по настройке предыдущей версии Raspbian Jessie - будьте внимательны при настройке, т.к. с версии Rasbian Stretch изменился способ настройка Static IP для интерфейсов.
Есть скрипт для автоматизации настройки Wi-Fi роутера - https://gist.github.com/Lewiscowles1986/fecd4de0b45b2029c390. Не проверял.
Этапы:
- Настройка Static IP для wlan0.
- Настройка DHCP сервера.
- Настройка AP (точки доступа).
- Роутинг и IP forwarding.
Настройка Static IP для wlan0
Настраивать статический IP в Raspbian Stretch нужно в конфиге /etc/dhcpcd.conf:
sudo nano /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.2.1/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8
Настройка DHCP сервера
Установка dnsmasq:
sudo apt -y install dnsmasq
Настроим выдачу IP адресов клиентам:
sudo nano /etc/dnsmasq.conf
interface=wlan0
domain-needed
bogus-priv
dhcp-range=192.168.2.120,192.168.2.250,12h
Настройка режима AP
Устанавливаем утилиту hostapd:
sudo apt install hostapd
Конфигурим параметры AP:
sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
## Drivers: hostap/wired/none/nl80211/bsd
#driver=nl80211
#ieee80211n=1
ssid=eschool
country_code=UA
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
## 1: hide SSID
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=eschool8
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Укажем путь к конфигу при запуске сервиса hostapd:
sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Проверим режим точки доступа:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Примечание
Команда для определения wifi драйвера:
basename $(readlink /sys/class/net/wlan0/device/driver)
# brcmfmac
Я попытался прописать driver=brcmfmac в конфиге, но такая конфигурация вызывала ошибку. Рекомендуют использовать драйвер nl80211, но hot-spot заработал и без указания этого драйвера.
Настройка роутинга и IP forwarding
Сохраним и запустим скрипт wifi_router_setup.sh:
#!/bin/bash
sudo iw wlan0 set power_save off
## Activate IP forwarding immediately
sudo sysctl net.ipv4.ip_forward=1
# or:
#sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
## Or permanently:
# Way one:
#sudo sysctl -w net.ipv4.ip_forward=1
# Way two:
# sudo nano /etc/sysctl.conf
# net.ipv4.ip_forward=1
## Configure the iptables to create a network translation between eth0 and 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
Автозагрузка скрипта настройки роутинга:
sudo nano /etc/rc.local
# ...
/home/pi/apps/wifi-router/wifi_router_setup.sh &
exit 0
Перезапуск сервисов
sudo service dnsmasq restart
sudo service hostapd restart
Примечание
Если вы уже подключались с Raspberry к Wi-Fi сетям, то для автостарта hostapd может понадобится удалить или переименовать конфиг: /etc/wpa_supplicant/wpa_supplicant.conf
#raspberry pi wi-fi router