RedHat Enterprise Linux 9 ( RHEL9 ) で firewalld で許可するサービスを追加にする





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) と再起動後に有効になる設定があるので、

意識して設定する必要がある。