Когда 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

Проверка результата:

  1. Посмотрите статус служб, нет ли ошибок:systemctl status hostapd(Нажмите q, чтобы выйти из просмотра статуса).
  2. Возьмите телефон или другой ноутбук, найдите сеть MyLinuxHotspot и подключитесь с паролем MySuperPassword123.
  3. Попробуйте открыть любой сайт.

Если что-то не получилось (например, служба 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

Проверка:

  1. Убедитесь, что правила применились: iptables -L FORWARD -n -vВы должны увидеть 4 строки с ACCEPT для FORWARD.
  2. Проверьте, что ip_forward включен: sysctl net.ipv4.ip_forwardДолжно быть 1.
  3. Протестируйте с клиента 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.

Добавить комментарий