如何使容器中的iptables规则生效

如何使容器中的iptables规则生效,第1张

iptables的配置文件保存在/etc/sysconfig/iptables-config下,书写了iptables规则以后如果需要保存规则,则可以使用命令:iptables-save,使用此命令保存的规则位置可以是任意的,此时保存的规则在重启机器后无法自动生效,需要使用命令iptables-restore恢复,或者写入开机启动脚本/etc/rc.d/rc.local里面。

以下为教材里使用的命令:

保存规则:#iptables-save >/etc/iptables-script

恢复规则:#iptables-restore>/etc/iptables-script

保存和恢复的位置只要是两者一致就可以了,如果iptables-script没有则需要创建。

若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中

#echo '/sbin/iptables-restore /etc/iptables-script' >>/etc/rc.d/rc.local

但近日查看一些资料,发现规则保存的位置在/etc/sysconfig/iptables下,所以一些资料就有了

保存规则:#iptables-save >/etc/sysconfig/iptables

恢复规则:#iptables-restore>/etc/sysconfig/iptables

若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中

#echo '/sbin/iptables-restore /etc/sysconfig/iptables' >>/etc/rc.d/rc.local

此外还有一命令保存规则 #service iptables save,如下图:

规则自动保存到了/etc/sysconfig/iptables,用此命令保存的规则开机会自动生效,所以为了统一期间,建议以后规则的保存都保存在/etc/sysconfig/iptables下。

因为懒,我们选择增加一个iptables规则

首先增加规则如下:

发现不起作用,排查ip_forward也没问题,那就只能加日志

查看日志

居然没有,居然没有匹配这条规则

参考 终于搞定Linux的NAT即时生效问题

因为linux通过conntrack记录第一个packet的nat结果,后续的packet都不走nat,所以nat规则没有即时生效。揣测这么做的目的是提高iptables效率,毕竟一个link的所有packet都走nat规则实在没必要。

pre{overflow-x: auto}    

docker有自己的防火墙吗?

有的,开启防火墙端口:firewall-cmd --zone=public --add-port=80/tcp --permanent。但是docker的部分网络功能是通过iptables转发来完成的,转发规则是docker进程启动后动态添加的,也就意味着如果你重启iptables,将会丢失docker的转发规则。

有两种解决办法:

1、动态添加iptables规则,然后保存到防火墙软件配置文件中

动态添加iptables规则可以使规则立即生效(重启失效)

sudo iptables -I INPUT 1 -p tcp --dport 46379 -j ACCEPT

这条命令会将规则添加到input规则的第一位 ,-I参数指定插入位置。不要使用-A参数,该参数会将规则添加到input的最后一条,一般原来的最后一条都是reject规则,所以新插入的规则无法生效。

sudo service iptables save

2、重启iptable后重新启动docker

影响:重启docker会导致全部容器重启,有可能造成短时间的业务故障。

此方法不建议使用,如果已经重启防火墙,导致docker业务故障,使用下面命令重启dcoker。

systemctl restart docker

它的基本 *** 作是什么?

1、启动服务:systemctl start firewalld.service

2、关闭服务:systemctl stop firewalld.service

3、重启服务:systemctl restart firewalld.service

4、显示服务的状态:systemctl status firewalld.service

5、开机自动启动:systemctl enable firewalld.service

6、禁用开机自动启动:systemctl disable firewalld.service

7、查看版本: firewall-cmd --version

8、查看帮助: firewall-cmd --help

9、显示状态: firewall-cmd --state

10、查看所有打开的端口: firewall-cmd --zone=public --list-ports

11、更新防火墙规则: firewall-cmd --reload

12、查看区域信息: firewall-cmd --get-active-zones

13、查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

14、拒绝所有包:firewall-cmd --panic-on

15、取消拒绝状态: firewall-cmd --panic-off

16、查看是否拒绝: firewall-cmd --query-panic


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7983758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存