veth和其它的网络设备都一样,一端连接的是内核协议栈
veth设备是成对出现的,另一端两个设备彼此相连
一个设备收到协议栈的数据发送请求后,会将数据发送到另一个设备上去
准备一个虚拟机(此处用vagrant)
vagrant init envimation/ubuntu-xenial
vagrant ssh
sudo ip link add veth0 type veth peer name veth1
sudo ip addr add 172.24.24.3/24 dev veth0
sudo ip link set veth0 up
sudo ip link set veth1 up
尝试
ping 172.24.24.4不通
sudo ip addr add 172.24.24.4/24 dev veth1
尝试
ping 172.24.24.4成功
流程是1:
ping构建icmp数据包,提交到协议栈
协议栈根据目标ip和路由表决定网络设备(也就是此处的veth0)
进行arp请求(从veth0出去,veth1收到)
veth1收到后因为网络设备中查找不到此ip,所以失败了
可以通过tcpdump -i veth0和tcpdump -i veth1验证