Краткое руководство по настройке роутера в связке UFW + dnsmasq, а также проброс портов по IP-адресам машин в локальной сети на примере Astra Linux «Смоленск»
Исходные данные
Имеем на машине 2 сетевых интерфейса:
- eth0 — для внешней сети 192.168.1.0/24
- eth1 — для внутренней сети 192.168.100.0/24
Также у нас есть шлюз во внешней сети. Это маршрутизатор с IP-адресом 192.168.1.1
Наша задача — настроить доступ в Интернет для внутренней сети.
Для этого в первую очередь открываем файл настроек сетевых интерфейсов /etc/network/interfaces
# nano /etc/network/interfaces
и зададим конфигурацию для внутренней сети:
auto eth1 iface eth1 inet static address 192.168.100.1 netmask 255.255.255.0 network 192.168.100.0 broadcast 192.168.100.255
Затем откроем файл /etc/sysctl.conf
# nano /etc/sysctl.conf
и в нём раскомментируем строку:
net.ipv4.ip_forward=1
и применим изменения
# sysctl -p
После этого проверим статус запуска ufw
# ufw status
по умолчанию он будет отключён, поэтому включим его
# ufw enable
и проверим
# ufw status
Зададим правила файрволла по умолчанию
# ufw default deny incoming # ufw default allow outgoing # ufw default allow routed # ufw reload
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), allow (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere Anywhere on eth1 ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) Anywhere (v6) on eth1 ALLOW IN Anywhere (v6)
Далее переходим к файлу с правилами /etc/ufw/before.rules
# nano /etc/ufw/before.rules
в самом конце добавим строчки:
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE COMMIT
После этого перезапустим ufw методом отключения и включения
# ufw disable # ufw enable
Теперь установим службу DNS и DHCP-серверов dnsmasq
# apt install dnsmasq
проверим её статус
# systemctl status dnsmasq
скорее всего, после установки она будет активна.
Затем откроем файл конфигурации dnsmasq
# nano /etc/dnsmasq.conf
и в самом конце файла пропишем такие строки:
domain-needed bogus-priv interface=eth1 resolv-file=/etc/resolv.conf dhcp-range=192.168.100.101,192.168.100.200,24h cache-size=150
Перезагрузим службу dnsmasq
# systemctl restart dnsmasq
и все изменения должны примениться.
Для проброса портов на машины в локальной сети необходимо открыть файл конфигурации правил
# nano /etc/ufw/before.rules
и в нём после строк
*nat :POSTROUTING ACCEPT [0:0]
добавить такие:
-A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination 192.168.100.11:1234 -A PREROUTING -i eth0 -p udp --dport 5678 -j DNAT --to-destination 192.168.100.12:5678
Далее запустим команды ufw для проброса этих портов
# ufw allow proto tcp from any to 192.168.100.11 port 1234 # ufw allow proto udp from any to 192.168.100.12 port 5678
и перезагрузим службу ufw
# ufw reload
Здесь:
- tcp и udp — протоколы
- 1234 и 5678 — номера портов
- 192.168.100.11 и 192.168.100.12 — IP-адреса машин в локальной (внутренней) сети
В итоге последний раздел файла /etc/ufw/before.rules должен выглядеть примерно так:
*nat :POSTROUTING ACCEPT [0:0] -A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination 192.168.100.11:1234 -A PREROUTING -i eth0 -p udp --dport 5678 -j DNAT --to-destination 192.168.100.12:5678 -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE COMMIT
Готово! Теперь машина с ОС Astra Linux полноценно работает в режиме шлюза и маршрутизатора.