gpt4 book ai didi

containers - 使用 nat 设置 docker 容器

转载 作者:行者123 更新时间:2023-12-02 17:57:02 25 4
gpt4 key购买 nike

我正在设置两个 docker 容器

     container1                 container2
| | |
eth0 eth1 |
| | eth1
docker0 docker1<----------------
|
|
internet

docker0 和 docker1 是桥梁。

我在主机和容器中都有 ip 转发到 1。
我有设置
iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE in container 1

我仍然无法从容器 2 ping 任何东西到互联网。我可以看到容器 1 的 eth1 正在接收数据包。
OS: ubuntu 13.10
docker version: 0.11.1, build fb99f99

我错过了一些配置吗?

重现步骤:
SERV=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
CLI=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
sudo pipework br1 $SERV 10.1.0.1/8
sudo pipework br1 $CLI 10.1.0.3/8

在 $SERV 中:
iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE

在 $CLI 中
禁用接口(interface) eth0。设置默认路由到 eth1 接口(interface)。

现在 ping 从 $CLI 发生在 10.1.0.1 上,但不是在 Internet 上。

最佳答案

嗯,它应该像你描述的那样工作。可能默认路由配置不正确。
这就是我所做的:

SERV=$(docker run -i --privileged -d -t debian:7.4 /bin/bash)
CLI=$(docker run --privileged -i -d -t debian:7.4 /bin/bash)

docker exec -ti $CLI ping google.de # Internet up

docker exec -ti $CLI ip link set eth0 down
docker exec -ti $CLI ping google.de # Internet down

pipework br1 $SERV 10.1.0.1/8
pipework br1 $CLI 10.1.0.2/8

docker exec -ti $SERV apt-get install -y iptables
docker exec -ti $SERV iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE
docker exec -ti $CLI ip route add default via 10.1.0.1 dev eth1
docker exec -ti $CLI ping google.de # Internet up

docker exec -ti $CLI apt-get install -y traceroute
docker exec -ti $CLI traceroute google.de

关于containers - 使用 nat 设置 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com