简介
主要描述veth
网卡的使用,下一篇再分析veth
网卡的驱动代码。veth
网卡的特点,是成对出现的,一端连着内核网络协议栈,一端连着另一个veth
网卡。从这个特点可知此网卡只用于本机通信。
过程
用ip
命令创建一对veth
,然后查看
ip link add veth0 type veth peer name veth1
ip link show
分别给网卡配置ip
,并up
网卡
ip addr add 192.168.1.1/24 dev veth0
ip addr add 192.168.1.2/24 dev veth1
ip link set veth0 up
ip link set veth1 up
这时候用veth0
去ping
另一端veth1
,发现ping
不通
ping 192.168.1.2 -I veth0
而且可以发现这两网卡的收发包数是相反的
这时候各自网卡抓包查看
tcpdump -i veth0 -w veth0before.pcap &
tcpdump -i veth1 -w veth1before.pcap &
打开veth0
的抓包结果,可以看到veth0
发送的arp
请求无人回应
而veth1
的抓包结果,跟veth0
一模一样。不过veth1
并没有回应这个arp
请求。
关掉反向过滤rp_filter
,该模块会检查IP
包是否符合要求,否则会过滤掉
打开accept_local
,接受本机IP
数据包
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/veth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/veth1/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/veth0/accept_local
echo 1 > /proc/sys/net/ipv4/conf/veth1/accept_local
这个时候就能ping
通了
这个时候抓包看看
tcpdump -i veth0 -w veth0after.pcap &
tcpdump -i veth1 -w veth1after.pcap &
veth0
网卡抓到的包,只收到了veth1
的arp rely
,但是并没有icmp echo
而从veth1
网卡抓到的包,竟然跟veth0
的一模一样
但是结果显示是ping
得通的,那icmp rely
的包从哪里来的?猜测是从lo
网卡来的,对lo
网卡进行抓包
tcpdump -i lo -w veth_and_lo.pcap &
结果icmp rely
真的就是lo
网卡发出来的!!但是这里又解释不通为啥veth0
能收到veth1
发出的arp rely
的包呢???
如果把lo
网卡down
掉,那还能ping
通吗,veth1
会回复veth0
网卡arp rely
包吗?
先把网卡down
掉
然后ping
,果然还是不通
tcpdump -i veth0 -w veth0arp.pcap &
分析抓包结果,可以看到arp rely
还是有的,只是没有ping rely
包了
不是很理解,等下一篇分析下veth
网卡驱动再看看。不过在网上查到一个博客,貌似在分析这个问题。
链接
FEATURED TAGS
Ubuntu
markdown
stm32
OSDK
飞控
串口
Jscope
C
C++
bin
J-Flash
字符串
指针数组
malloc
vscode
svg
png
github
python
CMake
CMakeLists
Linux
拷贝构造函数
GIF
录屏
docker
操作系统
make
Makefile
文件操作
DSP
CCS
SQL
MySQL
shell
bochs
计算机网络
win10
SMTP
Socket
iOS
uxplay
投屏
证书错误
apt
nodesource
ELF
Typora
图床
fossil
sql
git
SecureCRT
windows
cygwin
blog
alsa
alsa-utils
alsa-lib
音频
USB
链接文件
内存
mmap
tcpdump
交叉编译
网络
防火墙
crontab
bond
Linux性能
udev
linux
pcie
wsl2
MMIO
wsl
qemu
raspi4
gdb
ssh
tun
tap
ifconfig
打印
gmac
phy
vim
组播
rock3a
win11
usb
sd
ubuntu
iptables
netfilter
wifi
veth
ipv6
wireshark
radvd
dhcpv6
dhcpv4
网络命名空间
br虚拟网卡
NDP
emmc
存储
raspi4b
baremental
jtag
buildroot
rootfs
ext4
调试
uboot
dropbear
raspi
ebpf
uart
baremetal
kernel
bringup
libbpf