Когда NetworkManager не установлен. Это абсолютно нормально для серверных или минималистичных сборок Linux (например, Debian Minimal, Ubuntu Server), где сеть управляется иначе.
Классическая ручная настройка. Он очень надежный и работает на любом дистрибутиве.
Выполняйте команды по шагам. Я использую конструкцию cat >, чтобы вы могли просто скопировать и вставить весь блок кода сразу, не открывая текстовые редакторы.
Шаг 1: Установка необходимых пакетов
Убедитесь, что у вас есть интернет на enp3s0, и выполните:
apt update
apt install -y hostapd dnsmasq iptables
(Если у вас не Debian/Ubuntu, а например Fedora, используйте dnf install -y hostapd dnsmasq iptables)
Шаг 2: Поднятие интерфейса и назначение ему IP-адреса
Точка доступа должна иметь свой IP-адрес, чтобы выдавать адреса клиентам.
ip link set wlo1 up
ip addr add 192.168.100.1/24 dev wlo1
Проверить можно командой ip addr show wlo1 (должен появиться inet 192.168.100.1).
Шаг 3: Настройка Wi-Fi точки доступа (hostapd)
Создадим конфигурационный файл. Скопируйте и вставьте этот блок целиком:
cat > /etc/hostapd/hostapd.conf << 'EOF'
interface=wlo1
driver=nl80211
ssid=MyLinuxHotspot
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=MySuperPassword123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF
(Вы можете изменить ssid и wpa_passphrase на свои, пароль должен быть ≥ 8 символов).
Теперь скажем системе использовать этот файл. Добавьте строку в конец файла /etc/default/hostapd:
echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"' >> /etc/default/hostapd
Шаг 4: Настройка DHCP-сервера (dnsmasq)
Добавим настройки для раздачи IP-адресов клиентам в конец файла /etc/dnsmasq.conf:
cat >> /etc/dnsmasq.conf << 'EOF'
interface=wlo1
dhcp-range=192.168.100.10,192.168.100.100,255.255.255.0,24h
EOF
Шаг 5: Включение маршрутизации и NAT (чтобы был интернет)
Разрешаем ядру пересылать пакеты между интерфейсами:
sysctl -w net.ipv4.ip_forward=1
(Чтобы это работало после перезагрузки, позже можно будет добавить).
cat > /etc/sysctl.d/99-ip-forward.conf << 'EOF'
net.ipv4.ip_forward=1
EOF
Настраиваем правила брандмауэра (NAT), чтобы трафик с Wi-Fi шел в интернет через enp3s0:
iptables -A FORWARD -i wlo1 -o enp3s0 -j ACCEPT
iptables -A FORWARD -i enp3s0 -o wlo1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
Шаг 6: Запуск служб
В некоторых версиях Debian/Ubuntu служба hostapd по умолчанию замаскирована. Снимем маску и запустим обе службы:
systemctl unmask hostapd
systemctl enable hostapd dnsmasq
systemctl start hostapd dnsmasq
systemctl restart dnsmasq
Проверка результата:
- Посмотрите статус служб, нет ли ошибок:
systemctl status hostapd(Нажмитеq, чтобы выйти из просмотра статуса). - Возьмите телефон или другой ноутбук, найдите сеть MyLinuxHotspot и подключитесь с паролем MySuperPassword123.
- Попробуйте открыть любой сайт.
Если что-то не получилось (например, служба hostapd не запускается или интернет на телефоне не работает), напишите мне вывод команды:
systemctl status hostapd
и
ip addr show wlo1
По умолчанию правила iptables теряются при каждой перезагрузке. Но есть простой способ сохранить их навсегда.
Способ 1: iptables-persistent (рекомендуется)
Шаг 1: Установите пакет
apt install -y iptables-persistent
Шаг 2: Сохраните текущие правила
Если вы уже применили правила iptables из предыдущих шагов, сохраните их:
netfilter-persistent save
Если правила еще не применены, сначала выполните их, затем сохраните:
# Применяем правила
iptables -A FORWARD -i wlo1 -o enp3s0 -j ACCEPT
iptables -A FORWARD -i enp3s0 -o wlo1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
# Сохраняем
netfilter-persistent save
Шаг 3: Проверьте, что файлы созданы
ls -la /etc/iptables/
Должны быть файлы:
rules.v4(правила IPv4)rules.v6(правила IPv6)
Шаг 4: Убедитесь, что служба активна
systemctl status netfilter-persistent
Если не активна:
systemctl enable netfilter-persistent
Теперь правила будут автоматически применяться при каждой загрузке!
Способ 2: Ручное сохранение (альтернатива)
Если по какой-то причине iptables-persistent не подходит, можно сохранить правила в файлы вручную:
# Сохраняем IPv4 правила
iptables-save > /etc/iptables/rules.v4
# Сохраняем IPv6 правила (если нужно)
ip6tables-save > /etc/iptables/rules.v6
Затем создайте скрипт для их загрузки при старте:
cat > /etc/network/if-pre-up.d/iptables-restore << 'EOF'
#!/bin/sh
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6
EOF
chmod +x /etc/network/if-pre-up.d/iptables-restore
Как обновлять правила в будущем?
Если вы измените правила iptables (добавите новые), не забудьте сохранить их снова:
# После изменения правил
netfilter-persistent save
Или вручную:
iptables-save > /etc/iptables/rules.v4
Рекомендую использовать Способ 1 (iptables-persistent) — это самый простой и надежный метод для Debian/Ubuntu. После установки и сохранения правил, они будут работать автоматически после каждой перезагрузки.
Добавление правил iptables для дополнительного интерфейса
Чтобы клиенты из сети enp1s0 (10.5.0.0/24) тоже могли выходить в интернет через enp3s0, нужно добавить аналогичные правила для этого интерфейса. Вот команды:
# Разрешаем трафик из enp1s0 в enp3s0 (клиенты идут в интернет)
iptables -A FORWARD -i enp1s0 -o enp3s0 -j ACCEPT
# Разрешаем ответный трафик из enp3s0 обратно в enp1s0
iptables -A FORWARD -i enp3s0 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Правило MASQUERADE менять не нужно! Оно уже работает для всех входящих интерфейсов, так как привязано к исходящему интерфейсу enp3s0.
Полная конфигурация правил:
# Для Wi-Fi клиентов (wlo1 → enp3s0)
iptables -A FORWARD -i wlo1 -o enp3s0 -j ACCEPT
iptables -A FORWARD -i enp3s0 -o wlo1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Для клиентов локальной сети (enp1s0 → enp3s0)
iptables -A FORWARD -i enp1s0 -o enp3s0 -j ACCEPT
iptables -A FORWARD -i enp3s0 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# NAT для всех (работает для wlo1 и enp1s0)
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
Проверка:
- Убедитесь, что правила применились:
iptables -L FORWARD -n -vВы должны увидеть 4 строки сACCEPTдля FORWARD. - Проверьте, что ip_forward включен:
sysctl net.ipv4.ip_forwardДолжно быть1. - Протестируйте с клиента enp1s0:
- Подключите устройство к сети
enp1s0(IP из диапазона 10.5.0.x) - Установите шлюз:
10.5.0.1 - DNS:
192.168.1.1или8.8.8.8 - Попробуйте пропинговать
8.8.8.8
- Подключите устройство к сети
Сохранение правил:
Не забудьте сохранить новые правила, чтобы они не пропали после перезагрузки:
netfilter-persistent save
Или вручную:
iptables-save > /etc/iptables/rules.v4
Теперь клиенты из обеих сетей (wlo1 и enp1s0) смогут выходить в интернет через enp3s0.
