如何通过 firewall-cmd 永久更改防火墙?

fst*_*tab 3 firewall iptables centos iptables-persistent firewalld

我正在尝试在 CentOS 7 中打开一些端口。

我可以使用以下命令打开一个端口:

firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

通过检查 via iptables -L -n,我得到了设置成功的确认:

Chain IN_public_allow (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:7199
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法使更改永久化。即使使用这样的--permanent选项:

firewall-cmd --direct --permanent --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?为什么该--permanent选项无法正常工作?

小智 8

--direct命令不能永久化。使用等效的 zone 命令:

   sudo firewall-cmd --zone=public --add-port=7199/tcp --permanent
   sudo firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)

并检查结果:

   sudo firewall-cmd --zone=public --list-all
Run Code Online (Sandbox Code Playgroud)


小智 5

你也可以做这样的事情: sudo firewall-cmd --zone=public --add-port=7198/tcp sudo firewall-cmd --zone=public --add-port=7199/tcp sudo firewall-cmd --runtime-to-permanent ...这将使当前的防火墙设置永久