firewall-cmd --zone=public --add-port=443/tcp --permanentALREADY_ENABLED: 443:tcpfirewall-cmd --list-ports

我认为问题是由Firewall-cmd和iptables之间的冲突引起的。但是我不知道如何调试它,甚至可能调试。

firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports: 80/tcp 3000/tcp 26900/tcp 26900/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

最佳答案

您说的运行命令会影响永久配置,而不影响正在运行的配置。但是,您正在列出正在运行的配置。这就是为什么您看不到它们的原因。

您可以列出永久配置,以确认规则已成功添加。

firewall-cmd --list-all --permanent

您可以将规则添加到正在运行的配置中:

firewall-cmd --zone=public --add-port=443/tcp

或者,您可以从永久配置中重新加载运行的配置:

firewall-cmd --reload

还要记住,firewalld为公共端口定义了服务,因此通常不必按数字打开它们。例如,代替打开端口80 / tcp和443 / tcp,您可以说:

firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https

最后,在可能的情况下,最好在正在运行的配置中更改规则,验证规则是否有效,然后保存配置,而不要相反。这使您可以在出现问题并且不小心将自己锁定在系统之外的情况下进行还原。

您可以通过运行以下命令将正在运行的配置保存为永久配置:

firewall-cmd --runtime-to-permanent
--permanent--reload