mac 上学习k8s系列(40)虚拟网桥
接着上一讲mac 上学习k8s系列(39)netns veth我们继续网络空间的学习,上一讲我们介绍了两个网络空间之间的通行可以借助veth pair,那么多个网络空间之间如何通信呢?为了简化网络拓扑结构,网桥应运而生。首先我们在eden网络空间创建一个网桥设备
代码语言:javascript复制bash-5.0# ip link add wangpo type bridge查看下,多了个网桥设备
代码语言:javascript复制bash-5.0# ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
6: wangpo:
link/ether 22:01:ca:58:3d:59 brd ff:ff:ff:ff:ff:ff创建一个veth pair,一端接到网桥wangpo上,一端接到网络空间ximenqin,首先创建veth pair
代码语言:javascript复制bash-5.0# ip link add wp2xmq type veth peer name xmq2wp代码语言:javascript复制bash-5.0# ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
6: wangpo:
link/ether 22:01:ca:58:3d:59 brd ff:ff:ff:ff:ff:ff
7: xmq2wp@wp2xmq:
link/ether be:27:e3:04:85:13 brd ff:ff:ff:ff:ff:ff
8: wp2xmq@xmq2wp:
link/ether d2:98:28:54:86:aa brd ff:ff:ff:ff:ff:ff一端放入ximenqin的网络空间
代码语言:javascript复制bash-5.0# ip link set xmq2wp netns ximenqin代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
5: ximenqin@if4:
link/ether 82:4f:01:dd:cf:d3 brd ff:ff:ff:ff:ff:ff link-netns panjinlian
7: xmq2wp@if8:
link/ether be:27:e3:04:85:13 brd ff:ff:ff:ff:ff:ff link-netns eden另一端放入网桥
代码语言:javascript复制bash-5.0# ip link set wp2xmq master wangpo查看eden的网络空间已经veth pair的一端已经移走了
代码语言:javascript复制bash-5.0# ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
6: wangpo:
link/ether d2:98:28:54:86:aa brd ff:ff:ff:ff:ff:ff
8: wp2xmq@if7:
link/ether d2:98:28:54:86:aa brd ff:ff:ff:ff:ff:ff link-netns ximenqin查看网桥,发现veth 的另一端已经挂载成功了
代码语言:javascript复制bash-5.0# bridge link
8: wp2xmq@if7:
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip addr add dev xmq2wp 192.168.187.96/24查看下绑定结果
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
5: ximenqin@if4:
link/ether 82:4f:01:dd:cf:d3 brd ff:ff:ff:ff:ff:ff link-netns panjinlian
inet 192.168.188.96/24 scope global ximenqin
valid_lft forever preferred_lft forever
inet6 fe80::804f:1ff:fedd:cfd3/64 scope link
valid_lft forever preferred_lft forever
7: xmq2wp@if8:
link/ether be:27:e3:04:85:13 brd ff:ff:ff:ff:ff:ff link-netns eden
inet 192.168.187.96/24 scope global xmq2wp
valid_lft forever preferred_lft forever为了和上一讲的地址192.168.188.96/24 进行区别我们绑定了 192.168.187.96/24
启动设备
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip link set xmq2wp up查看状态LOWERLAYERDOWN
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
5: ximenqin@if4:
link/ether 82:4f:01:dd:cf:d3 brd ff:ff:ff:ff:ff:ff link-netns panjinlian
inet 192.168.188.96/24 scope global ximenqin
valid_lft forever preferred_lft forever
inet6 fe80::804f:1ff:fedd:cfd3/64 scope link
valid_lft forever preferred_lft forever
7: xmq2wp@if8:
link/ether be:27:e3:04:85:13 brd ff:ff:ff:ff:ff:ff link-netns eden
inet 192.168.187.96/24 scope global xmq2wp
valid_lft forever preferred_lft forever把veth另一端网桥上的设备也起来
代码语言:javascript复制bash-5.0# ip link set wp2xmq up查看状态已经up了
代码语言:javascript复制bash-5.0# bridge link
8: wp2xmq@if7:
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
5: ximenqin@if4:
link/ether 82:4f:01:dd:cf:d3 brd ff:ff:ff:ff:ff:ff link-netns panjinlian
inet 192.168.188.96/24 scope global ximenqin
valid_lft forever preferred_lft forever
inet6 fe80::804f:1ff:fedd:cfd3/64 scope link
valid_lft forever preferred_lft forever
7: xmq2wp@if8:
link/ether be:27:e3:04:85:13 brd ff:ff:ff:ff:ff:ff link-netns eden
inet 192.168.187.96/24 scope global xmq2wp
valid_lft forever preferred_lft forever
inet6 fe80::bc27:e3ff:fe04:8513/64 scope link
valid_lft forever preferred_lft forever同样操作另一个veth pair
代码语言:javascript复制bash-5.0# ip link add wp2pjl type veth peer name pjl2wp代码语言:javascript复制bash-5.0# ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
6: wangpo:
link/ether d2:98:28:54:86:aa brd ff:ff:ff:ff:ff:ff
8: wp2xmq@if7:
link/ether d2:98:28:54:86:aa brd ff:ff:ff:ff:ff:ff link-netns ximenqin
9: pjl2wp@wp2pjl:
link/ether 1e:28:80:97:65:8a brd ff:ff:ff:ff:ff:ff
10: wp2pjl@pjl2wp:
link/ether fa:c8:3e:62:73:4d brd ff:ff:ff:ff:ff:ff把设备放入panjinlian的网络空间
代码语言:javascript复制bash-5.0# ip link set pjl2wp netns panjinlian代码语言:javascript复制bash-5.0# ip netns exec panjinlian ip link
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
4: panjinlian@if5:
link/ether 56:74:2e:4e:4d:48 brd ff:ff:ff:ff:ff:ff link-netns ximenqin
9: pjl2wp@if10:
link/ether 1e:28:80:97:65:8a brd ff:ff:ff:ff:ff:ff link-netns eden另一端绑定大网桥
代码语言:javascript复制bash-5.0# ip link set wp2pjl master wangpo查看网桥上的设备有两个veth的一端
代码语言:javascript复制bash-5.0# bridge link
8: wp2xmq@if7:
10: wp2pjl@if9:
代码语言:javascript复制bash-5.0# ip netns exec panjinlian ip addr add dev pjl2wp 192.168.187.69/24代码语言:javascript复制bash-5.0# ip netns exec panjinlian ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
4: panjinlian@if5:
link/ether 56:74:2e:4e:4d:48 brd ff:ff:ff:ff:ff:ff link-netns ximenqin
inet 192.168.188.69/4 scope global panjinlian
valid_lft forever preferred_lft forever
inet6 fe80::5474:2eff:fe4e:4d48/64 scope link
valid_lft forever preferred_lft forever
9: pjl2wp@if10:
link/ether 1e:28:80:97:65:8a brd ff:ff:ff:ff:ff:ff link-netns eden
inet 192.168.187.69/24 scope global pjl2wp
valid_lft forever preferred_lft forever启动
代码语言:javascript复制bash-5.0# ip netns exec panjinlian ip link set pjl2wp up查看状态
代码语言:javascript复制bash-5.0# ip netns exec panjinlian ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE:
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE:
link/tunnel6 :: brd ::
4: panjinlian@if5:
link/ether 56:74:2e:4e:4d:48 brd ff:ff:ff:ff:ff:ff link-netns ximenqin
inet 192.168.188.69/4 scope global panjinlian
valid_lft forever preferred_lft forever
inet6 fe80::5474:2eff:fe4e:4d48/64 scope link
valid_lft forever preferred_lft forever
9: pjl2wp@if10:
link/ether 1e:28:80:97:65:8a brd ff:ff:ff:ff:ff:ff link-netns eden
inet 192.168.187.69/24 scope global pjl2wp
valid_lft forever preferred_lft forever启动网桥上的veth
代码语言:javascript复制bash-5.0# ip link set wp2pjl up代码语言:javascript复制bash-5.0# bridge link
8: wp2xmq@if7:
10: wp2pjl@if9:
代码语言:javascript复制bash-5.0# ip netns exec ximenqin ping -c 3 192.168.187.69
PING 192.168.187.69 (192.168.187.69): 56 data bytes
--- 192.168.187.69 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss原来我们网桥本身没有起来
代码语言:javascript复制bash-5.0# ip link set wangpo up
bash-5.0# bridge link
8: wp2xmq@if7:
10: wp2pjl@if9:
代码语言:javascript复制bash-5.0# ip netns exec panjinlian ping -c 3 192.168.187.96
PING 192.168.187.96 (192.168.187.96): 56 data bytes
64 bytes from 192.168.187.96: seq=0 ttl=64 time=0.065 ms
64 bytes from 192.168.187.96: seq=1 ttl=64 time=0.081 ms
64 bytes from 192.168.187.96: seq=2 ttl=64 time=0.073 ms
--- 192.168.187.96 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.065/0.073/0.081 ms
bash-5.0# ip netns exec panjinlian ping -c 3 192.168.187.69
PING 192.168.187.69 (192.168.187.69): 56 data bytes
--- 192.168.187.69 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss代码语言:javascript复制bash-5.0# ip netns exec ximenqin ping -c 3 192.168.187.69
PING 192.168.187.69 (192.168.187.69): 56 data bytes
64 bytes from 192.168.187.69: seq=0 ttl=64 time=0.152 ms
64 bytes from 192.168.187.69: seq=1 ttl=64 time=0.071 ms
64 bytes from 192.168.187.69: seq=2 ttl=64 time=0.098 ms
--- 192.168.187.69 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.071/0.107/0.152 ms