我希望有一些明显的我在这里错过了。 我有NAT规则设置转发几个不同的端口到内部机器。 当一个请求来自互联网,一切按计划进行。
但是,如果我使用同一端口从networking内部打我的外部IP,则请求会在防火墙机器上终止,而不是转发到正确的位置。
有什么显而易见的,我做错了吗? 生成的iptables规则如下。
# Generated by iptables-save v1.4.4 on Wed Sep 7 20:36:37 2011 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] :Cid4488E49C.0 - [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 10.0.0.11/32 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -i lo -m state --state NEW -j ACCEPT -A INPUT -s XXX.XXX.XXX.XXX/32 -m state --state NEW -j ACCEPT -A INPUT -s 10.0.0.1/32 -m state --state NEW -j ACCEPT -A INPUT -p tcp -m tcp -m multiport --dports 5050,22,5900 -m state --state NEW -j ACCEPT -A INPUT -p udp -m udp --dport 67 -m state --state NEW -j ACCEPT -A INPUT -s 10.0.0.0/24 -m state --state NEW -j ACCEPT -A INPUT -j DROP -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -d 10.0.0.11/32 -p tcp -m tcp --dport 5900 -m state --state NEW -j ACCEPT -A FORWARD -d 10.0.0.10/32 -p tcp -m tcp --dport 5050 -m state --state NEW -j ACCEPT -A FORWARD -s 10.0.0.0/24 -m state --state NEW -j ACCEPT -A FORWARD -j DROP -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -d 10.0.0.11/32 -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -o lo -m state --state NEW -j ACCEPT -A OUTPUT -m state --state NEW -j ACCEPT -A OUTPUT -p tcp -m tcp -m multiport --dports 5050,22,5900 -m state --state NEW -j Cid4488E49C.0 -A OUTPUT -p udp -m udp --dport 67 -m state --state NEW -j Cid4488E49C.0 -A OUTPUT -d 10.0.0.11/32 -p tcp -m tcp --dport 5900 -m state --state NEW -j ACCEPT -A OUTPUT -d 10.0.0.10/32 -p tcp -m tcp --dport 5050 -m state --state NEW -j ACCEPT -A OUTPUT -s 10.0.0.0/24 -m state --state NEW -j ACCEPT -A OUTPUT -j DROP -A Cid4488E49C.0 -d XXX.XXX.XXX.XXX/32 -j ACCEPT -A Cid4488E49C.0 -d 10.0.0.1/32 -j ACCEPT COMMIT # Completed on Wed Sep 7 20:36:37 2011 # Generated by iptables-save v1.4.4 on Wed Sep 7 20:36:37 2011 *nat :PREROUTING ACCEPT [114:15633] :POSTROUTING ACCEPT [1:48] :OUTPUT ACCEPT [1:48] -A PREROUTING -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5050 -j DNAT --to-destination 10.0.0.10:5050 -A PREROUTING -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 10.0.0.11:5900 -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE -A OUTPUT -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5050 -j DNAT --to-destination 10.0.0.10:5050 -A OUTPUT -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 10.0.0.11:5900 COMMIT # Completed on Wed Sep 7 20:36:37 2011
如果您从10.0.0.0/24networking上的另一台计算机连接到10.0.0.10服务器,则数据包路由的方式可能会有问题。 例如,如果源是10.0.0.99,并且通过公共IP地址连接到10.0.0.10,则10.0.0.10服务器的响应数据包将直接发送到10.0.0.99,因为它没有与10.0.0.10的半开连接(半开连接与公网IP)。
一个可能的解决scheme是双重NAT。 这是一个例子:
http://www.fwbuilder.org/4.0/docs/users_guide5/double_nat.html
顺便说一句,获得fwbuilder支持的更好的地方是来自fwbuilder邮件列表或SF上的讨论论坛。
http://sourceforge.net/projects/fwbuilder/forums/forum/16372
https://lists.sourceforge.net/lists/listinfo/fwbuilder-discussion
如果它是开放的,你可以通过它的内部IP访问服务器,那么我没有问题。 如果你真的想从内部的外部IP访问它,那么我会要求查看错误10g的副本或在NAT上访问日志。 您是否也可能在代理或secOnd IP后面引用外部引用IP与NAT不同呢? 希望我们能解决这个问题。