インターフェイスからDockerコンテナへのインバウンドトラフィックの転送

インターフェイスからDockerコンテナへのインバウンドトラフィックの転送

192.168.72.0/28自分のコンピュータにアドレスがあり、モードで実行されているのとeth0同じコンピュータで実行されているコンテナにトラフィックを転送する必要があります。172.7.0.4bridge

ルーティングルールを追加してみました。

ip route add 192.168.72.0/28 via 172.17.0.4

インターフェイスではトラフィックを表示できますが、eth0Dockerコンテナのインターフェイスでは表示できません。

DNATも試してみたが運がなかった。

iptables -t nat -I PREROUTING -i eth0 -s 192.168.72.0/28 -j DNAT --to-destination 172.17.0.4

私は何を見逃していますか?

問題は、コンテナがブリッジで実行されており、非標準名を持つネットワークインターフェイスがあることです。この状況では、通常どのようなアプローチが使用されますか?

答え1

/etc/iproute2/rf_tables追加の下に新しいルーティングテーブルを作成します。2 connect

次に、次のコマンドを実行します。

ip rule add from 192.168.72.0/28 table connect
ip route add default via 172.17.0.4 table connect

172.17.0.4DockerコンテナのIPはどこにありますか?あなたの場合は異なる場合があります。

iptablesだとしたら今ルールに従うべき時

iptables -A INPUT -s 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -d 192.168.72.0/28 -j ACCEPT
iptables -A FORWARD -s 192.168.72.0/28 -j ACCEPT
iptables -A OUTPUT -d 192.168.72.0/28 -j ACCEPT

この時点で、すべてのトラフィックはDockerコンテナを通過し、正常に動作します。

関連情報