我正在嘗試尋找資訊來了解為什麼網路介面名稱會有一個 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。