Ssl

為什麼firewall-cmd會拋出錯誤“ALREADY_ENABLED”但呼叫firewall-cmd –list-ports時埠沒有列出?

  • February 2, 2019

使用 CentOS 7,我正在嘗試firewall-cmd --zone=public --add-port=443/tcp --permanent將 443 添加到我允許的埠。不幸的是,這會引發錯誤ALREADY_ENABLED: 443:tcp。但是當我使用firewall-cmd --list-ports它時,它不會顯示在列表中(“80/tcp 3000/tcp 26900/tcp 26900/udp”)。

我想這個問題是由 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使用防火牆。)

引用自:https://serverfault.com/questions/951870