Docker:个人IP但另一个网络

Docker:个人IP但另一个网络

最近我发现这个可以给docker一个“个人”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

相关内容