![ufw 端口转发不起作用](https://linux22.com/image/665732/ufw%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试将 ubuntu 14.04 服务器设置为路由器,同时进行一些端口转发。路由器部分已经正常工作,但我无论如何也想不出端口转发为何不起作用。我已完成以下步骤,目标是将 SMTP 和 http 流量转发到私有子网上的服务器:
- 取消注释转发行
/etc/ufw/sysctl.conf
- 更新 /etc/default/ufw 行
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
据我所知,它应该可以工作。我还可以检查什么?我是否遗漏了任何步骤?是否有任何工具可以用来尝试找出可能发生的事情?非常感谢任何帮助或建议。谢谢。
答案1
问题是网络路由问题。我一直在尝试设置某种 DMZ,以便将服务器指向内部路由器。网关可以 ping 服务器,但我猜它不知道如何路由 smtp 或 http 流量。将邮件和 Web 服务器更改为指向 ubuntu 网关解决了路由问题,转发开始正常工作。