iptables配置防火墙后本机无法访问外网

7,841次阅读
没有评论

配置一台 centos6.9 主机的 iptables 后,发现本机访问不了外网了,连 ping 其它主机都不可以,在防火墙中只对 INPUT 做了限制,OUTPUT 是 policy ACCEPT 状态,有点想不通,放狗看看,其实也有人遇到这种问题,解决方法就是添加以下规则:

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

添加后就可以正常与外网通信了。

为何在没有添加上述规则就不能通信?因为建立一个通信连接需要服务器端和客户端交互才能完成。举例来说,从本机使用 ssh 客户端去登陆外部的 ssh 服务器,假设使用端口为 12345,那么本就使用 tcp 端口号 12345 向服务器 22 端口发送一个请求,这个属于 OUTPUT,由于 OUTPUT 规则没有任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的 tcp 12345 端口,此时回应属于 INPUT,如果 INPUT 中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。外部的网络那么多,总不能逐条去配置 INPUT 规则,所以为了能访问外部网络,必须要配置上述规则。

关于更多的 state 信息可以参考:iptables 中 state 模块的连接状态

Winter
版权声明:本站原创文章,由 Winter 2018-05-22发表,共计513字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码
载入中...