Raspberry Pi 3 как Wi-Fi роутер (Rasbian Stretch)

Категория: Raspberry Pi

Настройка Wi-Fi роутера на Raspberry Pi 3 (Rasbian Stretch).

Внимание!

В сети есть много инструкций по настройке предыдущей версии Raspbian Jessie - будьте внимательны при настройке, т.к. с версии Rasbian Stretch изменился способ настройка Static IP для интерфейсов.

Есть скрипт для автоматизации настройки Wi-Fi роутера - https://gist.github.com/Lewiscowles1986/fecd4de0b45b2029c390. Не проверял.

Этапы:

  1. Настройка Static IP для wlan0.
  2. Настройка DHCP сервера.
  3. Настройка AP (точки доступа).
  4. Роутинг и 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