Wifi

udev 持久網路規則:基於驅動程序/晶片組命名介面

  • October 25, 2016

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

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

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

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

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

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

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

in /etc/udev/rules.d/70-persistent-net.rules(假設它在你的 RaspPi 上的同一個地方)。

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

如果可行,只需將此文件複製到每個新的 RaspPi。

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

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

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

我唯一的問題是,我不明白將一個 nic 作為 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

我相信你會在那裡找到所有相關的資訊來匹配

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