《零入门kubernetes网络实战》视频专栏地址
https://www.ixigua.com/7193641905282875942
本篇文章视频地址(稍后上传)
上一篇文章,我们分享了使用虚拟网桥来连接同网段的不同网络命名空间下的通信情况。
那么,本篇文章,
我们想测试一下,
使用虚拟网桥能不能连接不同网段的不同网络命名空间之间的通信状况?
1、测试环境介绍 |
一台centos虚拟机
# 查看操作系统版本
cat /etc/centos-release
# 内核版本
uname -a
uname -r
# 查看网卡信息
ip a s eth0
2、网络拓扑 |
3、操作实战 |
3.1、具体操作命令 |
brctl addbr br0
ip link set br0 up
ip netns add ns1
ip netns add ns2
ip link add veth1a type veth peer name veth1b
ip link add veth2a type veth peer name veth2b
ip link set veth1a netns ns1
ip link set veth2a netns ns2
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set veth1a up
ip netns exec ns1 ip addr add 10.244.1.2/24 dev veth1a
ip netns exec ns2 ip link set lo up
ip netns exec ns2 ip link set veth2a up
ip netns exec ns2 ip addr add 10.244.2.4/24 dev veth2a
ip link set veth1b up
ip link set veth2b up
brctl addif br0 veth1b
brctl addif br0 veth2b
3.2、查看当前的网络相关环境 |
3.2.1、查看一下,ns1的ARP状况 |
ip netns exec ns1 arp -n
3.2.2、查看一下,ns1的路由情况 |
ip netns exec ns1 route -n
4、测试 |
测试之前,先抓包
4.1、对ns1命名空间内的veth1a进行抓包 |
ip netns exec ns1 tcpdump -nn -i veth1a
ip netns exec ns1 tcpdump -nn -i veth1a -w icmp-veth1a.pcap
4.2、对veth1b进行抓包(其实,就是对网桥br0进行抓包) |
打开第1个xshell终端,对veth1b进行抓包
tcpdump -nn -i veth1b
打开第2个xshell终端,对veth1b进行抓包,并且将抓取的包,存储到icmp.pcap里;
通过这种方式,即可以观察数据包抓取情况,又可以将抓取到的数据包,存储到文件里。
tcpdump -nn -i veth1b -w icmp-veth1b.pcap
开始测试
ip netns exec ns1 ping 10.244.2.4 -c 1
4.3、添加路由 |
根据上面的报错,以及ns1,ns2的路由情况,
需要给ns1,ns2添加路由。
4.3.1、方案一:给ns1,ns2添加默认路由 |
ip netns exec ns1 ip route add default dev veth1a
ip netns exec ns2 ip route add default dev veth2a
4.3.2、方案二:明确给ns1,ns2添加指定的路由 |
ip netns exec ns1 ip route add 10.244.2.0/24 dev veth1a
ip netns exec ns2 ip route add 10.244.1.0/24 dev veth2a
4.4、整个传输过程,数据包的报文状况? |
根据抓取到的数据包状况,进行分析
左侧第1列,表示,数据包传输时,经过的虚拟网络设备; 请求过程。
中间,表示,数据包传输时,主要报文内容,请求过程。
右侧第1列,表示,反馈数据包的主要报文内容,反馈过程。
主要观察一下
虽然在ns1我们访问的目的地址经过了跨网段,但是,网桥依旧给转发过去了。
仅仅使用了网桥的二层转发功能。
5、提供一下,完整的测试命令 |
5.1、创建网络拓扑命令 |
brctl addbr br0
ip link set br0 up
ip netns add ns1
ip netns add ns2
ip link add veth1a type veth peer name veth1b
ip link add veth2a type veth peer name veth2b
ip link set veth1a netns ns1
ip link set veth2a netns ns2
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set veth1a up
ip netns exec ns1 ip addr add 10.244.1.2/24 dev veth1a
ip netns exec ns2 ip link set lo up
ip netns exec ns2 ip link set veth2a up
ip netns exec ns2 ip addr add 10.244.2.4/24 dev veth2a
ip link set veth1b up
ip link set veth2b up
brctl addif br0 veth1b
brctl addif br0 veth2b
ip netns exec ns1 ip route add 10.244.2.0/24 dev veth1a
ip netns exec ns2 ip route add 10.244.1.0/24 dev veth2a
5.2、测试命令 |
ip netns exec ns1 ping 10.244.2.4 -c 1
6、总结 |
- 本文模拟了使用了虚拟网桥链接不同网段的多个网络命名空间下的通信情况。
- 默认情况下,是不能通信的
- 要想通信的话,需要添加默认路由。
- 实际中,一般不会这么用。
<<零入门kubernetes网络实战>>技术专栏之文章目录