October 3, 2024

Точка доступа 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 файле соблюдены (пробелы, не табуляция).

Примените настройки Netplan:


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:

sudo systemctl status hostapd


Проверьте статус dnsmasq:


sudo systemctl status dnsmasq


Убедитесь, что обе службы работают без ошибок.

Шаг 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


Проверьте правила iptables:

sudo iptables -L -v
sudo iptables -t nat -L -v

На этом все. Сделано как заметка для будущей настройки. Вся проблема заключалась со стартом dnsmasq - т.к. конфликт был из-за 53 порта. С портом 5353 стартует нормально и работает нормально.

Статья оформлено криво т.к. очень не удобный интерфейс. Мне стало лень полностью аккуратно все оформлять