我的一个学校项目有一个简单的架构,由 3 台虚拟机组成,全部运行 Fedora 24:一台服务器、一台客户端和一台路由器。我决定使用iptables
overfirewalld
来广泛使用我只知道如何管理的 DNAT/SNAT iptables
;因此,我禁用firewalld
并启用iptables
:
dnf install iptables-services &&\
systemctl stop firewalld &&\
systemctl disable firewalld &&\
systemctl start iptables && systemctl start ip6tables &&\
systemctl enable iptables && systemctl enable ip6tables
我通过 保存了一组规则service iptables save
,它在我的路由器上完美运行。
我在另外两台机器(服务器和客户端)上使用了相同的方法,但规则没有保存。经过一番研究,我意识到它iptables.service
不会在启动时启动;我进一步注意到,firewalld
即使它被禁用,如上所述。
firewalld
即使被禁用,是否有特殊原因仍会启动?以下是启动后状态显示的内容:
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset : enabled)
Active: active (running) since Sun 2017-01-22 23:52:34 PST; 15s ago
Docs: man:firewalld(1)
Main PID: 619 (firewalld)
Tasks: 2 (list:512)
CGroup: /system.slice/firewalld.service
└─619 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid
Jan 22 23:52:33 public systemd[1]: Starting firewalld - dynamic firewall daemon
Jan 22 23:52:34 public systemd[1]: Started firewalld - dynamic firewall daemon.
另一方面,这是iptables
:
iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: inactive (dead)
答案1
最安全的摆脱方法firewalld
是将其删除:
dnf remove firewalld
对于虚拟机来说这样做是完全可以的。
答案2
屏蔽并禁用firewalld
服务:
systemctl mask firewalld
systemctl disable firewalld
答案3
您可以使用以下命令将其关闭:
chkconfig firewalld off &&\
reboot
这样,您将从运行级别关闭该firewalld
服务,以便在您启动计算机时它不会启动。