我试图build立一个Ubuntu 14.04服务器作为一个路由器,也做一些端口转发。 我有路由器部分工作,但不能为我的生活找出为什么端口转发不起作用。 我已经完成了以下步骤,目标是将SMTP和httpstream量转发到私有子网上的服务器:
/etc/ufw/sysctl.conf取消注释转/etc/ufw/sysctl.conf DEFAULT_FORWARD_POLICY="ACCEPT" /etc/ufw/before.rules添加到/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
/etc/ufw/before.rules添加到/etc/ufw/before.rules的*filter部分(按照此处的示例):
-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日志,并显示它允许通过防火墙的stream量,但我认为这是停止的地方。 我遵循了各种不同的post和线程的指南和例子,无论出于什么原因,stream量都没有被转发。
如果有帮助,我做了一个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
从我能告诉它应该工作。 我还能检查什么? 我有没有错过任何步骤? 有什么工具可以用来试图弄清楚可能会发生什么? 任何帮助或build议,不胜感激。 谢谢。
问题是一个networking路由问题。 我一直试图build立一种DMZ,所以我有服务器指向一个内部路由器。 网关可以ping服务器,但我猜它不知道如何路由smtp或httpstream量。 更改邮件和Web服务器指向Ubuntu网关修复了路由问题和转发开始工作。