Docker:プライベートIPですが、他のネットワーク

Docker:プライベートIPですが、他のネットワーク

最近私はこれがドッカーに「個人的な」IPを提供できることを発見しました。

ip addr del 10.1.1.133/24 dev eth0
ip link add link eth0 dev eth0m type macvlan mode bridge
ip link set eth0m up
ip addr add 10.1.1.133/24 dev eth0m
route add default gw 10.1.1.1

私がしたコンテナに

CID=$(docker run -d ...)
pipework eth0 $CID 10.1.1.133/[email protected]

これは、ホストとDockerコンテナの両方が同じサブネット(この場合は10.1.1.0/24)にある場合は有効ですが、Dockerに別のサブネットを使用するにはどうすればよいですか?たとえば、10.2.2.0/24?

iptables迷彩を試しましたが、何も機能しません。 Dockerコンテナは外部ネットワーク(インターネット)にpingを送信または接続できません。

iptables -t nat -A POSTROUTING -m iprange --src-range 10.2.2.2-10.2.2.255 -o eth0 -j MASQUERADE

もちろん、IP転送が有効になっています。

ベストアンサー1

解決策を見つけてください。ホストはルーターとして設定し、iptables NATを有効にし、新しいIPクラスへのルーティングを有効にする必要があります。この場合、eth0mはブリッジされたネットワークです。

iptables -A FORWARD -i eth0m -o eth0m -j ACCEPT
iptables -A FORWARD -i eth0m -o eth0m  -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat  -A POSTROUTING -o eth0m -j MASQUERADE

パイプは新しいルーター(この場合は192.168.0.254)を使用する必要があります。

pipework eth0 $DOCKID 10.8.3.1/[email protected]

最後に、パスを追加する必要があります。この場合、10.8.3.0は別のIPクラスです。

route add -net 10.8.3.0 netmask 255.255.255.0  dev eth0m

おすすめ記事