web-dev-qa-db-ja.com

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:
2
user007

実行したコマンドは、実行中の構成ではなく、永続的な構成に影響します。しかし、実行中の構成をリストしています。そのため、それらは表示されません。

永続的な構成をリストして、ルールが正常に追加されたことを確認できます。

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する必要があります。)

2
Michael Hampton