零入门kubernetes网络实战-10->测试将veth-pair一端放入网络命名空间里的网络连通性测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

上一篇文章我们测试了在主网络命名空间里创建好一对veth pair后的网络联通情况

本篇文章再上一篇文章的基础上我们将veth pair的一端网卡放入到某个网络命名空间里

然后测试一下网络连通性。

1、测试环境介绍

一台centos虚拟机

# 查看操作系统版本
cat /etc/centos-release
# 内核版本
uname -a
uname -r 
# 查看网卡信息
ip a s eth0

在这里插入图片描述

2、网络拓扑结构

在这里插入图片描述

左侧是宿主机的网络命名空间右侧是ns1的网络命名空间

3、操作实战

3.1、创建veth pair

ip link add veth1 type veth peer name veth2

在这里插入图片描述

3.2、创建ns1网络命名空间

ip netns add ns1

3.3、将veth2移动到ns1空间下

ip link set veth2 netns ns1

在这里插入图片描述

3.4、分别给veth1, veth2设置IP

ip addr add 10.244.1.2/24 dev veth1

ip netns exec ns1 ip addr add 10.244.1.3/24 dev veth2

ip netns exec ns1 ip a

在这里插入图片描述

3.5、分别设置veth1,veth2为启动状态

ip link set veth1 up
ip netns exec ns1 ip link set veth2 up

在这里插入图片描述

4、测试

4.1、在主网络命名空间下测试是否能ping通veth2

在这里插入图片描述

ping 10.244.1.3 -I veth1

在这里插入图片描述

4.2、在ns1网络命名空间里测试是否能ping通主网络命名空间里的veth1网卡

在这里插入图片描述

ip netns exec ns1 ip a

ip netns exec ns1 ping 10.244.1.2

在这里插入图片描述

4.3、在ns1网络命名空间里测试是否能ping通主网络命名空间里的eth0网卡?

ip netns exec ns1 ping 10.211.55.122

在这里插入图片描述

在缺少路由的情况下也不会发送数据包出去。
也就是说veth2网卡根本没有接收到数据包。

ip netns exec ns1 tcpdump -nn -i veth2

在这里插入图片描述

因为ns1里的网段跟宿主机的网段不在一个网段里

因此需要为去往10.211.55.122的数据包添加一条路由

ip netns exec ns1 route add -net 10.211.55.0/24 dev veth2

在这里插入图片描述

再进行测试

ip netns exec ns1 ping 10.211.55.122

在这里插入图片描述

4.4、在测试一下将veth1,veth2的IP分别设置成不同的两个网段将veth1移动ns1里测试一下连通性

ip link add veth1 type veth peer name veth2
ip netns add ns1
ip link set veth1 netns ns1
ip addr add 10.244.1.2/24 dev veth2
ip netns exec ns1 ip addr add 10.244.2.3/24 dev veth1
ip link set veth2 up
ip netns exec ns1 ip link set veth1 up

在这里插入图片描述

在这里插入图片描述

看样子veth pair 要想连通必须设置为同网段。

5、提供完整的测试用例

ip link add veth1 type veth peer name veth2

ip netns add ns1

ip link set veth2 netns ns1

ip addr add 10.244.1.2/24 dev veth1

ip netns exec ns1 ip addr add 10.244.1.3/24 dev veth2

ip netns exec ns1 ip a

ip link set veth1 up
ip netns exec ns1 ip link set veth2 up

ip netns exec ns1 route add -net 10.211.55.0/24 dev veth2

测试命令

# 在主网络命名空间下去ping ns1空间里的veth2网卡
ping 10.244.1.3 -I veth1

@ 在ns1网络命名空间里去ping 宿主机网卡
ip netns exec ns1 ping 10.211.55.122

6、总结

  • 将veth pair的一端放入到某个网络命名空间一端放在在宿主机上默认情况下二者可以互相ping通可以互相通信
    • 真是怪了veth pair的两个网卡都在主命名空间时默认不能ping通
    • 现在将一端放入命名空间一端在主宿主机上确可以通。
  • 默认情况下ns里的网络空间不能跟主宿主机进行通信网络段不同。
  • 此网络拓扑情况下如何让ns1内部访问本局域网的其他节点或者如何让本局域网的其他节点去访问ns1会在下面的文章中详细介绍。

点击 下面 返回 专栏目录

<<零入门kubernetes网络实战>>技术专栏之文章目录

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s