17
2019
01
14:54:59

使用iptables配置防火墙后本机无法访问外部网络


在一台centos和ubuntu的主机上使用配置了防火墙,就是添加几条简单规则。规则确实是生效了,因为很好的屏蔽掉外部的非法请求,但是本机却无法和外部通信,包括同一个局域网的其他机器和外部互联网上的机器,连最基本的ping都无法成功。在防火墙规则里面只是对INPUT做了限制,OUTPUT和FORWORD没有任何限制,这有点想不通,只好google一把,发现有人也是遇到这样的问题,解决的办法是添加如下规则:

/sbin/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模块的连接状态




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/17.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: