iptables无法通过第二个接口来允许ssh

我有一个问题,因为我无法使用我的第二个接口(eth2)中的当前防火墙规则执行SSH传出连接。

我试图连接的机器有两个名为eth1和eth2的接口。 他们的IP地址分别是192.168.0.18(掩码255.255.255.0)和10.30.25.1(掩码255.255.255.248)。

这是我的iptables规则集的输出:

# iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 26 4970 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 245 18008 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp spt:53 dpts:1024:65535 0 0 ACCEPT tcp -- eth1 * 192.168.0.0/24 0.0.0.0/0 tcp spts:1024:65535 dpt:22 state NEW 82 12248 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- eth2 eth1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT all -- eth1 eth2 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 26 4970 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 173 20104 ACCEPT all -- * eth1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 5 300 ACCEPT all -- * eth2 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp spts:1024:65535 dpt:53 0 0 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 1 60 ACCEPT tcp -- * eth2 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 7 564 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 

使用此规则集,我可以从192.168.0.18(eth1)SSH连接到192.168.0.0/24子网上的任何计算机,毫无问题。 但是,当我尝试通过其他接口(eth2 10.30.25.1)连接到服务器10.30.25.0/29上的计算机时,它无法build立连接。

然后,我试图冲洗规则,做这样的事情:

 iptables --flush iptables -t nat --flush iptables -t mangle --flush iptalbes -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables-save 

允许一切,这没有问题,这意味着目标机器启动并接受连接,并且我的路由表应该没有问题。

 route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.30.25.0 0.0.0.0 255.255.255.248 U 0 0 0 eth2 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth2 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1 

但我显然不想这样做。 基本上我的规则集有一个问题,但我无法弄清楚。 我虽然认为在SSH(22)的OUTPUT政策接受将做的伎俩,但失败了。

我正在VMWARE上运行CentOS 6.5 x86_64。

你的问题是你不允许在该接口上回传半分组。 尝试

 iptables -I INPUT 3 -i eth2 -m state --state ESTABLISHED -j ACCEPT 

这是有问题的规则:

  245 18008 ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 

您只能在eth1接口上允许返回inputstream量。 删除这个限制,你会发现你在eth2上的外出stream量开始工作。