Я пытаюсь настроить сервер ubuntu 14.04 в качестве маршрутизатора, который также выполняет переадресацию портов. У меня есть часть маршрутизатора, но я не могу понять, почему переадресация портов не работает. Я выполнил следующие шаги, цель - пересылка SMTP- и http-трафика на серверы в частной подсети:
/etc/ufw/sysctl.conf
DEFAULT_FORWARD_POLICY="ACCEPT"
Добавлены следующие строки в /etc/ufw/before.rules
(пробовал как до, так и после раздела * filter):
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to-destination 10.16.0.51:25
-A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 10.16.0.20:80
-A POSTROUTING -s 10.16.0.0/24 -o eth0 -j MASQUERADE
COMMIT
Добавлены следующие строки в *filter
раздел /etc/ufw/before.rules
(по примеру Вот):
-A PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to-destination 10.16.0.51:25
-A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 10.16.0.20:80
Добавлены правила UFW:
To Action From
-- ------ ----
10.16.0.5 22 ALLOW 10.10.20.0/24
10.16.0.51 25 ALLOW [Public IP on eth0]
10.16.0.20 80 ALLOW [Public IP on eth0]
Я проверил журналы UFW, и они показывают, где он пропускает трафик через брандмауэр, но я предполагаю, что там он останавливается. Я следил за руководствами и примерами в различных сообщениях и темах, и по какой-то причине трафик просто не перенаправляется.
Если это поможет, я сделал iptables -t nat -L -v
:
Chain PREROUTING (policy ACCEPT 1600 packets, 202K bytes)
pkts bytes target prot opt in out source destination
1 60 DNAT tcp -- eth0 any anywhere anywhere tcp dpt:smtp to:10.16.0.51:25
1 60 DNAT tcp -- eth0 any anywhere anywhere tcp dpt:http to:10.16.0.20:80
Chain INPUT (policy ACCEPT 4 packets, 770 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 20 packets, 1430 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 22 packets, 1550 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- any eth0 10.16.0.0/24 anywhere
Насколько я могу судить, он должен работать. Что еще можно проверить? Я пропустил какие-то шаги? Есть ли какие-нибудь инструменты, которые я могу использовать, чтобы попытаться выяснить, что может происходить? Любая помощь или совет приветствуются. Спасибо.
Проблема заключается в сетевой маршрутизации. Я пытался создать своего рода DMZ, поэтому у меня были серверы, указывающие на внутренний маршрутизатор. Шлюз мог пинговать сервер, но я думаю, он не знал, как маршрутизировать трафик smtp или http. Изменение почтового и веб-серверов для указания на шлюз ubuntu устранило проблему маршрутизации, и пересылка начала работать.