Linux 多 ip docker 指定出口问题

333 天前
 fangwenxue
ifconfig 

主 Ip
ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
        inet 10.168.0.7  netmask 255.255.255.255  broadcast 10.168.0.7

副 ip
ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1460
        inet 10.120.0.5  netmask 255.255.255.255  broadcast 10.120.0.5
        
配置路由

echo "1 rt1" | sudo tee -a /etc/iproute2/rt_tables
ip route add 10.120.0.1 src 10.120.0.5 dev ens5 table rt1
ip route add default via 10.120.0.1 dev ens5 table rt1
ip rule add from 10.120.0.5/20 table rt1
ip rule add to 10.120.0.5/20 table rt1


docker network create network1 --driver bridge --subnet 192.168.33.0/24
docker network create network2 --driver bridge --subnet 192.168.34.0/24

iptables -t nat -I POSTROUTING -s 192.168.33.0/24 -j SNAT --to-source 10.168.0.7
iptables -t nat -I POSTROUTING -s 192.168.34.0/24 -j SNAT --to-source 10.120.0.5

docker run -d --network network1 --name tm1 <Container Name>
docker run -d --network network2 --name tm2 <Container Name>

tm1 容器网络正常 tm2 容器无法访问网络

551 次点击
所在节点    问与答
2 条回复
ftfunjth
333 天前
echo "1 rt1" | sudo tee -a /etc/iproute2/rt_tables
echo "2 rt2" | sudo tee -a /etc/iproute2/rt_tables

ip rule add from 192.168.33.0/24 table rt1
ip rule add from 192.168.34.0/24 table rt2

ip route add default via 10.168.0.7 ens4 table rt1
ip route add default via 10.120.0.5 ens5 table rt2

docker network create network1 --driver bridge --subnet 192.168.33.0/24
docker network create network2 --driver bridge --subnet 192.168.34.0/24

docker run -d --network network1 --name tm1 <Container Name>
docker run -d --network network2 --name tm2 <Container Name>
fangwenxue
332 天前
@ftfunjth 不好使

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/946040

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX