Linux

如何找到可用的網路介面?

  • November 22, 2016

這是關於 linux 的,但是如果有人知道通用的 *nix 方法會很好。

我昨天啟動了一個插入了乙太網電纜的系統。“NetworkManager”沒有安裝,所以一旦它啟動,我就去尋找乙太網介面的名稱ifconfig手動啟動一個 DHCP 客戶端,但它沒有顯示任何其他內容lo.

NIC 通過 列出lspci,並載入了適當的核心驅動程序。系統通常使用wifi,我記得那個介面名稱是wlan0。當我嘗試ifconfig wlan0 up時,wlan0出現了。eth[N]但我能記住的唯一乙太網介面名稱是em[N]- 兩者都不起作用。

本文件提到了“可預測的介面名稱”,但沒有很好地用簡單的術語解釋它們可能是什麼。它確實引用了一段原始碼,這意味著在這種情況下的名稱可能是從 PCI 匯流排和插槽編號推導出來的,這似乎是一個不必要的複雜麻煩。

其他搜尋讓我相信這可能是由systemd與 一起確定的udev,但是其中有近 100 個文件,/usr/lib/udev/rules.d並且花費一個小時試圖確定在哪裡(以及是否)有一個 systemd 配置文件,這也似乎很荒謬。

很高興知道它們是可用的,而不僅僅是它們如何命名,所以我可以排除硬體問題等。是否有一種簡單的方法來查找可用網路介面的名稱在Linux上?

我知道列出所有介面的最簡單方法是

ifconfig -a

編輯

如果你在一個已經過時的系統上,你可以使用

ip link show

核心在 中按名稱列出它們/sys,分別在(例如)PCI 設備樹中——儘管如果你不知道它們從哪裡開始,在那裡找到它們並不簡單——並且通過在 中的符號連結一起列出/sys/class/net。例如:

> ls /sys/class/net
em1 lo wlp6so

另一個例子:

> ls /sys/class/net
lo p6s1 wlan0

如果你不確定哪個是哪個,你可以把它們全部放在:

ifconfig [name] up 

或者:

ip link set [name] up

然後查看ifconfig(沒有參數)列出的(相當清楚的)線索。從 Freedesktop.org 文件連結的 systemd 原始碼還指:

Two character prefixes based on the type of interface:
*   en -- ethernet
*   sl -- serial line IP (slip)
*   wl -- wlan
*   ww -- wwan

儘管在上述 ( p6s1) 的一種情況下,沒有前綴。

引用自:https://unix.stackexchange.com/questions/125400