Dockerを使用してサーバー上で実行するサービスの一部は、プライベートIPアドレス(10.0.0.0/8、192.0.0.0/16、172.16.0.0/12、100.64.0.0/10)に接続しようとします。
この動作は正常ですが、サーバープロバイダーがこのトラフィックを検出し、アラートを送信します。
iptablesを使用した着信ではなく、発信トラフィックのみを停止したいと思います。
これが現在の設定です。
-A OUTPUT -d 192.168.0.0/16 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 100.64.0.0/10 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 172.16.0.0/12 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 10.0.0.0/8 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
ただし、Dockerは次のルールを作成するため、これは機能しないようです。
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-ISOLATION all -- anywhere anywhere
DOCKER all -- anywhere anywhere
サービスの場合:
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:1234
ACCEPT tcp -- anywhere 172.17.0.4 tcp dpt:1234
最後に:
Chain DOCKER-ISOLATION (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
フィードバックをいただければ幸いです。
間違ったチェーンにルールを追加しています。Dockerコンテナから発信されたトラフィックは、FORWARD
チェーンではfilter
なく、テーブルのチェーンを通過しますOUTPUT
。これは、ホストコンピューターの観点からは、トラフィックはdocker0
インターフェイスから着信し、ホストコンピューターは単にフォワーダーとして機能しているためです。
インバウンドトラフィックとアウトバウンドトラフィックを区別するには、-i
および-o
オプションを使用してインターフェイスを指定します。また、uidを使用して、トラフィックがDockerコンテナーからのものであるかどうかを判別することはできません(データはローカルで発信されていないため)。着信インターフェイスをチェックするだけで十分です。
したがって、次のルールをDOCKER-ISOLATION
チェーン(FORWARD
チェーンから呼び出されている)に追加します。
-A DOCKER-ISOLATION -d 192.168.0.0/16 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 100.64.0.0/10 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 172.16.0.0/12 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 10.0.0.0/8 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
dockerdocker0
によって作成された仮想インターフェイスの名前に置き換えます。
(注:チェーンDOCKER-ISOLATION
が存在しない場合は、チェーンに直接追加してくださいFORWARD
)。
またの出力を見てiptables -vL
とiptables -t nat -vL
より良いアドレスが変換されているかを理解すること。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加