Dockerコンテナが特定のIPアドレスにのみ接続できるようにする

Dockerコンテナが特定のIPアドレスにのみ接続できるようにする

目的は、特定のIPアドレス(ホストが属するローカルネットワークとインターネットの両方)にのみ接続できるDockerコンテナを作成することです。

コンテナ自体には、直接アクセスまたは公開できるポートは必要ありません。

例:

  1. ドッカーホスト 192.168.1.100
  2. IPカメラなどの192.168.1.150の一部のデバイス
  3. <static_ip>の一部のクラウドVPS

- <static_ip>にSSHで接続し、デバイス192.168.1.150に接続できますが、他には接続できないコンテナを作成する必要があります(特にホストに他のコンテナがなく、192.168.1.0ネットワークに他のコンテナがなく、おそらく何もありません) VPSではなくインターネットから)。

さまざまなサービスを含む他のコンテナがホストシステムで実行されているため、これらのコンテナは邪魔にならないでください。

いくつかの調査の最後に、次のカスタムブリッジネットワークを作成する必要があることに気づきました。

docker network create --driver bridge \
-o "com.docker.network.bridge.enable_icc"="false" \
my-restricted-network

次に、そのネットワークでコンテナを実行します。

docker run --name my-restricted-container \
--network my-restricted-network \
-d image_name /entrypoint.sh

それで私は何をすべきですか?ホストにmy-restricted-network制御専用のiptablesルールを追加したいと思います。正確にはどうですか?

答え1

まあ、RTFMの30分後に解決策を見つけました。

Dockerホストのすべてのエントリ:

  1. my-restricted-network のインターフェイス ID を探します。
docker network ls | grep my-restricted-network
38d3c24a48ad   my-restricted-network   bridge    local
  1. 次のルールを挿入します。
iptables -I DOCKER-USER -i br-38d3c24a48ad -j DROP
iptables -I DOCKER-USER -i br-38d3c24a48ad -d 192.168.1.150 -j ACCEPT
iptables -I DOCKER-USER -i br-38d3c24a48ad -d <static_ip> -j ACCEPT

関連情報