
Debian 6.1.0-20 커널 업데이트 후 usb3 nic 인터페이스 문제의 4부.
여기에서 다른 게시물을 참조하세요.
- Debian 12 - 재부팅할 때마다 갑자기 USB3 Lan 어댑터에 무작위 Mac 주소가 할당됩니다.
- UDEV 구성에서 상위 속성 "직렬"을 사용하여 Mac 주소에 의존하는 대신 LAN 인터페이스에 다른 이름을 할당합니다.
- mac 주소 대신 인터페이스 이름을 할당하려면 udev 규칙에서 usb nic 주소의 usb 경로를 사용하십시오.
추상적인: 최근 커널 6.1.0-20의 데비안 업데이트로 인해 usb-lan nics EEPROM 내부에 저장된 mac 주소 인식이 중단되어 이전에 작성된 모든 udev 규칙이ATTR{주소}(mac 주소를 기준으로 인터페이스 이름 변경)이 더 이상 작동하지 않습니다.
이제 이 게시물을 작성하는 이유는 다음과 같습니다.
- 사용하여ATTRS{연속}작동했지만 동일한 "직렬" 속성을 공유하는 어댑터 6개 중 3개가 있으므로 어느 것이 어느 것인지 결정할 수 없습니다.
- 이번에는 USB를 사용해 보았습니다.ATTRS{버스 번호}그리고ATTRS{devnum}그러나 나머지 3개의 인터페이스를 구체적으로 식별하려면 이 값이 안정적이지 않고 주 AC 전류를 제거했다가 다시 배치하여 수시로 변경되는 것 같습니다.
따라서 위의 솔루션 중 어느 것도 실제로 최종 문제를 해결하지 못했습니다.
그러나 다음과 같은 명령을 사용하여 eth 인터페이스를 내려놓고 위로 올리면(또는 위로만) 보이는 것 같습니다.
ip link set dev eth0 down
ip link set dev eth0 up
eth0(일명 usb3 lan 어댑터)은 EEPROM에 저장된 올바른 Mac 주소를 다시 읽습니다.
이 시점에서 내 유일한 생각은 다음과 같습니다.
- 올바른 Mac 주소를 얻고 udev가 규칙을 다시 다시 적용하도록 모든 인터페이스를 내려 놓거나 위로 올릴 수 있습니까? 아니면 부팅 시 한 번만 발생하는 일입니까? 가능하다면, eth를 0에서 10까지 내려놓고 -> up한 다음 udev를 다시 불러와서 인터페이스 이름을 바꿀 수 있는 스크립트를 작성하는 데 도움을 주실 수 있나요?
또는...
- 인터페이스가 이미 원래의 Mac 주소를 되찾았을 때 udev가 호출되는 기본 시간 전에 ETH를 다운/업으로 새로 고칠 수 있으며 이 경우 udev가 작업을 수행해야 합니다.
지난번 @AB에서 제안하셨던 RUN+= 솔루션이 이것과 관련이 있나요?
답변1
설명
현재 상태를 수정하기 위해 OP의 아이디어에 따라 단일udev규칙:
다음 조건이 모두 충족되는 경우에만:
- 첨가
- 네트워크 장치
- 운전자와 함께
ax88179_178a
- 임의의 MAC 주소로 생성됨(
addr_assign_type=1
)
할 것이다:
인터페이스를 UP으로 설정합니다(따라서 드라이버가 영구 MAC 주소 속성을 검색하도록 함).
다시 DOWN으로 설정합니다(새로 추가된 인터페이스의 예상 상태입니다).
이제 인터페이스가 영구 MAC 주소(
addr_assign_type=0
)를 검색한 것으로 확인되면 인터페이스 추가를 다시 트리거합니다.... 따라서 인터페이스의 이름을 적절하게 변경하여 새로운 라운드를 트리거합니다. (예: 다른 내용이 없는 경우 일반적으로 USB 네트워크 인터페이스의 이름은 MAC 주소에서 로 변경됩니다
enx...
.)
규칙 및 활성화
우선순위가 충분히 낮은 규칙을 만듭니다(저는 40을 선택했습니다).
/etc/udev/rules.d/40-local-net-ax88179_178a.rules
:
ACTION=="add", SUBSYSTEM=="net", ATTR{addr_assign_type}=="1", DRIVERS=="ax88179_178a", \
RUN="/bin/ip link set %k up", RUN+="/bin/ip link set %k down", \
RUN+="/bin/udevadm trigger -s net -a addr_assign_type=0 -p INTERFACE=%k -c add"
그런 다음 처음에만 다음 중 하나를 수행합니다(더 무거운 효과부터 가장 가벼운 효과까지).
재부팅
또는 다시 시작
udev
:systemctl restart udev
USB 장치를 분리하거나 다시 연결하세요.
또는 드라이버를 다시 로드하세요.
rmmod ax88179_178a modprobe ax88179_178a
또는 수정이 필요한 인터페이스에서만 새 규칙을 인위적으로 트리거합니다.
udevadm trigger -v -s net -p ID_NET_DRIVER=ax88179_178a -a addr_assign_type=1 -c add
인터페이스가 이미 활성화된 경우(예: 다음과 같은 네트워킹 도구에 의해)네트워크매니저), MAC 주소 유형을 확인하지 않고 다음 작업만 수행해야 할 수도 있습니다.
udevadm trigger -v -s net -p ID_NET_DRIVER=ax88179_178a -c add
추가 참고 사항
이는 결국 이러한 장치 재설정이 발생하지 않도록 패치 이전과 동일한 수의 장치 재설정을 갖게 됩니다. 인터페이스가 이러한 재설정을 트리거하는 추가 UP(다음 DOWN)을 가져오기 때문입니다.
따라서 커널을 컴파일할 때 패치를 되돌리는 것이 여전히 더 간단합니다. SecureBoot가 필요하고 결과 커널 모듈에 서명할 수 없는 경우 이 해결 방법이 유용합니다.
실제 세 번째 드라이버 패치는 여전히 환영받을 것입니다.
실행 명령
첫 번째 RUN 명령을 사용해야 합니다.
두 번째 RUN 명령은 NIC를 적절하게 처리하는 커널 드라이버로 실행할 때와 동일한 결과(DOWN 상태에 추가된 인터페이스)를 갖는 데 사용되어야 합니다. 나중에 네트워킹 도구가 이에 대처할 수 있다면 하나의 장치 재설정을 아끼지 않고 DOWN으로 설정하지 않고 UP으로 두는 것을 고려할 수 있습니다.
마지막 RUN 명령은 건너뛸 수 있습니다. MAC 주소에만 의존하는 이후 네트워킹 도구에 의해 인터페이스 이름이 이미 변경된 경우에는 필요하지 않을 수 있습니다.
다음과 같은 이유로 루프가 발생하지 않습니다.
- 인터페이스에 영구 MAC 주소가 있는 경우: 작업 없음
- 인터페이스가 한 번 표시되었다가 종료된 후에도 여전히 영구 MAC 주소를 얻지 못한 경우(즉, 해결 방법이 작동하지 않음) 해당
add
작업은 수행되지 않습니다(영구 MAC 주소 장치로 제한되기 때문). 임의의 MAC 주소로 장치를 떠나기
데비안 이외의 배포판
존재하는지 확인
/bin/ip
하거나 올바른 경로로 바꾸십시오(예:/sbin/ip
).eudev(Devuan, Gentoo ...): 잘 모르겠습니다.eudev와 똑같이 행동한다체계화된'에스udev내부에서 이벤트를 트리거할 때. 3차 RUN에는 변화가 필요할 수도 있습니다.
...S
어떤 이유로 든 일치 변형(상위 속성에 대한)이 모두 동일한 상위의 일부여야 하므로 추가 조건을 추가해야 하는 경우 필요한 경우 유사한 효과를 위해DRIVERS=="ax88179_178a"
대체될 수 있습니다 (특정 USB 장치가 실제로 일치하는 경우).ATTRS{product}=="AX88179"
이 속성) 다른 상위 속성(예ATTRS{serial}
: )의 대체 유용한 속성에 도달합니다.addr_assign_type=3
적어도 MAC 주소가 변경되었음을 의미하는 것처럼 보이는 경우 도 있습니다 (수동으로 또는 다른 방식으로, 예: 인터페이스를 본드 슬레이브로 설정). 이 규칙은 이것을 건드리지 않습니다(건드리지도 않고, 이 경우도 발생하지 않습니다).사용된 문서
udev(7)
udevadm(8)
/lib/udev/rules.d/
예제로 포함된 파일