MAC 주소에 의존하는 대신 UDEV 구성에서 상위 속성 "직렬"을 사용하여 LAN 인터페이스에 다른 이름을 할당합니다.

MAC 주소에 의존하는 대신 UDEV 구성에서 상위 속성 "직렬"을 사용하여 LAN 인터페이스에 다른 이름을 할당합니다.

이 커널 문제가 해결을 기다리고 있고 MAC 주소가 이 USB3 LAN 어댑터에 무작위로 할당되었다는 점을 고려하면 다음과 같습니다.Debian 12 - 재부팅할 때마다 갑자기 USB3 Lan 어댑터에 임의의 MAC 주소가 할당됩니다.

맞춤설정 이외의 해결 방법을 찾으려고 노력 중입니다.패치를 사용하여 커널을 다시 컴파일또는이전 커널 버전 사용.

기본적으로 모든 인터페이스 구성은 udev 구성 파일을 사용하여 얻은 사용자 정의 이름을 기반으로 합니다.70-지속성-network.rules(일부 인터페이스의 이름은 MAC 주소를 기준으로 변경되었지만 위의 버그로 인해 더 이상 작동하지 않습니다.)

udev 파일의 구문을 살펴보면/etc/udev/rules.d/70-pertant-net.rules

내 conf에는 다음과 같은 다른 줄이 있습니다.

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{address}="00:....", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

이제 다음 명령을 호출하여 찾은 내용은 다음과 같습니다.

udevadm 정보 -a -p /sys/class/net/eth1

eth2, eth3, eth4, eth5와 동일합니다...

인터페이스를 고유하게 식별하는 흥미로운 ATTR이 있습니다.

이것은 "직렬"이라는 속성이지만 eth1, eth2에는 적용되지 않지만 직계 상위 개발자에게는 적용됩니다.

사실, 순서는 먼저 말한다기기를 보는 중...하지만 그 말 이후상위 기기 보기...

그래서 다음과 같이 할 수 있는지 궁금합니다.

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{parent>serial}="00000003", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

MAC 주소 기반 구성이 아닌 상위 직렬을 사용하여 LAN 인터페이스의 이름을 바꿉니다.

그러한 구문이 존재합니까?

감사해요

답변1

이 글에서 답을 찾은 것 같습니다.USB 장치는 어떻게 고유하게 차별화됩니까?

다음 참고 자료를 읽어보세요.https://www.reactivated.net/writing_udev_rules.html

다음을 사용하여 단일 상위 수준과 실제 수준을 혼합할 수 있는 것 같습니다.ATTRS, 그래서 사용ATTRS{시리즈}바꾸다ATTR{주소}제공된 일련번호를 사용하세요.udevadm 정보 -a -p /sys/class/net/eth1일을 하세요.

예:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRS{serial}=="00000000000094", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan1"

그래서 나는 eeprom의 Mac을 읽을 수 있도록 데비안 개발자가 업스트림 채널에 패치를 넣을 때까지 기다리는 동안 최신 Linux 커널을 사용하도록 되돌렸습니다. 현재는 해결 방법이지만 신뢰할 수 있는 방법입니다.

유일하게 흥미로운 부분은 장치에 케이블이 연결되지 않은 경우 제 경우에는 lan1과 eth0이 모두 나타나고 lan1이 활성화되어 "이상하게" 올바른 mac 주소를 가져오는 반면 eth0은 여전히 ​​임의의 mac 주소 1에 있다는 것입니다.

편집: 이것은 일부 장치가 동일한 시퀀스 ---_(ツ)_/---를 공유한다는 것을 발견할 때까지 작동했습니다. 그래서 어댑터를 이동하지 않고 항상 제자리에 유지하기 때문에 USB 루트 버스 번호와 장치 번호를 직접 사용하여 어댑터를 고유하게 식별하기 시작했습니다. . 이 질문을 확인하세요:udev 규칙에서 USB 네트워크 카드 주소의 USB 경로를 사용하여 MAC 주소 대신 인터페이스 이름을 할당합니다.

관련 정보