探究 CentOS 7 下 iptables 和 firewalld 切换过程中,谁主沉浮
Posted 毕小宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了探究 CentOS 7 下 iptables 和 firewalld 切换过程中,谁主沉浮相关的知识,希望对你有一定的参考价值。
背景
最近需要开发一个 iptables 的可视化管理平台,研究了一下 iptables 和 firewalld 这两个防火墙。
CentOS 6 上 iptables 作为默认防火墙,这个比较好控制。对于 CentOS7 中,这两个防火墙之间切换时,到底谁起主要作用呢?又怎么控制规则呢?
本文来探讨这个问题:
- firewalld 底层用的是 iptables ,所以能不能统一成 iptables 一种防火墙呢?能。
- firewalld 启动后,iptables 还生效吗?不生效。
- firewalld 启动后,再关闭,iptables 还有规则吗?没有了。
- 切换 firewalld 后再切回到 iptables ,怎么使旧规则再生效?切换之前
iptables-save
备份规则,切回 iptables 后再iptabels-restore
恢复规则。 - firewalld 服务未启用,且 iptables 服务也为 inactive ,iptables 规则还生效吗?生效。
本文按上述步骤来验证 CentOS 7 下两个防火墙的切换过程。
关闭 firewalld
第一步,执行 systemctl stop firewalld
命令,关闭 firewalld 服务。
第二步,执行 iptables -F
,清空 iptables 规则。
第三步,添加一条阻断规则 iptables -t filter -I INPUT -s '192.168.xx.xx' -j REJECT
。
第四步,在目标源机器上 ping 当前主机
。
关闭 firewalld 后,iptables 生效。
启动 firewalld
启动 firewalld 后观察目标机器的 ping 的结果如下:
此时查看 iptables,有一堆 firewalld 赋予的默认的规则 :
再关闭 firewalld
再关闭 firewalld 服务,此时规则失效,目标机器的 ping 能够联通,此时查看 iptables 规则列表,里面是空白的:
由此可见,firewalld 启动后,会以自己的配置添加规则到 iptables 表中,iptables 原有的旧规则会被丢弃。
启示录
第一点,iptables 是 firewalld 背后工具,就算它的状态是未启用的,只要 firewalld 没有启用,iptables 就是默认的守护神,跟它自己的服务状态没有关系。
第二点,切换 firewalld 的过程中,要想保留 iptables 的规则,以便下次启用 iptables 时继续使用,可以先用 iptables-save > xxx
备份,再用 iptables-restore < xxx
还原。
以上是关于探究 CentOS 7 下 iptables 和 firewalld 切换过程中,谁主沉浮的主要内容,如果未能解决你的问题,请参考以下文章
解决CentOS(6和7版本),/etc/sysconfig/下没有iptables的问题
CentOS 7 下 安装Webmin 启动防火墙失败----Applying firewall rules:iptables-restore:line 2 failed