Точка доступа WI-FI ubuntu-server
Хорошо, давайте начнём настройку с нуля, используя предоставленные вами данные:
Интерфейс Wi-Fi: wlx90f6520d5231
Имя точки доступа (SSID): WIFINAME22
Версия Ubuntu Server: 24.04.1
Конфигурация dnsmasq находится в: /etc/dnsmasq.d/
Шаг 1: Обновление системы и установка необходимых пакетов
Обновите список пакетов и установите обновления:
sudo apt update && sudo apt upgrade -y
Установите необходимые пакеты:
sudo apt install hostapd dnsmasq iptables iptables-persistent -y
Шаг 2: Остановка служб перед настройкой
Перед настройкой остановите службы hostapd и dnsmasq:
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
Шаг 3: Настройка статического IP для Wi-Fi интерфейса
Определите имя вашего Ethernet-интерфейса (интернет-подключение):
ip link show
Предположим, что Ethernet-интерфейс называется enp3s0 (замените на ваш, если отличается).
Редактируйте конфигурацию Netplan:
sudo nano /etc/netplan/01-netcfg.yaml
Добавьте следующую конфигурацию:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
wifis:
wlx90f6520d5231:
dhcp4: no
addresses:
- 192.168.4.1/24
Важно: Убедитесь, что отступы в YAML файле соблюдены (пробелы, не табуляция).
sudo netplan apply
Шаг 4: Настройка hostapd
Создайте или отредактируйте файл конфигурации hostapd:
sudo nano /etc/hostapd/hostapd.conf
interface=wlx90f6520d5231
driver=nl80211
ssid=EdgeRouter-PR822
hw_mode=g
channel=7
wmm_enabled=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=YourWiFiPassword # Замените на ваш пароль
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
Замените YourWiFiPassword на желаемый пароль Wi-Fi.
Укажите путь к файлу конфигурации в настройках hostapd:
sudo nano /etc/default/hostapd
Найдите строку:
#DAEMON_CONF=""
Измените её на:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Шаг 5: Настройка dnsmasq
Переименуйте оригинальный файл конфигурации (если существует):
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
Создайте новый файл конфигурации в директории /etc/dnsmasq.d/:
sudo nano /etc/dnsmasq.d/wifi.conf
Добавьте следующие строки в файл wifi.conf:
port=5353
interface=wlx90f6520d5231
dhcp-range=192.168.4.20,192.168.4.150,255.255.255.0,6h
dhcp-option=6,192.168.4.1,8.8.8.8
server=8.8.8.8 # Google DNS
server=8.8.4.4 # Google DNS
Ставим порт 5353 потому что будет конфликтовать и не будет стартовать с системным dns
Шаг 6: Включение IP-форвардинга
Временно включите форвардинг IPv4:
sudo sysctl -w net.ipv4.ip_forward=1
Сделайте изменение постоянным:
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Шаг 7: Настройка iptables для NAT
Настройте правила iptables:
sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i enp3s0 -o wlx90f6520d5231 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlx90f6520d5231 -o enp3s0 -j ACCEPT
Замените enp3s0 на имя вашего Ethernet-интерфейса, если оно отличается.
Сохраните правила iptables для их сохранения после перезагрузки:
sudo netfilter-persistent save
Шаг 8: Запуск и активация служб
Размаскируйте и включите hostapd:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
Запустите hostapd:
sudo systemctl start hostapd
Включите и перезапустите dnsmasq:
sudo systemctl enable dnsmasq
sudo systemctl restart dnsmasq
Шаг 9: Проверка состояния служб
Проверьте статус hostapd:
Убедитесь, что обе службы работают без ошибок.
Шаг 10: Тестирование настройки
Подключитесь к вашей Wi-Fi сети с клиентского устройства.
Убедитесь, что устройство получает IP-адрес в диапазоне 192.168.4.2 - 192.168.4.20.
Проверьте возможность доступа в интернет:
Попробуйте открыть веб-сайт в браузере.
Если интернет недоступен, продолжайте к следующему шагу.
Шаг 11: Решение проблем с DNS
Если клиенты получают IP-адреса, но не могут разрешать доменные имена:
Убедитесь, что dnsmasq слушает на правильных интерфейсах:
sudo netstat -tulpn | grep dnsmasq
Вы должны увидеть, что dnsmasq слушает на порту 53 для интерфейса wlx90f6520d5231.
Проверьте файл /etc/resolv.conf на сервере:
cat /etc/resolv.conf
Убедитесь, что указаны корректные DNS-серверы:
nameserver 8.8.8.8
nameserver 8.8.4.4
Если файл является символической ссылкой на systemd-resolved, и вы отключили systemd-resolved, замените его:
sudo rm /etc/resolv.conf
echo -e "nameserver 8.8.8.8\nnameserver 8.8.4.4" | sudo tee /etc/resolv.conf
Проверьте работу DNS на сервере:
ping -c 4 google.com
Если dnsmasq не запускается из-за порта 53:
Проверьте, что порт 53 не занят другим сервисом:
sudo lsof -i :53
Если systemd-resolved использует порт 53, отключите его:
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
Перезапустите dnsmasq:
sudo systemctl restart dnsmasq
Шаг 12: Проверка работы интернета на клиенте
Проверьте, что клиентское устройство имеет правильные настройки DNS:
Должен быть установлен DNS-сервер 192.168.4.1.
Попробуйте выполнить DNS-запрос напрямую к вашему серверу:
nslookup google.com 192.168.4.1
Если получаете ответ с IP-адресами, DNS работает корректно.
Проверьте доступ к интернету по IP-адресу:
ping -c 4 8.8.8.8
Если пинг проходит, но DNS не работает, проблема в настройках DNS.
Дополнительные рекомендации
Проверьте логи hostapd и dnsmasq для выявления ошибок:
sudo journalctl -u hostapd
sudo journalctl -u dnsmasq
Убедитесь, что фаервол не блокирует необходимые порты:
Если используете ufw, разрешите трафик:
sudo ufw allow in on wlx90f6520d5231
sudo ufw allow out on enp3s0
sudo iptables -L -v
sudo iptables -t nat -L -v
На этом все. Сделано как заметка для будущей настройки. Вся проблема заключалась со стартом dnsmasq - т.к. конфликт был из-за 53 порта. С портом 5353 стартует нормально и работает нормально.
Статья оформлено криво т.к. очень не удобный интерфейс. Мне стало лень полностью аккуратно все оформлять