26 Docker iptables

Dockerでiptablesを利用するには、DOCKER-USER chainにルールを追加します。

特定ネットワークからのみmysql接続を許可したい時など

IP確認

  # docker inspect db
           "Networks": {
                "django_default": {
                    .
                    .
                    .
                    "Gateway": "172.23.0.1",
                    "IPAddress": "172.23.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:17:00:02",
                    "DriverOpts": null
                }
            }
        }
    }

特定IPだけ許可

iptables -I DOCKER-USER -p tcp --dport 3306 -d 172.23.0.2 -j DROP
iptables -I DOCKER-USER -p tcp --dport 3306 -s 192.168.10.10 -d 172.23.0.2 -j ACCEPT

netfilter-persistentを利用すると、起動時に自動で反映する事が可能ですが、
Dockerを利用していると、起動時にDockerがiptablesのルールを追加するので、ルールが重複する可能性があります。
netfilter-persistentを利用する場合は、保存したルールからDockerが自動で入れるルールを削除しておいた方が良いです。

apt install netfilter-persistent

シェルなど用意しておいて、起動後入れる設定とかでも良いかも。

Shinya Matsui 2023/12/06 07:10
現在確認すると、netfilter-persistentでの反映方法は設定反映されなくなってた。。。
やはり再起動後はシェルなどで追加する方が良さそう。

/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload