iptables端口转发转发

我试图做一些简单的TCP端口转发

 [root @ wcmisdlin02〜]#cat / proc / sys / net / ipv4 / ip_forward
 0
 [root @ wcmisdlin02〜]#/ bin / echo 1> / proc / sys / net / ipv4 / ip_forward
 [root @ wcmisdlin02〜]#cat / proc / sys / net / ipv4 / ip_forward
 1
 [root @ wcmisdlin02〜]#iptables --list
连锁input(政策接受)
目标人select源目的地
 RH-Firewall-1-INPUT全部在任何地方

连锁FORWARD(政策接受)
目标人select源目的地
 RH-Firewall-1-INPUT全部在任何地方

链式输出(策略ACCEPT)
目标人select源目的地

连锁RH-Firewall-1-INPUT(2参考)
目标人select源目的地
随时随地接受
接受ICMP  - 任何地方任何地方icmp
接受ESP  - 在任何地方
接受啊 - 任何地方的任何地方
接受udp  - 任何地方224.0.0.251 udp dpt:mdns
接受udp  - 任何地方udp dpt:ipp
接受tcp  - 随处任何地方tcp dpt:ipp
接受所有 - 任何地方任何地方的状态
相关成立
接受TCP  - 任何地方任何地方状态新
 tcp dpt:mysql
接受TCP  - 任何地方任何地方状态新
 tcp dpt:ssh
接受TCP  - 任何地方任何地方状态新
 tcp dpt:http
接受TCP  - 任何地方任何地方状态新
 tcp dpt:ftp
接受TCP  - 任何地方任何地方状态新
 tcp dpt:https
全部拒收 - 任何地方
拒绝 - 与icmp主机禁止
 [root @ wcmisdlin02〜]#iptables --table nat --append PREROUTING --proto
 tcp --dport 80  -  jump DNAT  - 到10.52.208.223:80
 [root @ wcmisdlin02〜]#iptables --table nat --list PREROUTING
连锁PREROUTING(政策接受)
目标人select源目的地
 DNAT tcp  - 在任何地方tcp
 dpt:http:10.52.208.223:80
 [root @ wcmisdlin02〜]#curl --verbose http://10.52.208.221:80
 *关于连接()到10.52.208.221端口80
 *尝试10.52.208.221 ...连接被拒绝
 *无法连接到主机
 *closures连接#0
curl:(7)无法连接到主机
 [root @ wcmisdlin02〜]#

您正在将stream量发送到10.52.208.221。 鉴于你张贴的configuration,你的问题是networking服务器,而不是防火墙。 你的规则看起来是正确的。 FORWARD和INPUT被redirect到RH-Firewall-1-INPUT,您的第一条规则是允许所有stream量。 正如其他人指出的那样,你可以允许eth1上的所有stream量,而世界实际上是以eth0进入的。 次要的,你必须将stream量转换回世界

iptables --table nat --append POSTROUTING --proto tcp --dport 80 --jump MASQUERADE -o OUT_INTERFACE 

来自路由器的stream量不会碰到input或转发链,而是会将输出链转到networking服务器。 该子网中的其他系统也将直接进入networking服务器。 但是,世界各地的系统将遍布INPUT / FORWARD链,需要SNAT以及DNAT,因此世界似乎是一台机器。 您仍然无法从您的networking中进行testing。 您必须从Web服务器的相反接口进行testing。 给我你的IP地址,我会指出你正确的configuration。

拒绝连接意味着至less有一台主机正在接受TCP数据包,但没有服务正在侦听该端口。 当从不同的IP连接到10.52.208.221:80和10.52.208.223时会发生什么?

我现在不能testing它,但是我已经看到了一些情况,从IP地址表设置的主机连接到NAT的IP地址不起作用。 我不确定这是否是这种情况,因为您没有明确定义应用规则的接口,但是我已经看到一些情况,在这些情况下,Linux将IP连接到“本地”并使用回送接口并跳过iptables。

无论如何,你可以从盒子外面试试吗?