网络接口名称带有 at 符号 - 它是什么?

网络接口名称带有 at 符号 - 它是什么?

我正在尝试寻找信息来了解为什么网络接口名称会有一个 at 符号,但到目前为止我得到的结果中有太多噪音(我缺乏正确的术语来搜索)

我在 Ubuntu 主机上有一个 LXC 容器。在容器内我运行并得到:

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:37:a0:7a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.195/24 brd 10.0.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe37:a07a/64 scope link 
       valid_lft forever preferred_lft forever

注意eth0@if10

@部分被称为/指的是什么?

在主机上没有这样的if10,我拥有的另一个容器有一个eth0@if8- 我必须假设这是 LXC/容器以某种方式处理网络转换的一部分,但我以前没有注意到这个存在,并且想知道它是否是桥接的补充,这可能存在于其他场景中?

答案1

eth0@if10方法:

  • 您的网络接口的命名仍然很简单eth0,网络工具和应用程序只能引用这个名称,没有@附录。 (作为旁注,这很可能是 veth 对等点,但名称不需要反映这一点。)
  • @if10表示:eth0连接到索引为 10(十进制)的某个(其他)网络接口。由于还link-netnsid 0显示了另一个网络接口位于另一个网络命名空间(一种虚拟 IP 堆栈)中,可能是根(也称为主机)网络命名空间。

如果您ip link show在主机中使用,而不是在容器中使用,那么其中列出的网络接口之一应该有一个@9附录;接口名称可能以veth....该接口是eth0@10您询问的接口的对等接口。 Veth 接口成对相互连接,就像虚拟电缆一样。

因此,@...是该工具创建的附录ip,它不是 Linux 网络接口名称的一部分。 @后面的数字指的是另一个网络接口,其索引号显示在@后面。索引号打印在网络接口名称之前,例如在 中9: eth0@if10。对等网络接口可以位于不同的网络命名空间中。

不幸的是,找到正确的网络命名空间link-netnsid ..相当复杂,请参阅如何查找 veth 对等点的网络命名空间 ifindex

2023 年更新:西门子现已发布边缘鲨作为 OSS,它提供了一个漂亮的图形 Web UI,呈现容器、主机等中网络接口的关系。

答案2

检查 /etc/udev/rules.d 或 /lib/udev/rules.d 下是否有类似 70-persistent-net.rules 的文件。应该有一行包含网络接口名称和 MAC 地址。更改它并重新启动应该重命名 NIC。

相关内容