Linux 如何或在哪裡確定網路設備的分配?特別wlan0
是wlan1
對於無線 USB 裝置。
我前段時間插了一個TP USB無線,就分配了wlan0
。我把它去掉了。本週我插入了 Edimax USB 無線設備,它顯示為wlan1
。我今天將其取下來嘗試第二個 Edimax USB 無線設備(我買了兩個),現在它又出現了wlan2
。
我對 Unix/Linux 有足夠的了解,知道這是在某處配置的,如果我刪除未使用的配置文件,我可以使最新的 Edimax 成為wlan0
.但如何/在哪裡?
答案1
烏德夫是決定 Linux 下設備名稱的系統元件 - 主要是 下的檔案名/dev
,但也包括網路介面的名稱。
從 099 到 196 的 udev 版本都有記錄網路介面名稱的規則,並且對於同一裝置始終使用相同的編號。從 udev 174 開始,這些規則預設會被停用,但您的發行版仍然可以啟用(例如 Ubuntu 保留它們)。有些發行版提供不同的規則集。
記錄和保留介面名稱以供將來使用的腳本是
/lib/udev/rules.d/75-persistent-net-generator.rules
。它在 中編寫規則
/etc/udev/rules.d/70-persistent-net.rules
。因此,從您的 中刪除現有的wlan0
和條目,然後更改為.運行(或您找到與您的裝置相符的任何參數)以將規則重新套用到已插入的裝置。wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
答案2
自systemd
v197 起,透過引入網路設備持久命名,此問題已解決。
根據freedesktop可預測的網路介面名稱頁上,核心只是根據相關驅動程式探測名稱的順序來分配名稱:
核心應用的網路介面的經典命名方案是簡單地將以「eth0」、「eth1」等開頭的名稱指派給驅動程式偵測的所有介面。由於現代技術的驅動程式探測通常是不可預測的,這意味著一旦多個網路介面可用,名稱「eth0」、「eth1」等的分配通常就不再固定,並且很可能會發生「一次啟動時的「eth0」在下一次啟動時最終會變成「eth1」。
如果您的發行版使用 systemd,您可以使用可預測分配但可能難以使用的名稱,例如,wlp0s11
或者您可以編寫一條udev
規則來給它們一個您更舒適的名稱,例如wifi1
,基於 mac 位址...
/etc/udev/rules.d/
在名為 的檔案中包含一個檔案10-network-device.rules
:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"