Настройка Raspberry Pi в качестве беспроводной точки доступа
Оглавление
Введение
В рамках маленького проекта внутри клуба мне предстояло настроить Raspberry Pi zero W так, чтобы на нём располагался небольшой веб-сервер, доступ к которому был бы через точку доступа Wi-Fi. С веб-серверами я уже знаком очень близко, а вот настройка Raspberry Pi как точки доступа — это дело другое, так как я не имел большого опыта работы с ней. Соответственно, я пошёл изучать различные гайды по настройке точки доступа и столкнулся с тем, что в каждом таком гайде некоторые шаги противоречили друг другу, поэтому я и решил написать данную статью, где опишу свой процесс успешной настройки, который был скомпонован из разных гайдов.
Надеюсь, он кому-нибудь поможет. Приятного чтения!
Установка Raspberry OS
Сразу хотел бы сконцентрировать внимание на том, что систему нужно устанавливать через BalenaEtcher, а не через Raspberry Pi Imager, иначе у вас возникнут проблемы на этапе настройки сетевого адаптера, который просто-напросто заблокирует rfkill.
Wi-Fi is currently blocked by rfkill. Use raspi-config to set the country before use.
Насколько я знаю, данная проблема решаема, но если есть способ её изначально избежать, то почему бы и нет.
1 Шаг. Установка утилит
Для начала устанавливаем все основные утилиты:
- Hostapd — Daemon, который позволяет плате выступать в качестве точки доступа и сервера аутентификации.
- Dnsmasq — Лёгкий и быстрый DNS, DHCP и TFTP-сервер, который используется для обеспечения доменными именами и связанными с ними сервисами небольших сетей.
- Dhcpcd — Клиент DHCP (по идее должен быть установлен по умолчанию, но у меня его не было).
sudo apt install hostapd dnsmasq dhcpcd
2 Шаг. Настройка DHCP
Для работы точки доступа нужно полностью выделить беспроводной интерфейс и сделать так, чтобы никакая другая служба не вмешивалась в его работу, в том числе и сам DHCP.
Поэтому в файле /etc/dhcpcd.conf
в конец добавляем следующую строку:
denyinterfaces wlan0
3 Шаг. Настройка интерфейса
Теперь перейдём к настройке самого беспроводного интерфейса. Он должен иметь статический IP, иначе другие устройства при попытке подключения не смогут её найти.
Для этого в файл /etc/network/interfaces
добавляем настройку wlan0
или же изменяем, если она уже существует, на следующую:
allow-hotplug wlan0 iface wlan0 inet static wireless-mode Master address 192.168.52.1 netmask 255.255.255.0 network 192.168.52.0 broadcast 192.168.52.255 # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
4 Шаг. Настройка DNS сервера
Для нормального функционирования DNS-сервера можно воспользоваться следующей конфигурацией, которую необходимо поместить в /etc/dnsmasq.conf
:
interface=wlan0 listen-address=192.168.52.1 bind-interfaces server=8.8.8.8 domain-needed bogus-priv dhcp-range=192.168.52.5,192.168.52.250,12h
Также при уже тестировании настройки точки доступа я столкнулся с проблемой, что Dnsmasq запускается раньше, чем применяются настройки интерфейса, и из-за этого первый запуск происходит с ошибкой.
Это можно решить, добавив параметр Restart
в [Service]
сервисный файл (/lib/systemd/system/dnsmasq.service
):
Restart=always RestartSec=5s
5 Шаг. Настройка hostapd
В настройках hostapd (/etc/hostapd/hostapd.conf
) необходимо прописать параметры точки доступа, её параметры безопасности и имя:
interface=wlan0 ssid=[Имя сети] hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=[Пароль сети] rsn_pairwise=CCMP
Также, чтобы данные настройки работали, нужно добавить путь к ним в переменную DAEMON_CONF
в /etc/default/hostapd
:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
6 Шаг. Активация служб
Последним шагом остаётся только включить все необходимые службы:
sudo systemctl enable hostapd sudo systemctl start hostapd sudo systemctl enable dnsmasq sudo systemctl start dnsmasq
Заключение
На этом настройка точки завершена, и можно её протестировать, подключившись по SSH или, как в моём случае, попробовав зайти на поднятый Web-сервер:
Всё отлично работает! Надеюсь, моя статья принесёт вам пользу.