udev 영구 네트워크 규칙: 드라이버/칩셋 기반 명명된 인터페이스

udev 영구 네트워크 규칙: 드라이버/칩셋 기반 명명된 인터페이스

저는 각각 두 개의 서로 다른 무선 카드(서로 다른 칩셋을 사용하거나 서로 다른 모듈을 사용하며 하나는 rtl8187이고 다른 하나는 rt2800usb)가 있는 일련의 Raspberry Pi를 사용하여 프로젝트를 진행하고 있습니다.

현재 각 Pi에 대해 지속적인 명명 규칙이 설정되어 있으므로 새 Pi를 설정하거나 Pis 간에 무선 카드를 교환할 때 새 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.rulesRaspPi의 동일한 위치에 있다고 가정).

테스트해보지는 않았지만 일반적으로 일치하는 방식입니다.

작동한다면 이 파일을 각각의 새로운 RaspPi에 복사하세요.

답변2

장치 이름이 wan0인지 wan1인지 결정하는 요소는 Mac 주소에 따라 다르다는 점을 이미 알고 계셨기 때문에 장치 이름을 지정하는 것이 도움이 될 것이라고 생각하지 않습니다.

내가 생각할 수 있는 유일한 해결책은 매우 더러운 것입니다. 네트워크 구성의 복사본 두 개를 갖고 udev 규칙을 사용하여 필요한 네트워크 구성을 제자리에 복사하는 것입니다. (이것은 작동하지만 매우 더러워요...)

어쩌면 누군가가 더 나은 해결책을 생각할 수도 있지만, 이것을 선택하는 경우 udev 규칙에서 장치를 일치시키고 udev 끝에 +RUN=/usr/local/bin/bashscript.sh를 두는 것이 방법입니다. 규칙(권한을 잠그십시오).

내 유일한 문제는 하나의 네트워크 카드를 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

거기에서 일치하는 관련 정보를 모두 찾을 수 있을 거라 확신합니다.

관련 정보