udev 持久性網路規則:基於驅動程式/晶片組命名接口

udev 持久性網路規則:基於驅動程式/晶片組命名接口

我正在開發一個使用一系列 Raspberry Pi 的項目,每個都有兩個不同的無線卡(具有不同的晶片組/使用不同的模組,一個是 rtl8187,另一個是 rt2800usb)。

目前我已經為每個 Pi 設定了持久的命名規則,因此當我設定一個新的 Pi 或在 Pi 之間交換無線卡時,我必須去編輯它,以便新的 rtl8187 卡仍然是 wlan0 並且新的rt2800usb卡還是wlan1。

有什麼方法可以修改持久規則以根據介面使用的模組或其他內容來命名介面嗎?理想情況下,我希望能夠讓它知道我插入的 rtl8187 卡應該是 wlan0,而 rt2800usb 卡應該是 wlan1。

或者作為解決方法,有沒有辦法使用部分通配符進行 MAC 位址匹配?我擁有的相同晶片組的每張卡都具有相同的供應商 MAC 前綴。

答案1

我要嘗試的第一件事就是改變

ATTR{address}=="12:34:56:78:9A:AB"

ATTR{address}=="12:34:56:*"

/etc/udev/rules.d/70-persistent-net.rules假設它位於 RaspPi 上的相同位置)。

我沒有測試過,但這就是通常的匹配方式。

如果有效,只需將此檔案複製到每個新的 RaspPi 即可。

答案2

我不認為命名設備會有幫助,因為您已經注意到設備是 wan0 還是 wan1 的決定因素取決於 mac 位址。

我能想到的唯一解決方案是超級髒......有兩個網路配置副本並使用 udev 規則將所需的網路配置複製到位。 (這可行,但超髒......)

也許有人可以想到更好的解決方案,但如果你選擇這個,方法是在 udev 規則中匹配設備,並在 udev 規則的末尾有 +RUN=/usr/local/bin/bashscript.sh (make確保鎖定權限)。

我唯一的問題是,我不明白將一個網卡用作 wlan1 會出現什麼問題。

我相信您問題的答案不是從 wlan1 更改為 wlan0,而是弄清楚為什麼您需要...

這是我在 bash 腳本中使用的 udev 規則範例:

ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0401|0403|0405|0407|0410", ACTION=="remove", RUN+="/usr/local/bin/secdev_lock.sh"

(當我拔下安全密鑰時鎖定我的筆記型電腦螢幕)


更新:

用於調試可用的卡屬性:

SUBSYSTEM=="net", ACTION=="add", RUN+="/usr/local/bin/addnic.sh"

在 addnic.sh 中;

#!/bin/bash

env > /home/user/udev_$RANDOM.txt

我相信您會在那裡找到所有匹配的相關信息

相關內容