使用iptables将stream量redirect到不同的ip

我有一个Debian Linux防火墙/网关连接我的WAN和局域网使用iptables。 我把eth1作为dynamic地址为190.200.229.102的wan,通过DYNDNS连接到somehost.comeht0作为地址为192.168.128.2的lan。 一切都按预期工作。 除了ACCEPT指定的端口之外的所有端口都被拒绝,并且端口转发按照预期将stream量redirect到内部机器。

问题是,当我尝试从内部networking连接到somehost.com ,我不会像我所期望的那样被redirect到内部机器。 我的端口redirect防火墙规则连接到wan接口( eth1 )。 我假设当我尝试连接到somehost.com我来自LAN连接,这就是为什么redirect不起作用。 我已经尝试了REDIRECT,DNAT,INPUT和其他标签没有成功。 有关如何实现这一点的任何提示?

我不知道你的问题的答案。 然而,作为一个解决scheme,为什么没有一个虚假的DNS内部somehost.com DNS入口指向在局域网IP?

您必须将转发的数据包作为来自防火墙的防火墙进行masquarade

iptables -t nat -A POSTROUTING -s 192.168.128.0/24 -o eth0 -j MASQUERADE

否则返回的数据包将会从正在看内部地址并直接发回数据包的内部主机本身来。 所以你发送请求到190.200.229.102,但从192.168.128.x得到答复,这是很正常的,你的机器不知道如何处理他们:)

您应该尝试添加Debian编辑文件中的Joel Mansford先生所述的本地DSN条目:

/ etc / hosts文件

以这种格式添加条目:

10.10.10.10 dyndns.com 11.11.11.11 someother.com other.sameline.com

;)

我可以猜测,问题是你正在做ip伪装(SNAT)和DNAT的数据包。

假设你从内部主机192.168.128.3连接。

原始数据包将是:

 192.168.128.3 -> somehost.com (190.200.229.102) 

然后由于DNAT,它会被翻译成:

 190.200.229.102 -> somehost.com (190.200.229.102) 

我想这是问题所在:from和address是一样的。

你应该在连接机器,防火墙的每个接口和接收机器上运行tcpdump或tshark。 然后尝试连接并尝试查看丢失数据包的接口以及转换后的地址和地址。

一旦你理解了,你可以创build一个filter来解决在正确的界面中的具体问题。

否则,您可以使用joelmansford提出的DNS解决scheme,这可能是一个更清洁的解决scheme。