Для построения Wi-Fi сети обычно используют готовые маршрутизаторы, функциональность которых всегда ограничен прошивкой. А если необходимо добавить блокировщик рекламы, VPN шлюз и красивый Captive portal, покупать новую железку? Стоимость устройства с такими возможностями будет уже весьма высока. Можно взять Linux с Hostapd и сделать точку доступа с Wi-Fi, но в отличие от готовых маршрутизаторов не будет наглядного Web-интерфейса. И для решения этой задачи был создан проект RaspAP, который на базе устройств с ОС Debian создает Wi-Fi Hotspot с Captive portal, VPN-шлюзом, Ad block. Для RaspAP в отличие от OpenWrt не требуется непосредственная поддержка устройства, достаточно поддержки последней версии Debian. RaspAP работает поверх уже установленных ОС: Raspberry Pi OS, Armbian, Debian, Ubuntu. Как сделать Wi-Fi Hotspot на RaspAP прошу под кат.
Оглавление
- Поддерживаемые устройства и ОС
- RaspAP
- Постановка задачи
- Конфигурационные файлы RaspAP
- Пошаговая установка RaspAP
- Установка SoftEther VPN Server на VPS сервер
- Настройка OpenVPN на RaspAP
- Настройка Captive portal
- Устранение проблем
- Что дальше?
- Итог
- Литература
RaspAP — open-source проект создания беспроводного маршрутизатора из многих популярных устройств работающих на ОС Debian, включая Raspberry Pi. Содержит удобный Web-интерфейс для настройки, блокировщик рекламы, осуществляет маршрутизацию сетевого трафика через OpenVPN или WireGuard.
Используя RaspAP можно быстро развернуть Hotspot с доступом в сеть Интернет, где угодно: в магазине или торговом центре, заправке, кафе и ресторане, библиотеке, больнице, аэропорте и вокзале, а также в совершенно непривычных, уединенных местах, например на вершине горы. Благодаря наличию Captive portal, посетители подключаясь к Сети, обязательно увидят информацию, которую владелец Wi-Fi желает довести до пользователей. Это может быть информация о соглашении использования публичного hotspot, и т.д.
Поддерживаемые устройства и ОС
Для устройств на ARM-архитектуре заявлена официальная поддержка, устройства на x86 процессорах в настоящее время находится в стадии Beta.
Поддерживаемые ОС и архитектуры RaspAP
Базовой платформой работы RaspAP является устройство Raspberry Pi. Но благодаря проекту Armbian, на устаревших и многих современных одноплатных компьютеров возможен запуск последней версии Debian, поэтому список поддерживаемых устройств не ограничивается только Raspberry Pi.
Wi-Fi Hotspot на RaspAP будет развернут на одноплатном компьютере Cubietruck, процессор AllWinner A20 (ARM32), с ОС Armbian (на базе Debian). Для задач маршрутизации сетевого трафика для нескольких клиентов процессора AllWinner A20 с двумя ядрами Cortex-A7 будет недостаточно, но вы можете взять гораздо более мощное устройства из каталога поддерживаемых проектом Armbian.
RaspAP
Под капотом RaspAP использует hostapd, dnsmasq, iptables, веб-интерфейс работает на lighttpd с php-скриптами. С точки зрения использования новых функций применяется политика спонсорства. Если оформить ежемесячное спонсорство, то ваш аккаунт на GitHub будет добавлен в группу Insiders, которые первыми получают возможность протестировать новые функции. Функции доступные на данный момент только спонсорам будут помечены — Insiders Edition.
Возможности RaspAP:
- Графический интерфейс для настройки и отображения графиков активности клиентских устройств;
- Поддержка сертификатов SSL;
- Интеграция с Captive portal;
- Управление DHCP-сервером;
- Поддержка адаптеров 802.11ac 5 ГГц;
- Автоопределение внешних беспроводных адаптеров.
Пройдемся коротко по основным функциям RaspAP.
Точка доступа
По умолчанию создается точка доступа со следующими параметрами:
- Interface: wlan0
- SSID: raspi-webgui
- Wireless Mode: 802.11n — 2.4GHz
- Channel: 1
- Security Type: WPA2
- Encryption Type: CCMP
- Passphrase: ChangeMe
К AP можно подключаться по ключевой паре SSID + пароль или по QR-коду. В случае бездействия клиента, AP может его отключить (требуется поддержка в драйверах). В Insiders Edition доступна возможность изменять мощность в dBm. Для обеспечения гарантированной работы можно задать ограниченное количество подключаемых клиентов.
Для Raspberry Pi Zero W доступен режим виртуализации беспроводного устройства. Единственное на борту Wi-Fi устройство будет работать в режиме клиента и точки доступа. Режим виртуализации сетевых интерфейсов работает и на других адаптерах USB Wi-Fi таких как RTL8188.
Блокировщик рекламы (Ad blocking)
Блокирует рекламу, трекеры и узлы из черного списка. В качестве источника черного списка выступает проект notracking, список обновляется автоматически. Блокируются следующие типы узлов: трекеры, поставщики рекламы, сбор аналитики, фишинговые и мошенические сайты, содержащие вредоносные программы, веб-майнеры.
Captive portal
Из коробки интегрирован nodogsplash. nodogsplash — легкое и простое решения создания кастомизируемых порталов. Поддерживает различные политики работы клиентов.
Поддержка дисплея для вывода состояния работы
Статистическую работу можно выводить на TFT-экран Adafruit Mini PiTFT контроллер ST7789. Скрипт вывода информации написан на Python, поэтому программный код можно легко адаптировать и для другого дисплея, например для ILI9341.
Поддержка различных сетевых устройств в качестве WAN-интерфейса (Insiders Edition)
В качестве доступа к сети Интернет, RaspAP поддерживает несколько различных типов сетевых устройств, такие как:
- Ethernet interface (eth);
- Wireless adapter (wlan);
- Mobile data modem (ppp);
- Mobile data adapter with built-in router;
- USB connected smartphone (USB tethering);
Это особенно удобно когда вы путешествуете или работает в полевых условиях.
OpenVPN
Сетевой трафик можно туннелировать используя клиент OpenVPN. В Insiders Edition доступна возможность хранения нескольких профилей OpenVPN с функцией быстрого переключения между ними.
WireGuard (Insiders Edition)
WireGuard — быстрый и современный VPN, в котором используется самая современная криптография, самое простое VPN решение для дистрибутивов Linux. Благодаря низкому overhead, производительность WireGuard выше, чем OpenVPN.
Доступ к Web-интересу настроек через SSL
Для защиты сетевого трафика от перехвата, доступно шифрование по SSL в пределах локальной сети. Проект mkcert позволяет в несколько простых шагов развернуть корневой центр сертификации и генерировать сертификаты, подписанные вашим собственным частным ЦС.
Постановка задачи
Установка RaspAP будет произведена из публичного репозитория, на Cubietruck установлена последняя версия Armbian (на основе Debian): Armbian 21.02.3 Buster, Linux 5.10.21-sunxi. На борту имеется встроенный адаптер wlan0, будет выступать в качестве клиентского доступа к сети Интернет (WAN-интерфейс). Для Hotspot подключим RTL8188 USB WiFi dongle — wlan1.
- IP конфигурация для wlan0: address 192.168.43.12 netmask 255.255.255.0 gateway 192.168.43.1.
- IP конфигурация для wlan1: address 10.3.141.1 netmask 255.255.255.0 gateway 10.3.141.1.
Конфигурация DHCP-сервера:
- Диапазон выдаваемых IP-адресов — 10.3.141.50 — 10.3.141.254;
- Шлюз/DNS-сервер: 10.3.141.1.
Для маршрутизации сетевого трафика через OpenVPN установим на VPS сервер SoftEther VPN Server. SoftEther VPN Server — мультипротокольный VPN-сервер, который может поднимать L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика (чего не скажешь про OpenVPN handshake, например), может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее (по заверению разработчиков) текущих имплементаций, строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance, может быть запущен под Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2.
Для VPS сервера выберем тариф на vdsina.ru за 330 р./месяц, в который включена квота на 32 ТБ трафика, чего более чем достаточно. SoftEther VPN Server будет развернут в Docker контейнере, поэтому выбор ОС CentOS/Debian/Ubuntu не принципиально важен.
Развертывание сервера выполняется просто и очень быстро, по результату необходимо отметить автоматическую выдачу DNS имени, можно не покупать доменное имя.
Сервер был развернут в Московской локации, IP-адрес 94.103.85.152, dns-имя: v636096.hosted-by-vdsina.ru. Подключение к серверу будет по DNS имени.
Итоговая схема сети
Как будет выглядеть Web-интерфейс RaspAP и подключение к Hotspot
Подключение к AP — SSID: raspi-webgui
Подключение к AP — raspi-webguiКонфигурационные файлы RaspAP
Для установки RaspAP есть Quick installer, но он выполняется без задания параметров и wlan0 — настроен как Hotspot, что нам не подходит. Поэтому воспользуемся Manual installation, с некоторыми изменениями т.к. руководство содержит некоторые ошибки и сам RaspAP работает с некоторыми некритичными багами, из-за этого пришлось немного больше потратить время на установку. О багах будет в ходе установки.
До установки рассмотрим конфигурационные файлы, которые можно использовать как опорные для своей адаптации.
Список конфигурационных файлов (GitHub):
- hostapd.conf — служба hostapd
- default_hostapd — служба hostapd
- 090_raspap.conf — служба dnsmasq.d
- 090_wlan1.conf — служба dnsmasq.d
- defaults.json — служба raspap
- dhcpcd.conf — служба raspap
- config.php — портал конфигурации RaspAP
hostapd.conf — служба hostapd
Содержит настройки AP по умолчанию такие как: ssid, channel, password и т.д.
Настройка службы hostapd, параметр DAEMON_CONF определяет путь к настройкам.
Настройка службы dnsmasq, параметр conf-dir определяет путь к настройкам.
Настройка dnsmasq для сетевого интерфейса wlan1. Содержит диапазон выдаваемых IP-адресов, и другие сетевые настройки. Необходимо обратить внимание на название файла по маске — 090_[ИДЕНТИФИКАТОР_ИНТЕРФЕЙСА_HOTSPOT].conf. Если у вас сетевой интерфейс для hostspot будет назваться например wlan2, то следует задать название файла 090_wlan2.conf.
Настройка DHCP серверов для интерфейсов wlan0 и wlan1.
Настройка для сетевого интерфейса wlan0, который выходит в сеть Интернет.
Файл настроек графического Web-интерфейса. Содержит переменные влияющие на отображение настроек. Самый главный параметр define(‘RASPI_WIFI_AP_INTERFACE’, ‘wlan1’);. В качестве значения указать сетевой интерфейс hotspot — wlan1.
Пошаговая установка RaspAP
Руководство установки доступно в разделе Manual installation.
Шаг 1 — Подключение адаптера USB WiFi RTL8188
Подключаем адаптер в любой доступный USB порт. В Armbian драйвера уже есть, поэтому проверим подключение командой lsusb :
root@bananapim64:~# lsusb Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 004: ID 0bda:c811 Realtek Semiconductor Corp. Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub root@bananapim64:~#
В списке присутствует Realtek Semiconductor Corp., значит адаптер успешно распознался. Если вывести название интерфейса для подключенного адаптера, то его имя будет — wlxe81e0584796d, что несколько далеко от привычного именования вида wlanX. Для задания названия для адаптера — wlan1, необходимо выполнить следующие действия (более подробнее почитать про именование сетевых интерфейсов по ссылке1,ссылке2):
$ sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules $ sudo reboot
После перезагрузки в системе будет два беспроводных адаптера: wlan0 и wlan1.
Шаг 2 — Настройка сетевых интерфейсов
Настроим сетевые интерфейсы в конфигурационном файле: /etc/network/interfaces .
# Network is managed by Network manager auto lo iface lo inet loopback # WAN auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp # Wi-Fi AP auto wlan1 iface wlan1 inet static address 10.3.141.1 netmask 255.255.255.0 gateway 10.3.141.1
Шаг 3 — Установка RaspAP
Теперь приступаем к установке RaspAP.
Обновление системы:
sudo apt-get update sudo apt-get full-upgrade
Установка зависимостей для не RPi OS:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get install dhcpcd5
Установка пакетов:
sudo apt-get install -y lighttpd git hostapd dnsmasq iptables-persistent vnstat qrencode php7.3-cgi
PHP:
sudo lighttpd-enable-mod fastcgi-php sudo service lighttpd force-reload sudo systemctl restart lighttpd.service
Создание Web-портала:
sudo rm -rf /var/www/html sudo git clone https://github.com/RaspAP/raspap-webgui /var/www/html WEBROOT="/var/www/html" CONFSRC="$WEBROOT/config/50-raspap-router.conf" LTROOT=$(grep "server.document-root" /etc/lighttpd/lighttpd.conf | awk -F '=' '{print $2}' | tr -d " \"") HTROOT=${WEBROOT/$LTROOT} HTROOT=$(echo "$HTROOT" | sed -e 's/\/$//') awk "{gsub(\"/REPLACE_ME\",\"$HTROOT\")}1" $CONFSRC > /tmp/50-raspap-router.conf sudo cp /tmp/50-raspap-router.conf /etc/lighttpd/conf-available/ sudo ln -s /etc/lighttpd/conf-available/50-raspap-router.conf /etc/lighttpd/conf-enabled/50-raspap-router.conf sudo systemctl restart lighttpd.service cd /var/www/html sudo cp installers/raspap.sudoers /etc/sudoers.d/090_raspap
Создание конфигурации:
sudo mkdir /etc/raspap/ sudo mkdir /etc/raspap/backups sudo mkdir /etc/raspap/networking sudo mkdir /etc/raspap/hostapd sudo mkdir /etc/raspap/lighttpd sudo cp raspap.php /etc/raspap
Установка разрешения:
sudo chown -R www-data:www-data /var/www/html sudo chown -R www-data:www-data /etc/raspap
Настройка контролирующих скриптов:
sudo mv installers/*log.sh /etc/raspap/hostapd sudo mv installers/service*.sh /etc/raspap/hostapd sudo chown -c root:www-data /etc/raspap/hostapd/*.sh sudo chmod 750 /etc/raspap/hostapd/*.sh sudo cp installers/configport.sh /etc/raspap/lighttpd sudo chown -c root:www-data /etc/raspap/lighttpd/*.sh sudo mv installers/raspapd.service /lib/systemd/system sudo systemctl daemon-reload sudo systemctl enable raspapd.service
Установка стартовых настроек, настройки в каталоге ~/temp , при необходимости заменить на свои:
sudo apt-get install -y curl unzip mkdir -p ~/temp curl -SL --output ~/temp/config_ct.zip https://github.com/devdotnetorg/Site/raw/master/Uploads/files/config_ct.zip unzip ~/temp/config_ct.zip -d ~/temp rm ~/temp/config_ct.zip если есть: sudo mv /etc/default/hostapd ~/default_hostapd.old если есть: sudo cp /etc/hostapd/hostapd.conf ~/hostapd.conf.old sudo cp ~/temp/default_hostapd /etc/default/hostapd sudo cp ~/temp/hostapd.conf /etc/hostapd/hostapd.conf sudo cp config/090_raspap.conf /etc/dnsmasq.d/090_raspap.conf sudo cp ~/temp/090_wlan1.conf /etc/dnsmasq.d/090_wlan1.conf sudo cp ~/temp/dhcpcd.conf /etc/dhcpcd.conf sudo cp ~/temp/config.php /var/www/html/includes/ sudo cp ~/temp/defaults.json /etc/raspap/networking/ sudo systemctl stop systemd-networkd sudo systemctl disable systemd-networkd sudo cp config/raspap-bridge-br0.netdev /etc/systemd/network/raspap-bridge-br0.netdev sudo cp config/raspap-br0-member-eth0.network /etc/systemd/network/raspap-br0-member-eth0.network
Оптимизация PHP:
sudo sed -i -E 's/^session\.cookie_httponly\s*=\s*(0|([O|o]ff)|([F|f]alse)|([N|n]o))\s*$/session.cookie_httponly = 1/' /etc/php/7.3/cgi/php.ini sudo sed -i -E 's/^;?opcache\.enable\s*=\s*(0|([O|o]ff)|([F|f]alse)|([N|n]o))\s*$/opcache.enable = 1/' /etc/php/7.3/cgi/php.ini sudo phpenmod opcache
Настройка маршрутизации:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/90_raspap.conf > /dev/null sudo sysctl -p /etc/sysctl.d/90_raspap.conf sudo /etc/init.d/procps restart sudo iptables -t nat -A POSTROUTING -j MASQUERADE sudo iptables -t nat -A POSTROUTING -s 192.168.43.0/24 ! -d 192.168.43.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4
Включение hostapd:
sudo systemctl unmask hostapd.service sudo systemctl enable hostapd.service
OpenVPN:
sudo apt-get install openvpn sudo sed -i "s/\('RASPI_OPENVPN_ENABLED', \)false/\1true/g" /var/www/html/includes/config.php sudo systemctl enable openvpn-client@client sudo mkdir /etc/raspap/openvpn/ sudo cp installers/configauth.sh /etc/raspap/openvpn/ sudo chown -c root:www-data /etc/raspap/openvpn/*.sh sudo chmod 750 /etc/raspap/openvpn/*.sh
Ad blocking:
sudo mkdir /etc/raspap/adblock wget https://raw.githubusercontent.com/notracking/hosts-blocklists/master/hostnames.txt -O /tmp/hostnames.txt wget https://raw.githubusercontent.com/notracking/hosts-blocklists/master/domains.txt -O /tmp/domains.txt sudo cp /tmp/hostnames.txt /etc/raspap/adblock sudo cp /tmp/domains.txt /etc/raspap/adblock sudo cp installers/update_blocklist.sh /etc/raspap/adblock/ sudo chown -c root:www-data /etc/raspap/adblock/*.* sudo chmod 750 /etc/raspap/adblock/*.sh sudo touch /etc/dnsmasq.d/090_adblock.conf echo "conf-file=/etc/raspap/adblock/domains.txt" | sudo tee -a /etc/dnsmasq.d/090_adblock.conf > /dev/null echo "addn-hosts=/etc/raspap/adblock/hostnames.txt" | sudo tee -a /etc/dnsmasq.d/090_adblock.conf > /dev/null sudo sed -i '/dhcp-option=6/d' /etc/dnsmasq.d/090_raspap.conf sudo sed -i "s/\('RASPI_ADBLOCK_ENABLED', \)false/\1true/g" includes/config.php
При конфигурирование через Web-интерфейс столкнулся с багом, который при изменение настроек DHCP сервера на интерфейсе wlan1 удаляет файл конфигурации 090_wlan1.conf и не создает его заново. В результате DHCP сервер не выдает IP-конфигурацию новым клиентам. Временное решение этой проблемы заключается в блокировке файла на удаление, необходимо выполнить следующую команду (по блокировке файлов почитать по ссылке):
sudo chattr +i /etc/dnsmasq.d/090_wlan1.conf
После установки необходимо перезагрузить систему:
sudo reboot now
После перезагрузке появится Wi-Fi точка доступа с SSID raspi-webgui и паролем ChangeMe. Портал будет доступен по адресу: http://10.3.141.1.
Установка SoftEther VPN Server на VPS сервер
На сервер v636096.hosted-by-vdsina.ru установим Docker по официальному руководству — Install Docker Engine on Ubuntu.
Создание сети для Docker контейнеров
Для подсети в которой будет контейнер с SoftEther VPN Server определим следующие параметры:
- Название сети: vpnnetwork;
- Subnet: 172.22.0.0/24;
- Driver: bridge;
- Range: 172.22.0.0/25;
- gateway: 172.22.0.127;
- HostMin: 172.22.0.1;
- HostMax: 172.22.0.126;
- Hosts/Net: 126.
Для создание внутренней сети Docker выполним команду:
$ docker network create --driver bridge --subnet 172.22.0.0/24 --ip-range=172.22.0.0/25 --gateway 172.22.0.127 vpnnetwork
Для проверки доступности сети выполнить команду: ping 172.22.0.127 .
Создание контейнера с SoftEther VPN Server
Для создание контейнера будем использовать образ siomiz/softethervpn. До запуска основного контейнера необходимо создать конфигурацию, в которой указать пароль для управления сервером — параметр SPW и пароль для управления хабом — параметр HPW. Файл конфигурации будет располагаться по пути /usr/vpnserver/vpn_server.config . Выполнить следующие команды:
$ mkdir -p /usr/vpnserver $ docker run --name vpnconf -e "SPW={PASSWORD}" -e "HPW={PASSWORD}" siomiz/softethervpn echo $ docker cp vpnconf:/usr/vpnserver/vpn_server.config /usr/vpnserver/vpn_server.config $ docker rm vpnconf
Для уменьшения размера контейнера возьмем образ на основе Alpine, все журналы log в null. Выполнить следующие команды для создание контейнера:
$ docker run --name vps-server-softethervpn -d --cap-add NET_ADMIN --restart always --net vpnnetwork --ip 172.22.0.2 -p 443:443/tcp -p 992:992/tcp \ -p 1194:1194/udp -p 5555:5555/tcp -v /usr/vpnserver/vpn_server.config:/usr/vpnserver/vpn_server.config \ -v /dev/null:/usr/vpnserver/server_log -v /dev/null:/usr/vpnserver/packet_log -v /dev/null:/usr/vpnserver/security_log siomiz/softethervpn:alpine
Если контейнер запустился, то переходим к следующему шагу.
Настройка SoftEther VPN Server
Для настройки SoftEther VPN Server лучше использовать графическую утилиту для ОС Windows. Для загрузки необходимо перейти на страницу SoftEther Download Center. В списке Select Component, выбрать SoftEther VPN Server Manager for Windows, далее Select Platform windows. Можно выбрать пакет .zip без необходимости установки. Пакет softether-vpn_admin_tools-v4.34-9745-rtm-2020.04.05-win32.zip распаковать и запустить vpnsmgr.exe.
Создаем новый профиль кнопка New Setting, указываем следующие настройка:
- Setting Name: VDSina_ru_main_server
- Host Name: v636096.hosted-by-vdsina.ru
- Port Number: 443
- Password: пароль который был указан в переменной SPW при создание конфигурационного файла vpn_server.config
Затем подключаемся к серверу кнопка — Connect.
При первом подключение появится вопрос об включение поддержки протокола IPSec. Если в дальнейшем планируете подключать мобильные устройства без использования программных клиентов, то выбрать Да. В данном случае поддержка IPSec не требуется, отвеваем Нет.
Для настройки алгоритма шифрования нажать на кнопку Encryption and Network. По умолчанию включен алгоритм — DHE-RSA-AES256-SHA. Из списка выбрать другие более стойкие комбинации шифрования, но нужно помнить чем «сильнее» алгоритм, тем больше нагрузка на CPU сервера и на конечное маршрутизирующее устройство.
По умолчанию будет доступен хаб — DEFAULT, удаляем его.
Создаем новый хаб — кнопка Create a Virtual Hub. Укажем Virtual Hub Name: VPNROOT. Открываем настройки хаба кнопка — Manage Virtual Hub.
Создадим пользователя подключения, кнопка Manage Users, затем кнопка New. Аутентификация будет по паре логин/пароль, укажем имя: officeuser1.
Для отделение подсети клиентов VPN сервера и подсети Docker контейнеров включим NAT, кнопка Virtual NAT and Virtual DHCP Server (SecureNAT), далее кнопка Enable SecureNAT. Изменим подсеть VPN клиентов на: 192.168.30.x, закроем окно, кнопка Exit.
На этом настройка сервера закончена.
Последовательность действий по настройке SoftEther VPN ServerПолучение файлов конфигурации *.ovpn
Для подключения OpenVPN клиента необходимо получить файлы конфигурации *.ovpn, для этого переходим на главный экран настроек SoftEther VPN Server и нажимаем на кнопку OpenVPN / MS-SSTP Settings. Далее, в следующем окне генерируем файлы конфигурации, кнопка Generate a Sample Configuration File for OpenVPN Clients. Сохраняем архив OpenVPN_Sample_Config_v636096.hosted-by-vdsina.ru_20210519_150311.zip, для дальнейшего подключения потребуется файл f1167ecd086e_openvpn_remote_access_l3.ovpn.
Последовательность действий по получению файлов конфигурации *.ovpnНастройка OpenVPN на RaspAP
Создание маршрутов
Теперь переходим в консоль Cubietruck и добавляем маршруты:
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE sudo iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT
Делаем копию существующих маршрутов и сохраняем новые
cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak sudo iptables-save | sudo tee /etc/iptables/rules.v4
Настройка профиля OpenVPN
Переходим на портал по адресу http://192.168.43.12/openvpn_conf и указываем данные для подключения:
- Username: officeuser1
- Password: указанный для officeuser1 в SoftEther VPN Server
- Для конфигурационного файла выбираем файл f1167ecd086e_openvpn_remote_access_l3.ovpn.
Сохраняем настройки и перезапускаем OpenVPN. Если подключение удалось, но в поле IPV4 ADDRESS будет публичный IP-адрес VPN сервера: 94.103.85.152 (v636096.hosted-by-vdsina.ru).
Страница настроек OpenVPN в RaspAP
Настройка Captive portal
Установка Captive portal в руководстве Captive portal setup.
Для установки выполним следующие действия:
sudo apt-get update sudo apt-get install -y libmicrohttpd-dev cd ~/ git clone https://github.com/nodogsplash/nodogsplash.git cd nodogsplash make sudo make install
Далее необходимо внести изменения в конфигурационный файл /etc/nodogsplash/nodogsplash.conf . Указать следующие параметры:
... GatewayInterface wlan1 ... GatewayAddress 10.3.141.1 ...
Регистрация службы и запуск:
sudo cp ~/nodogsplash/debian/nodogsplash.service /lib/systemd/system/ sudo systemctl enable nodogsplash.service sudo systemctl start nodogsplash.service sudo systemctl status nodogsplash.service
Страницы html для изменение дизайна страниц располагаются по пути: /etc/nodogsplash/htdocs/ . Теперь выполним подключение к AP — SSID: raspi-webgui.
Устранение проблем
Если запустить RaspAP не удалось, то первым делом необходимо проверить IP-конфигурацию сетевых интерфейсов, командами: ifconfig или ip a . Интерфейсам wlan0 и wlan1 должны быть назначены IP-адреса.
Службы могут не запуститься по причине занятости портов. Для того, что-бы узнать какой процесс занимает порт, необходимо выполнить команду:
netstat -ntlp | grep LISTEN lsof -i | grep LISTEN lsof -nP -i | grep LISTEN
Если установка RaspAP выполняется на Ubuntu, то вы можете столкнуться с конфликтом использования 53 порта, который занят службой systemd-resolved. Для отключения данной службы, воспользоваться материалом How to disable systemd-resolved in Ubuntu.
За работу RaspAP отвечают несколько служб. Необходимо проверить статусы служб. В случае ошибки запуска службы, необходимо узнать сообщение ошибки. Для проверки статусов используемых служб, выполнить следующие команды:
sudo systemctl status hostapd.service sudo systemctl status dnsmasq.service sudo systemctl status lighttpd.service sudo systemctl status openvpn-client@client sudo systemctl status nodogsplash.service sudo systemctl status raspapd.service
Что дальше?
Для проверки совместимости необходимо RaspAP развернуть на Banana Pi BPI-M64 (Armbian 21.02.1 на основе Ubuntu 18.04.5 LTS). Далее, развернуть на x86 с другим более новым адаптером, например USB Realtek 8811CU Wireless LAN 802.11ac. На GitHub размещен репозиторий raspap-docker, который оборачивает RaspAP в контейнер, но по факту запускает скрипт автоматической установки, что несколько неудобно и неправильно. Поэтому для более широкого распространения RaspAP необходимо его правильно обернуть в Docker контейнер для ARM и x86 архитектуры.
Итог
Проект RaspAP безусловно заслуживает внимания, основные функции работают отлично. Это единственный проект связанный с Wi-Fi сетями, работающий поверх существующей ОС, у которого работает Web-интерфейс (пока есть небольшие баги). Для личного использования, теста, стоит попробовать. Но для продакшен в бизнесе пока лучше не использовать, необходимо более детально просмотреть исходный код и конфигурацию на предмет безопасности. В любом случае, проект добавил себе в закладки, надеюсь баги исправят в скором времени.
Проект RaspAP на GitHub
Обсуждение на Habr.ru
Литература
-
- Проект RaspAP на GitHub
- RaspAP Documentation
- raspap-webgui — Simple wireless AP setup & management for Debian-based devices — GitHub
- RaspAP on Orange Pi PC+Armbian (Debian Buster) — FicusOnline Blog
- RTL8188. tk-fuse. How to revert USB wifi interface name (from wlxXXXXXXXXXXXX to wlanX)?
- How to revert USB wifi interface name (from wlxXXXXXXXXXXXX to wlanX)?
- Predictable Network Interface Names — freedesktop.org
- Hostapd. Настройка компьютера в качестве точки доступа — ALT LINUX TEAM
- OrangePi+RTL8188 Router Vol.2
- Как запретить удаление файла в Linux, даже для Root
- SoftEther VPN Server
- Docker Image siomiz/softethervpn — Docker Hub
- How to disable systemd-resolved in Ubuntu
- hosts-blocklists. Automatically updated, moderated and optimized lists for blocking ads, trackers, malware and other garbage — GitHub
- nodogsplash. Nodogsplash offers a simple way to provide restricted access to an Internet connection using a captive portal. Pull requests are welcome! — GitHub
- mkcert. A simple zero-config tool to make locally trusted development certificates with any names you’d like — GitHub