【docker】dockerネットワーク-ダイレクトルーティングモード

3348 ワード

linux namespace接続の参考:http://www.cnblogs.com/iiiiher/p/8057922.html
dockerネットワーク-直接ルーティングモード
参考:https://www.yuanmas.com/info/obzmAGowzP.html
- n1   br0
ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0


- n2   br1
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1


- n1  docker
 dockerd -b br0

- n2  docker
 dockerd -b br1
tip: dockerd --help    dockerd   

- n1    
ip r a 20.1.1.0/24 via 192.168.14.133

- n2    
ip r a 10.1.1.0/24 via 192.168.14.132

- n1 n2   
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
発生した問題:
この端の容器は相手のbr 1にアクセスできますが、相手のbR 1の下の容器に訪問することはできません。https://unix.stackexchange.com/questions/125599/settings-when-using-a-bridge
システムのデフォルトはacceptです。
iptables -t filter -L
iptables -t filter -L --line-number
dockerをインストールしたら、デフォルトではforward chianがdropになりました。
解決:
iptables -P FORWARD ACCEPT
iptables FOWARD chainのデフォルトポリシーをDROPに設定することができ、pingの他のNode上のPod IPが失敗した場合、ACCEPTに手動でポリシーを設定する必要があります。
参考:http://cizixs.com/2017/02/10/network-virtualization-network-namespace
bridge間の通信を実現する
############################################

ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0

ip netns add net0
ip link add type veth
ip link set dev veth1 netns net0

ip netns exec net0 ip link set dev veth1 name eth0
ip netns exec net0 ip addr add 10.1.1.2/24 dev eth0
ip netns exec net0 ip link set dev eth0 up
ip netns exec net0 ip route add default via 10.1.1.1 dev eth0

ip link set dev veth0 master br0
ip link set dev veth0 up
ip netns exec net0 ping 10.1.1.1

############################################
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1

ip netns add net1
ip link add type veth
ip link set dev veth1 netns net1

ip netns exec net1 ip link set dev veth1 name eth0
ip netns exec net1 ip addr add 20.1.1.2/24 dev eth0
ip netns exec net1 ip link set dev eth0 up
ip netns exec net1 ip route add default via 20.1.1.1 dev eth0

ip link set dev veth0 master br1
ip link set dev veth0 up

ip netns exec net1 ping 20.1.1.1
bridge間の通信を実現する
##################### n1  ######################

ip link add br0 type bridge
ip link set dev br0 up
ip addr add 10.1.1.1/24 dev br0

ip netns add net0
ip link add type veth
ip link set dev veth1 netns net0

ip netns exec net0 ip link set dev veth1 name eth0
ip netns exec net0 ip addr add 10.1.1.2/24 dev eth0
ip netns exec net0 ip link set dev eth0 up
ip netns exec net0 ip route add default via 10.1.1.1 dev eth0

ip link set dev veth0 master br0
ip link set dev veth0 up
ip r a 20.1.1.0/24 via 192.168.14.133
ip netns exec net0 ping 10.1.1.1

######################## n2  ##################
ip link add br1 type bridge
ip link set dev br1 up
ip addr add 20.1.1.1/24 dev br1

ip netns add net1
ip link add type veth
ip link set dev veth1 netns net1

ip netns exec net1 ip link set dev veth1 name eth0
ip netns exec net1 ip addr add 20.1.1.2/24 dev eth0
ip netns exec net1 ip link set dev eth0 up
ip netns exec net1 ip route add default via 20.1.1.1 dev eth0

ip link set dev veth2 master br1
ip link set dev veth2 up
ip r a 10.1.1.0/24 via 192.168.14.132
ip netns exec net1 ping 20.1.1.1