У меня есть два контейнера, которые я связал вместе, поэтому трафик, поступающий в контейнер 2, сначала проходит через контейнер 1. Я установил для контейнера 2 --net = none.
Хост --- Контейнер 1 --- Контейнер 2
вот что я сделал:
CONE=$(docker run --privileged -i -t -p 801:80 CONTAINER_ID /bin/bash)
CTWO=$(docker run --privileged -i -t -p 800:80 --net=none CONTAINER_ID /bin/bash)
pipework br1 $CONE 10.1.0.1/8
pipework br1 $CTWO 10.1.0.2/8
docker exec -ti $CONE apt-get install -y iptables
docker exec -ti $CONE iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE
docker exec -ti $CTWO ip route add default via 10.1.0.1 dev eth1
docker exec -ti $CTWO ping www.google.com #PING OKAY
Итак, все работает нормально, однако с хоста я не могу пинговать контейнер 2, но возможно и наоборот.
На хосте включена переадресация IP, поэтому
cat /proc/sys/net/ipv4/ip_forward
returns 1
Это таблица маршрутизации для CONE:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.42.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Это таблица маршрутизации для CTWO:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.0.1 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth1
Это таблица маршрутизации для хоста:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
Что мне делать, чтобы пинговать контейнер 2?