Домашний Роутер-NAS-DC на базе Orange Pi Plus. Часть 5. Точка доступа Wi-Fi при помощи HOSTAPD.


Часть 1. Введение.
Часть 2. Подготовка.
Часть 3. Samba 4 AD DC.
Часть 4. FreeRadius. NTLM-авторизация.
Часть 5. Точка доступа Wi-Fi при помощи HOSTAPD.
Часть 6. Доступ в интернет при помощи PPPoE. Фаервол IPTables.
Часть 7. Подключение уже созданного RAID-массива. NFS server.
Часть 8. Баг при подключении к Wi-Fi внутри домена. FreeRadius.

Как было сказано в первой части, к Orange PI подключены два USB-to-Ethernet адаптера. Для того чтобы объединить их интерфейсы и Wi-Fi-интерфейс необходимо сформировать единый интерфейс типа мост(bridge).

Bridge

Установим bridge-utils.

apt-get install bridge-utils

И сконфигурируем мост в файле /etc/network/interfaces, добавив в него wlan1, eth1, eth2, br0:

auto lo eth0
allow-hotplug eth0
iface lo inet loopback
iface eth0 inet dhcp

auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual

auto eth1
allow-hotplug eth1
iface eth1 inet manual

auto eth2
allow-hotplug eth2
iface eth2 inet manual

auto br0
iface br0 inet static
        bridge_ports eth1 eth2 wlan1
        address 192.169.100.1
        netmask 255.255.255.0

Не забудьте указать правильный address моста внутри своей будущей подсети.

Перезапускаем сеть, чтобы изменения вступили в силу:

/etc/init.d/networking restart

DHCP

Для того чтобы клиенты сети могли динамически получать IP-адрес и другие параметры необходимо настроить DHCP-сервер. В процессе настройки isc-dhcp-server я поймал странный баг, связанный с тем что время от времени он запускался некорректно при прослушивании интерфейса bridge. Оставив его, я успешно настроил dnsmasq.

apt-get install dnsmasq

Сделаем бекап стандартного файла конфигурации:

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bk

И напишем свой /etc/dnsmasq.conf:

port=0
interface=br0
dhcp-range=192.169.100.64,192.169.100.200,12h
domain=myhome.loc
dhcp-authoritative
dhcp-option=option:dns-server,192.169.100.1

Samba уже обрабатывает наши DNS-запросы, поэтому необходимо отключить встроенный в dnsmasq DNS — для этого в конфиге выставлен port=0.

После этого настройка DHCP-сервера окончена и можно перезапустить его:

/etc/init.d/dnsmasq restart

HOSTAPD

Для того чтобы создать точку доступа Wi-Fi необходимо установить утилиту hostapd:

apt-get install hostapd

Отредактируем файл /etc/default/hostapd, указав где будет находится наш конфиг-файл.

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

А затем настроим точку доступа в этом файле(/etc/hostapd/hostapd.conf):

interface=wlan1
bridge=br0
driver=nl80211
country_code=RU
hw_mode=g
channel=9
ieee8021x=1

ssid=mywifi
wpa_key_mgmt=WPA-EAP
wpa_pairwise=CCMP
#разрешить только wpa(без wep)
auth_algs=1
#разрешить wpa версий 1 и 2
wpa=3

auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=mylocalhostradiuspassword

После этого настройку hostapd можно считать оконченной и необходимо перезагрузить сервер:

/etc/init.d/hostapd restart

Внимание! Баги!
По каким-то причинам hostapd при старте системы запускается до того как сконфигурируется интерфейс br0 и работает некорректно. Для того чтобы обойти этот баг можно добавить перезапуск hostapd после старта интерфейса br0. Для этого нужно снова зайти в файл /etc/network/interfaces и добавить к интерфейсу br0 последнюю строчку.

auto br0
iface br0 inet static
        bridge_ports eth1 eth2 wlan1
        address 192.169.100.1
        netmask 255.255.255.0
        post-up service hostapd restart

IPTables

Начиная с этого момента у вас появится возможность подключаться к Orange Pi как к роутеру по Wi-Fi и Ethernet. Но для того чтобы раздавать интернет подключенным устройствам, необходимо выполнить некоторые действия.
Установим iptables:

apt-get install iptables

Включим маскарадинг и разрешим форвардинг пакетов:

iptables -t nat -A POSTROUTING -s 192.169.100.0/24 -o eth0 -j MASQUERADE
echo '1' > /proc/sys/net/ipv4/ip_forward

Проверив на подключенном клиентском устройстве(н-р, телефоне) доступ в интернет можно переходить к следующей части.

Оставьте комментарий

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