问题来自于 ip 命令的一个官方文档的解释(http://www.policyrouting.org/...)。如下所示:
kuznet@alisa~:$ ip link ls dummy
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop
link/ether 000000000000 brd ffffffffffff
这里就不贴英文的原解释了。中文大致意思如下:
上述中数字 2 即 ifindex 为 2,唯一标识该网络接口。
我的问题场景如下
这时,我使用 docker 启动了一个容器为 test1
。在我本机中,我使用 ip link show
命令查看到的部分内容如下:
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:a0:25:e1:e1 brd ff:ff:ff:ff:ff:ff
87: veth8652f17@if86: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT group default
link/ether 6e:de:e1:98:24:a1 brd ff:ff:ff:ff:ff:ff
这里会显示一个 veth8652f17@if86
。按照刚刚贴出的文档的链接解释,这里的 @
符符号的意思为:
The interface name may also have another name or the keyword NONE appended after an "@" sign. This signifies that this device is bound to another device in a master/slave device relationship. Thus packets sent through this device are encapsulated and forwarded on via the master device.
而针对docker 的网络,大概的理解为 docker 启动一个容器,默认的网络为 bridge,即
docker0,并且会创建两个 veth 设备,连接到网桥上,一个在主机的网络命名空间中,就是上述的 veth8652f17@if86
,其 ifindex
为 87
。而另一个 veth 设备成为容器 test1
中的 eth0
,并且该设备的 ifindex
为 86
。并且此时我可以在 /var/log/sys/log
查看到一条日志如下:
eth0: renamed from veth3aa2be5
这时切换到容器 test 中,使用 ip link
命令如下所示:
root@djkb8e92667d:/# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
86: eth0@if87: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:c0:a8:00:02 brd ff:ff:ff:ff:ff:ff
这里显示的是 eth0@if87
。针对刚刚的 veth8652f17@if86
。
我是不是可以简单的理解为容器中的 eth0@if87
网络接口的 ifindex 为 86,而这里的 @if87
,表明其对应的 veth 设备为 ifindex 为 87 的设备,即刚刚的 veth8652f17@if86
。通过这样的方式来表明这两个接口是一对对应的 veth ?
对于这里的 eth0@if87
和刚刚的 veth8652f17@if86
为一对 veth 设备,并且 docker 通过其来实现与外部网络的通信与隔离。这一点很容易通过各种资料查找到相应的解释。
但是因为在容器中显示的是 eth0
,而不是 veth3aa2be5
。并且在主机的网络上也查看不到该 eth0@if87
的相关信息。。所以我该如何证明上述的结论?或者有什么办法能够让我在主机上查看到容器 test
的相关的网络信息?
。。。参见链接:https://blog.lab99.org/post/d...