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

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

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

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

firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT

通过检查 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

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

firewall-cmd --direct --permanent --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 7199 -j ACCEPT

知道如何解决这个问题吗?为什么该--permanent选项无法正常工作?

答案1

--direct命令不能永久生效。使用等效区域命令:

   sudo firewall-cmd --zone=public --add-port=7199/tcp --permanent
   sudo firewall-cmd --reload

并检查结果:

   sudo firewall-cmd --zone=public --list-all

答案2

您还可以执行以下操作: sudo firewall-cmd --zone=public --add-port=7198/tcp sudo firewall-cmd --zone=public --add-port=7199/tcp sudo firewall-cmd --runtime-to-permanent ...这将使当前的防火墙设置永久生效

答案3

方法有很多..但我今天介绍一个这里没有提到的方法:

# firstly run it without --permanent
sudo firewall-cmd --zone=public --add-port=7199/tcp 
# then run it again with adding --permanent
sudo firewall-cmd --zone=public --add-port=7199/tcp --permanent

它必须有效

相关内容