文章插图
相当于第一条规则没启作用 。直接会进入第二条规则进行匹配计算
文章插图
- 一路链下去 , 最终只有图中的规则
③
能命中,而该规则对包的处理方式,是RETURN,也即交给下个规则处理
文章插图
是对目标网口是docker0的包进行匹配,按理说我们的包会匹配这条规则, 但是这条规则被匹配还有一个条件,就是包链接的状态要是已建立的连接才行,我们第一次从外部对数据库进行访问显然不符合这个要求,于是该规则不会命中 。进入第四条规则匹配
文章插图
从截图可以看到,包到了这里,被完美匹配 。该包首先是一个非docker网络到docker网络的访问,其次,其目标ip是172.17.0.2 的3306端口,匹配后,处理动作是ACCEPT 。也即最终该访问被响应 , 我们从外部网络访问到数据库了 。
那解决办法很简单,既然包导向了FORWARD链,那么在FORWARD链中添加拦路虎,不就得了嘛 。DOCKER官方给的建议便是如此,比如,针对本文中的例子,我们可以添加如下规则,即可实现所有外部网络都无法访问docker中的服务:
iptables -I DOCKER-USER -i enp0s3 -j DROP
规则含义是:所有从外部网络进入的数据包,直接被丢弃 。DOCKER-USER链是上述FORWARD链中第一个规则匹配的到的链 。外部访问的数据包,其输入网口,肯定是enp0s3,因为在本例中,它是对外通信的网口 。当然我们也可以在此 , 插入只允许某个网络访问,或某个网络不能访问的规则,不再赘述 。参考资料https://www.zsythink.net/archives/1199https://www.booleanworld.com/depth-guide-iptables-linux-firewall/https://linuxconfig.org/how-to-make-iptables-rules-persistent-after-reboot-on-linuxhttps://askubuntu.com/questions/579231/whats-the-difference-between-prerouting-and-forward-in-iptableshttps://docs.docker.com/network/iptables/
欢迎关注我的个人公众号"西北偏北UP",记录代码人生,行业思考,科技评论【iptables使用详解】
推荐阅读
- 渐变维度 使用 Apache Hudi 实现 SCD-2
- 华为车载智慧屏值得买吗_华为车载智慧屏使用评测
- Pytest进阶使用
- RAID5 IO处理之条带读代码详解
- RAID5 IO处理之写请求代码详解
- RAID5 IO处理之重构代码详解
- RAID5 IO处理之replace代码详解
- 如何使用 pyqt 读取串口传输的图像
- 数据科学学习手札144 使用管道操作符高效书写Python代码
- 你们觉得华为手机卡不卡,使用体验如何(华为加装nm卡缺点)