firewalld を使用する場合の転送の有効化

firewalld​ は、iptables を補うファイアウォール管理ツールであり、永続的なネットワークトラフィックルールを定義できます。 Red Hat Enterprise Linux (RHEL) 7.x オペレーティングシステムで ​firewalld​ を使用している場合は、docker0 デバイスで転送を有効化する必要があります。 また、10.0.0.0/8 サブネットとの間でやり取りしているすべてのパケットを転送する必要もあります。

firewalld を使用しているかどうかを確認する方法

システムで firewalld を使用しているかどうかを確認するには、次のコマンドを実行します。

systemctl status firewalld.service

firewalld がインストールされている場合は以下の内容が返されます。

$ sudo systemctl status firewalld.service
* firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

firewalld がインストールされていない場合は、エラーメッセージが返されます。

転送の有効化

docker0 デバイスで転送を有効化するには、次のコマンドを実行します。

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -o docker0 -j ACCEPT -m comment --comment "docker subnet"

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -s 10.0.0.0/8 -j ACCEPT -m comment --comment "docker subnet"

10.0.0.0/8 サブネットで転送を有効化するには、次のコマンドを実行します。

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 10.0.0.0/8 -j ACCEPT -m comment --comment "docker subnet"

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -d 10.0.0.0/8 -j ACCEPT -m comment --comment "docker subnet"