我需要明确地并且没有“整体”猜测地在另一个网络命名空间中找到veth 端的对等网络接口。
尽管有很多文档并且在 SO 上的回答也假设网络接口的 ifindex 索引在每个主机的网络命名空间中是全局唯一的,但这在许多情况下并不成立:ifindex/iflink
是模棱两可的。甚至环回已经显示出相反的情况,在任何网络命名空间中都有一个 ifindex 为 1。此外,根据容器环境,ifindex
数字会在不同的命名空间中重用。这使得跟踪 veth 布线成为一场噩梦,特别是有很多容器和一个带有 veth peers 的主机桥都以@if3 左右结尾......
link-netnsid
是0
启动一个 Docker 容器实例,只是为了获得一个新的 veth
从主机网络命名空间连接到新容器网络命名空间对......
$ sudo docker run -it debian /bin/bash
现在,在主机网络命名空间中列出网络接口(我已经省略了对这个问题不感兴趣的那些接口):
$ ip链接显示 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00 ... 4: docker0: mtu 1500 qdisc noqueue state UP mode DEFAULT group default 链接/以太 …