在介绍veth pair之间,先看一下下面的图,
这类东西有没有见过?
如果没有见过,赶紧看看你方圆10米之内有没有?
这就是网线,最明显的特征是有两端!即,两个水晶头
一端可以链接普通的电脑,笔记本,另一端可以链接路由器,交换器等等
甚至,一端链接笔记本,另一端也可以链接笔记本都是可以的。
总之,通过这个网线,将同一网段的设备链接在了一起,或者将不同网段的设备链接在了一次。
通过这根网线实现的功能,实现了不同设备之间的数据包传输。
这根网线不分左右,没有方向。在设备上找到网口,随便找一端插入即可。
数据包就会从一端传入另一过端。
这是物理世界的网线,那么,在软件世界里,有没有类似的网线呢?
of course!
veth pair!
1、veth pair 网络设备介绍 |
Veth pair 可以被称为虚拟网线!有多种叫法。个人觉得,叫虚拟网线,更加容易理解。
虽然是虚拟网线,但不是真正的存在一根虚拟网线。
但是,确实存在成对出现的两个虚拟设备;可以认为是成对出现的两个水晶头
只要是一个水晶头接收到数据,另一个水晶头也就接收到数据了。
Veth-pair 不是一个设备,而是一对设备,用于连接两个虚拟网络设备。
2、为什么veth pair的一端接收到数据包后,在没有网线的情况下,另一端也就接收到数据包了? |
veth pair 是根据数据链路层的 MAC 地址对网络数据包进行转发的过程来实现的,本质是反转通讯数据的方向,
需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理,从而间接的完成数据的注入。
3、Veth pair的使用场景 |
veth pair 在虚拟网络设备中是作为”网线“的存在,
- 可以将不同的网络命名空间链接起来
- 将ns1命名空间和ns1命名空间链接在一起,直接进行通信
- 将虚拟网桥和多个网络命名空间链接在一起
- 将cni0网桥和ns1命名空间链接在一起
链接起来之后,就可以进行数据包的通信了。
4、操作veth pair |
创建veth pair, 设置IP,启动veth
4.1、如何创建veth pair |
ip link add veth1 type veth peer name veth2
注意,默认创建的veth pair 有MAC地址,但是,没有分配IP地址。
4.2、如何给veth pair虚拟设备分配IP、删除IP |
4.2.1、方式一:ip add add 方式 |
ip addr add 10.244.1.2/24 dev veth1
ip addr add 10.244.1.3/24 dev veth2
4.2.2、方式二:ifconfig 方式 |
ifconfig veth1 10.244.1.2/24
ifconfig veth2 10.244.1.3/24
4.3、如何启动veth pair、停止veth pair |
4.3.1、如何启动veth pair |
其实,就跟启动普通网卡是一样的
ip link set veth1 up
ip link set veth2 up
ip netns exec ns1 ip link set veth2 up
4.3.2、如何停掉veth pair |
其实,就跟操作普通网卡是一样的
ip link set veth1 down
ip link set veth2 down
ip netns exec ns1 ip link set veth2 down
4.4、如何删除虚拟网卡的IP呢? |
ip addr del 10.244.1.2/24 dev veth1
ip addr del 10.244.1.3/24 dev veth2
4.5、删除veth pair设备 |
veth1和veth2是一对veth pair
删除的时候,删除其中一个就可以了。
另外一个也会默认删除的
ip link del veth1
5、参考文章 |
kubernetes网络 – linux网络基础设施
linux的proxy_arp和arp_filter参数解释
理解linux虚拟网络设备bridge
iptables之FORWARD链(什么情况会用到FORWARD链)