Linux는 네트워크 장치 할당을 어떻게 또는 어디서 결정합니까? 특히 무선 USB 장치의 경우입니다 wlan0
.wlan1
얼마 전에 TP USB 무선을 연결했는데 wlan0
. 나는 그것을 제거했다. 이번 주에 Edimax USB 무선 장치를 연결했는데 wlan1
. 두 번째 Edimax USB 무선 장치를 사용해 보기 위해 오늘 제거했는데(2개 구입) 이제 나타납니다 wlan2
.
나는 이것이 어딘가에 구성되고 있다는 것을 알 만큼 Unix/Linux에 대해 충분히 알고 있으며, 사용하지 않는 구성 파일을 삭제하면 최신 Edimax를 wlan0
. 하지만 어떻게/어디서?
답변1
우데브Linux에서 장치의 이름을 결정하는 시스템 구성 요소입니다. 대부분은 아래의 파일 이름 /dev
이지만 네트워크 인터페이스의 이름도 있습니다.
099에서 196까지의 udev 버전에는 네트워크 인터페이스의 이름을 기록하고 동일한 장치에 항상 동일한 번호를 사용하는 규칙이 있습니다. 이러한 규칙은 udev 174부터 기본적으로 비활성화되어 있지만 그럼에도 불구하고 배포판에서 활성화할 수 있습니다(예: Ubuntu에서는 이를 유지합니다). 일부 배포판은 다른 규칙 세트를 제공합니다.
나중에 사용할 수 있도록 인터페이스 이름을 기록하고 예약하는 스크립트는 입니다
/lib/udev/rules.d/75-persistent-net-generator.rules
. 에 규칙을 작성합니다
/etc/udev/rules.d/70-persistent-net.rules
. 따라서 에서 기존 wlan0
및 항목을 제거 하고 로 변경합니다 . 이미 연결된 장치에 규칙을 다시 적용하려면 실행 (또는 장치와 일치하는 모든 매개변수)을 실행하십시오.wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
답변2
systemd
이 문제는 네트워크 장치에 대한 영구 이름 지정 기능이 도입되면서 v197 부터 해결되었습니다 .
프리데스크톱에 따르면예측 가능한 네트워크 인터페이스 이름페이지에서 커널은 관련 드라이버가 검색한 순서에 따라 이름을 할당했습니다.
커널이 적용하는 네트워크 인터페이스의 고전적인 명명 체계는 드라이버가 검색할 때 모든 인터페이스에 "eth0", "eth1" 등으로 시작하는 이름을 할당하는 것입니다. 현대 기술에서는 일반적으로 드라이버 검색을 예측할 수 없기 때문에 이는 여러 네트워크 인터페이스를 사용할 수 있게 되자마자 "eth0", "eth1" 등의 이름 할당이 일반적으로 더 이상 고정되지 않으며 다음과 같은 일이 발생할 수 있음을 의미합니다. 한 번의 부팅에서는 "eth0"이 다음 부팅에서는 "eth1"이 됩니다.
배포판이 systemd를 사용하는 경우 예측 가능하게 할당되었지만 다루기 힘든 이름을 사용하거나 mac 주소를 기반으로 와 같이 더 편안한 이름을 지정하는 규칙을 wlp0s11
작성할 수 있습니다 .udev
wifi1
/etc/udev/rules.d/
다음 이름 에 파일을 포함합니다 10-network-device.rules
.
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"