如何找到可用的網路介面?
這是關於 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
) 的一種情況下,沒有前綴。