NetworkManager 연결에 물리적 USB 모뎀을 할당하는 방법

NetworkManager 연결에 물리적 USB 모뎀을 할당하는 방법

저는 이중 독립 모뎀 장치(yocto 기반)를 개발 중입니다. 각각을 다른 NM 연결에 할당하고 싶습니다. cmd를 사용하여 등록합니다.

nmcli c add type gsm ifname cdc-wdm[0|1] con-name mdm1orange apn internet

효과가있다. 문제는 cdc-wdm접미사가 장치 등록/전원 켜기 시퀀스에서 나온다는 것입니다. USB 포트(다른 이동통신사 SIM, APN, 구성 등을 사용함)와 연결하고 싶기 때문에 udev 규칙을 만듭니다.

SUBSYSTEM=="usbmisc", SUBSYSTEMS=="usb", KERNELS=="1-1.3:1.4", SYMLINK+="modem2", TAG+="systemd"
SUBSYSTEM=="usbmisc", SUBSYSTEMS=="usb", KERNELS=="1-1.4:1.4", SYMLINK+="modem1", TAG+="systemd"

작동합니다. 등록 /dev/modem1중이지만 /dev/modem2다음을 호출합니다.

nmcli c add type gsm ifname modem[1|2] con-name mdm1orange apn internet

방금 실패했습니다. NM은 연결에 어떤 장치를 사용하고 싶은지 모릅니다.

그렇다면 심볼릭 링크 대신 모뎀 네트워크 인터페이스에 USB 포트 기반 별칭이나 인덱스(udev 또는 기타 항목 사용)를 어떻게 할당합니까 /dev/? WWAN 인터페이스 별칭도 만드는 것이 좋습니다.

감사해요!

답변1

네트워크 인터페이스의 이름은 장치 노드가 아닌 이름일 뿐이므로 심볼릭 링크는 네트워크 장치를 가리킬 수 없습니다. udev 규칙은 네트워크 인터페이스 대신 usbmisc 장치를 가리키는 심볼릭 링크를 생성하므로 이것이 작동하지 않습니다.

네트워크 장치에 cdc-wdmMAC 주소 또는 이에 상응하는 영구 속성이 있습니까? 예를 들어 를 실행하면 ethtool --show-permaddr cdc-wdm0한 모뎀에서 다음 모뎀을 켤 때까지 동일하게 유지되는 고유 식별자를 얻게 됩니까? 또는 를 실행하면 udevadm info -q all -p /sys/class/net/cdc-wdm0켜져 있는 한 모뎀에서 다음 모뎀까지 지속되고 단일 모뎀에 고유한 속성이 표시됩니까?

yocto 기반 장치에 가 있으면 파일을 사용하여 모뎀에 영구 네트워크 인터페이스 이름을 할당 systemd-udevd할 수 있습니다 ./etc/systemd/network/*.link

저는 최근 4G(LTE) USB 모뎀/모바일 WiFi 액세스 포인트인 Zyxel WAH7601을 사용했습니다. USB로 연결하면 rndis_host네트워크 드라이버를 사용하며,열릴 때마다 새로운 MAC 주소가 표시됩니다.. NetworkManager가 시작할 때마다 이를 "새" 연결로 감지하게 되므로 내 노트북에서는 이것이 짜증나는 일이라고 생각합니다.

이 문제를 해결하는 첫 번째 단계는 해당 문제에 대한 영구 네트워크 장치 이름을 만드는 것입니다. 위 udevadm info명령은 장치에 ID_SERIAL_SHORT=xxxxxxxxxxxx일련번호 속성이 있음을 나타냅니다(실제 일련번호는 개인정보 보호를 위해 수정되었습니다). 그리고저것모뎀을 다시 시작해도 변경되지 않은 상태로 유지됩니다(장치 일련 번호에 따라 예상됨). 그래서 다음과 같은 파일을 만들었습니다 /etc/systemd/network/72-zyxel.link.

[Match]
Driver=rndis_host
Property=ID_SERIAL_SHORT=xxxxxxxxxxxx

[Link]
Description=Zyxel WAH7601
NamePolicy=
Name=zyxelmodem0

그러면 모뎀의 영구 네트워크 인터페이스 이름이 제공되고 모뎀의 일련 번호가 잠깁니다. 이 Property=줄은 udevadm info ...링크된 파일을 실제 네트워크 장치와 일치시키는 위 명령 출력의 속성을 나타냅니다. Null은 NamePolicy=이 장치에 대한 시스템 전체 기본 NamePolicy만 억제하므로 중요합니다. 이 Name=줄은 내가 원하는 장치 이름만 지정합니다(NamePolicy가 null이거나 보다 "표준적인" 이름을 생성할 수 없는 경우에만 적용됩니다).

나를 위한 솔루션의 두 번째 부분은 모뎀에 대한 NetworkManager 연결을 생성한 다음 (모뎀마다 다르기 때문에 MAC 주소 대신) 장치 이름만 사용하여 특정 장치에 연결을 바인딩하도록 수정하는 것이었습니다.

 <creating a connection using NetworkManager GUI>
 nmcli c mod ZyxelModem connection.interface-name zyxelmodem0
 nmcli c mod ZyxelModem 802-3-ethernet.mac-address ""

답변2

그래서 확인 후 udev네트워크 인터페이스의 이름만 변경합니다. 너할 수 없다폴더에 있는 파일 이름을 변경 /dev/하려면별칭/기호 링크/태그등.

이(기호 링크 또는 새 네트워크 개발 이름)은 ModemManager 및 Network Manager에 적용되지 않습니다. MM의 경우 특수 문자를 사용할 수 있습니다.udev 규칙CLI에서 모뎀을 식별합니다. 그러나 이는 DBus 인터페이스에서는 작동하지 않습니다. 그리고 NM에서는 작동하지 않습니다.

여기로 이사왔는데 qmicli너무 만족스럽네요 ;)

관련 정보