查找虚拟设备对对端位置

主要依赖两个文件,这两个文件在宿主机和容器内都有

1
2
3
4
5
# 某虚拟设备对在`当前`机器 / 容器的ID编号
/sys/devices/virtual/net/***/ifindex

# 某虚拟设备对在`对方`机器 / 容器的ID编号
/sys/devices/virtual/net/***/iflink

以虚拟设备vethdedb37c为例:

ip link show vethdedb37c显示内容14: vethdedb37c@if13:...14表示当前机器的设备 ID,@if13中的13是对端的 ID。

docker ps -q | xargs -t -I {} docker exec {} sh -c "find /sys -name iflink | xargs grep -w 14"

查找所有容器,看谁的iflink值为14

定位到虚拟设备另一端在容器0a469babdbc9

也可以用ethtool -S vethdedb37c看到对端的 ID 是13

命令解释:xargs