Как настроить NAT UFW на Debian 11
Однажды я уже писал как использовать Debian сервер в качестве шлюза и перенаправить трафик клиентов из серой сети через NAT — https://moonback.ru/page/debian-vpn-client-to-inernet. Сегодня расскажу как это сделать на сервере с Debian 11 и межсетевым экраном UFW.
Как разрешить пересылку пакетов между сетевыми интерфейсами
Следующая настройка превращает Debian сервер в маршрутизатор и включает пересылку данных между сетевыми интерфейсами. В файле /etc/sysctl.conf
найдите и раскомментируйте следующую строку (уберите знак # в начале строки):
net.ipv4.ip_forward=1
Следующим шагом необходимо изменить политику по-умолчанию по пересылке пакетов между сетевыми интерфейсами в межсетевом экране UFW. Для это в файле /etc/default/ufw
необходимо изменить параметр DEFAULT_FORWARD_POLICY на следующее значение:
DEFAULT_FORWARD_POLICY="ACCEPT"
Настройка NAT на Debian сервере с межсетевым экраном UFW
Настроим правило которое позволит пользователям с «серыми» адресами отправлять данные через NAT на сервере. Для этого добавьте следующие строки в файл /etc/ufw/before.rules
обязательно перед правилами фильтрации:
# NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Forward traffic through eth0 - Change to match you out-interface -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't # be processed COMMIT
Где eth0 — наименование сетевого интерфейса которым ваш сервер смотрит в интернет. А 192.168.1.0/24 подсеть которую вы хотите выпустить через интерфейс eth0.
Чтобы изменения вступили в силу перезапустите UFW
$ sudo ufw disable && sudo ufw enable
Проброс портов на UFW
Для того чтобы открыть порт на внешнем интерфейсе и передать данные на устройство во внутренней сети приведите настройки UFW описанные выше к следующему виду:
# NAT table rules *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # Port Forwardings -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.10 # Forward traffic through eth0 - Change to match you out-interface -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't # be processed COMMIT
Здесь параметр -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.10
говорит что данные принимаемые на 22 порт TCP интерфейса eth0 будут переправлены на устройство с IP адресом 192.168.1.10.
Чтобы изменения вступили в силу перезапустите UFW
$ sudo ufw disable && sudo ufw enable
Благодарсности
При написании статьи были использованы следующие источники: