我正在尝试在 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
它必须有效