Ssl
為什麼firewall-cmd會拋出錯誤“ALREADY_ENABLED”但呼叫firewall-cmd –list-ports時埠沒有列出?
使用 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
使用防火牆。)