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