저는 LTE 카드(Sierra Wireless AirPrime EM7455)를 WAN 인터페이스로 사용하여 노트북에 가상 라우터를 설정하려고 했습니다.
제 문제를 요약하자면, LTE 카드가 호스트에서는 작동하지만 게스트 VM으로 전달하면 온라인에 접속할 수 없습니다.
하드웨어/소프트웨어 정보
- 노트북: Debian 11.7을 실행하는 Lenovo Yoga 370 20JJ(i3을 실행하는 최소 네트워크 설치)
- LTE 모뎀 카드: Sierra Wireless AirPrime EM7455
- 가상화: KVM/QEMU/libvirt + virsh
호스트에서
NetworkManager를 사용하지 않고(선호하지 않음) ModemManager를 사용하면 호스트 시스템에서 다음 명령을 사용하여 연결할 수 있습니다.
mmcli -m 0 --enable
mmcli -m 0 --simple-connect="user=3,apn=data.tre.se,ip-type=ipv4"
그런 다음 다음과 같이 네트워크를 수동으로 구성합니다.
ip link set wwan0 up
ip addr add [IP/PREFIX] dev wwan0
ip link set dev wwan0 arp off
ip link set dev wwan0 mtu [MTU]
ip route add default dev wwan0 metric 200
연결을 설정할 수 있습니다. 똑같이 효과적입니다. 인터넷 등을 검색할 수 있어요.
손님 중에
게스트에서는 포워딩 LTE 모뎀(USB 장치로 표시됨)을 사용하고 있습니다 virsh attach-device
. 호스트 시스템에서 사용되는 위 명령을 복사하면 인터넷에 연결할 수 없습니다. 게이트웨이 IP에 대한 핑을 포함하여 어떤 패킷에도 응답이 없습니다. 대신 TX 및 RX 오류만 발생합니다.
user@modem:~$ ip -c -s link show wwan0
3: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 66:24:85:3c:8e:fb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
0 0 20621 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 9 0 0 0
그런데 나에게 가장 이상한 점은그래요할 수 있었다:
1. APN을 통해 IP 획득mmcli
--simple-connect
게스트에서 명령을 실행하면 호스팅 설정이 나타나고 모뎀이 "연결됨"으로 표시됩니다. 모뎀 정보와 베어러 정보의 출력을 별도로 봅니다.
$ sudo mmcli -m 0
--------------------------------
General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: [REDACTED]
--------------------------------
Hardware | manufacturer: Sierra Wireless, Incorporated
| model: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
| firmware revision: SWI9X30C_02.33.03.00
| carrier config: default
| h/w revision: EM7455
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: [REDACTED]
--------------------------------
System | device: /sys/devices/pci0000:00/0000:00:05.7/usb1/1-4
| drivers: cdc_mbim
| plugin: sierra
| primary port: cdc-wdm0
| ports: cdc-wdm0 (mbim), wwan0 (net)
--------------------------------
Status | lock: sim-pin2
| unlock retries: sim-pin2 (3)
| state: connected
| power state: on
| access tech: lte
| signal quality: 74% (recent)
--------------------------------
Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: 4g
| allowed: 3g, 4g; preferred: 3g
| current: allowed: 3g, 4g; preferred: 4g
--------------------------------
Bands | supported: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-41
| current: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-41
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: [REDACTED]
| enabled locks: fixed-dialing
| operator id: 24002
| operator name: hallon
| registration: home
| packet service state: attached
--------------------------------
SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
| sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
| slot 2: none
--------------------------------
Bearer | paths: /org/freedesktop/ModemManager1/Bearer/0
$ sudo mmcli -m 0 -b 0
------------------------------------
General | path: /org/freedesktop/ModemManager1/Bearer/0
| type: default
------------------------------------
Status | connected: yes
| suspended: no
| multiplexed: no
| interface: wwan0
| ip timeout: 20
------------------------------------
Properties | apn: data.tre.se
| roaming: allowed
| ip type: ipv4
| user: 3
------------------------------------
IPv4 configuration | method: static
| address: A.B.C.58
| prefix: 30
| gateway: A.B.C.57
| dns: 80.251.201.178, 80.251.201.177
| mtu: 1500
------------------------------------
Statistics | start date: 2023-08-11T10:16:31Z
| duration: 30
| uplink-speed: 50000000
| downlink-speed: 300000000
| attempts: 1
| total-duration: 30
(일부 정보가 삭제되었습니다)
2. 다음을 통해 손님의 문자 메시지를 내 휴대폰으로 보낼 수도 있습니다.mmcli
나에게 문제는 모뎀이 셀 타워에 연결되는 것이 아니라 내 네트워크 구성이나 하드웨어가 가상 머신으로 전달하는 방식에 더 제한됩니다. 어쩌면 펌웨어 문제일까요?
문제 해결을 시도해보세요
ModemManager와 Debian의 다양한 버전
나는 게스트에서 데비안 11.7과 최신 안정 데비안(12.X)을 사용해 보았습니다. ModemManager의 다양한 버전(각각 1.14.12 및 1.20.4)이 함께 제공됩니다. 눈에 띄는 차이는 없습니다. 내 호스트는 Debian 11.7 mmcli 1.14를 실행하고 있지만 Debian 12에서 오류가 발생하면 다음을 실행해야 했습니다.
$ mmcli -m 0 -e
error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Retry: Invalid transition'
$ sudo ln -sft /etc/ModemManager/fcc-unlock.d /usr/share/ModemManager/fcc-unlock.available.d/*
NetworkManager 및 ModemManager 통합
ModemManager와 통합된 NetworkManager를 사용해 보았습니다. 새 게스트(Debian 12)를 설치하고 NetworkManager를 설치한 후 이를 통해 GSM 연결을 설정했습니다. 결과적으로 IP, 게이트웨이, DNS 서버 등을 얻었고 연결은 "연결됨"으로 표시되지만 여전히 RX/TX 오류만 나타납니다.
방화벽
해당 기능이 비활성화되어 있는지 확인했습니다 nftables
. 내가 모르는 virsh 및 네트워킹에 관한 내용이 없으면 시스템에 다른 방화벽이 존재하지 않습니다.
누구든지 아이디어가 있나요? 저는 ModemManager 및 관련 기술을 처음 사용합니다. 제가 치명적이고 기본적인 네트워킹 실수를 저지르고 있기를 바랍니다.