2 zoombinde zoombinde 于 2016.01.28 18:02 提问

linux主机配置了iptables,主机主动访问外部主机没问题,但是回包被iptables拦截了

操作系统:Red Hat Enterprise Linux Server release 6.2 (Santiago)

现状:主机A开启了iptables,只对filter表的INPUT链做了策略,OUT链默认是全放通。

问题:发现主机A访问防火墙外部的主机B,包可以到达主机B,但是主机B的回包被主机A的iptables拦截了,导致TCP连接无法建立。网上查找到一些方法,想利用iptables的状态来放通,配置了:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

但是结果一样,回包还是被INPUT链拦截了。请问怎么解决啊?

2个回答

devmiao
devmiao   Ds   Rxr 2016.01.28 21:33

检查下是不是配置了回环。

zoombinde
zoombinde   2016.01.29 12:52

配置了回环是什么意思?能稍微讲解一下吗?

我想了一下-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT这条规则,

1、建立TCP连接的时候,主机A发送SYN包到主机B,此时在iptables看来,这个会话应该是NEW的状态;
2、主机B回应的ACK应该要通过iptables之后,会话的状态才能变成ESTABLISHED;
3、但是这条规则是放通ESTABLISHED,RELATED状态的连接,如果ACK已经被拦掉了,那这个会话的状态肯定不能ESTABLISHED;
4、所以主机B回应给主机A的ACK无法匹配到这台规则,就被拦了。

不知道这样说对不对?有没有高人指点?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!