我在 CentOS 8 中打开了端口 8443,使用firewall-cmd
如下方法:
sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp
但是,虽然该命令成功运行,但当我运行 时它并没有显示在开放端口列表中sudo firewall-cmd --list-all
。这是怎么回事?端口到底打开了没有?
public (active)
target: default
icmp-block-inversion: no
interfaces: eno1
sources:
services: cockpit dhcpv6-client ftp http https samba ssh telnet
ports: 3389/tcp 23/tcp 9090/tcp 9091/tcp 9000/tcp 5222/tcp 4443/tcp 10000/udp 5443/tcp 8888/tcp 3000/tcp 1443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
答案1
添加规则后,您没有重新加载 FirewallD。
您正确添加了命令,但您需要重新加载 FirewallD 才能接收新规则。
我在 MacBook 上的 Vagrant VirtualBox VM 中加载了 CentOS 8 并进行了测试。在 VM 构建完成后,我首次登录时启用了 FirewallD 并运行了以下命令:
sudo firewall-cmd --list-all
这是我得到的输出;请注意端口区域是空白的:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
然后我运行了您使用的确切命令,如下所示:
sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp
检查sudo firewall-cmd --list-all
显示的输出与上述完全相同。然后我重新加载了 FirewallD 规则,如下所示:
sudo firewall-cmd --reload
再次检查sudo firewall-cmd --list-all
,端口 8443 已按要求列出:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client ssh
ports: 8443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: