RedHat Enterprise Linux 9 ( RHEL9 ) で firewalld で許可するサービスを追加にする方法は以下の通り。
まずは、変更前の設定内容を確認する。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
上の例では、public というゾーンだけが設定されており、active になっていることが確認できる。
public ゾーンには、ens33 インターフェースが含まれており、
cockpit、dhcpv6-client、ssh のサービスに対する通信だけが許可されていることが分かる。
ここに、http(80/TCP) サービスに対する通信を許可するようにしてみる。
# firewall-cmd --zone=public --add-service=http
success
設定が変更された内容を確認してみる。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: cockpit dhcpv6-client http ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
services のところに http が追加されて、これで http サービスに対する通信が許可されるようになった。
ただし、これだけでは再起動等によって設定が今回の変更前の状態に戻ってしまう。
試しに、firewalld を再起動してみると、
# firewall-cmd --zone=public --reload
success
設定が変更前に戻っていることが分かる。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
システム再起動や firewalld の再起動後も設定を有効にするためには、
--permanent オプションを付けて、設定変更を行う。
# firewall-cmd --zone=public --add-service=http --permanent
success
システム再起動や firewalld の再起動後に有効になる設定を確認する方法は以下の通り。
# firewall-cmd --list-all --permanent
現在動作している設定 (active) と再起動後に有効になる設定があるので、
意識して設定する必要がある。