我一直以为只有安装了该服务才能使用该iptables
命令iptables.service
,但后来我发现我错了
┌──[[email protected]]-[~]
└─$systemctl status iptables.service
Unit iptables.service could not be found.
┌──[[email protected]]-[~]
└─$iptables -A INPUT -p icmp --icmp-type 13 -j DROP
┌──[[email protected]]-[~]
└─$iptables -A OUTPUT -p icmp --icmp-type 14 -j DROP
添加规则后立即生效
没有iptables.service
服务,命令仍然可以使用
┌──[[email protected]]-[~]
└─$whereis iptables
iptables: /usr/sbin/iptables /usr/libexec/iptables /usr/share/man/man8/iptables.8.gz
┌──[[email protected]]-[~]
└─$which iptables
/usr/sbin/iptables
我很好奇为什么我们需要iptables.service
以及它意味着什么,为了简单起见,我们可以使用firewalld.service
.
┌──[[email protected]]-[~]
└─$yum -y install iptables-services.x86_64 > /dev/null
┌──[[email protected]]-[~]
└─$systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
Active: inactive (dead)
我安装了,发现只有配置文件
┌──[[email protected]]-[~]
└─$rpm -qlc iptables
/etc/sysconfig/ip6tables-config
/etc/sysconfig/iptables-config
还有什么iptable.service
作用呢?
我可以这样假设吗? iptables
与内核相关,不需要iptables.service
安装即可工作,但我看到很多人iptable.service
在更改iptable
规则后重新加载配置文件并重新启动,这是正确的想法吗?
答案1
该iptables
命令用于添加或删除规则和链,无需服务文件即可使用。所做iptables.service
的就是在启动时自动加载保存的规则集并在关闭时卸载规则。脚本中有一些安全检查,例如将默认链策略设置为关闭时接受,以防止系统具有不可用的规则集。如果您想在每次启动系统时手动加载规则,该服务会让事情变得更容易。
firewalld
提供了一个更简单的定义规则的界面,iptables
但这确实是主要的区别。在幕后,firewalld
用于iptables
执行规则。就我个人而言,我更喜欢使用,iptables
但多年来我已经习惯了该配置。iptables
或的选择firewalld
实际上取决于您的喜好。