ECM Mode, VID: 7021
$ lsusb
Bus 003 Device 009: ID 1bc7:7021 Telit Wireless Solutions TelitCinterion Compo
Get IPv6 only via AT command
at+cgdcont=1,"IPv6",""
OK
at+cgpaddr=1
+CGPADDR: 1,"32.1.180.0.226.169.68.63.134.237.190.6.38.2.50.16"
AT#SGACT=1,1
OK
AT#PING="2001:4860:4860::8888"
#PING: 01,32.1.72.96.72.96.0.0.0.0.0.0.0.0.136.136,1,116
#PING: 02,32.1.72.96.72.96.0.0.0.0.0.0.0.0.136.136,0,116
#PING: 03,32.1.72.96.72.96.0.0.0.0.0.0.0.0.136.136,0,116
#PING: 04,32.1.72.96.72.96.0.0.0.0.0.0.0.0.136.136,0,116
OK
Set RA config
強制觸發: 有時候需要手動開啟內核對 RA (Router Advertisement) 的接收:
accept_ra: 決定是否接收來自基地台(電信商)的路由器公告訊息(Router Advertisement)。
autoconf: 決定是否根據收到的 RA 訊息,自動產生 IPv6 位址(SLAAC 流程)。
$ sudo sysctl -w net.ipv6.conf.wwan0.accept_ra=2
0:關閉。不接受 Router Advertisement (RA)。
1:預設。如果該網卡沒有開啟轉發 (forwarding=0),則接受 RA。
2:強制開啟。即使該網卡開啟了轉發 (forwarding=1),依然接受 RA。
$ sudo sysctl -w net.ipv6.conf.wwan0.autoconf=1
$ cat /proc/sys/net/ipv6/conf/wwan0/accept_ra
$ cat /proc/sys/net/ipv6/conf/wwan0/auto
$ reboot
Enable the wireless card
$ sudo ifconfig wwx2026123aa up
$ ifconfig wwx2026123aa
wwx2026123aa: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 2001:b400:e2a9:ffff:ffff:ffff:ffff:cc88 prefixlen 64 scopeid 0x0<global>
inet6 2001:b400:e2a9:ffff:ffff:ffff:ffff:96aa prefixlen 64 scopeid 0x0<global>
inet6 fe80::2289:84ff:fe6a:96aa prefixlen 64 scopeid 0x20<link>
ether 11:11:11:11:11:11 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
應該能直接得到IPv6 address
模組透過ECM Mode計算後,分配兩組IP(無狀態自動配置(SLAAC))
ECM 模式與 IP 分配邏輯
在 CDC-ECM 模式下,模組會模擬成一張標準的乙太網路卡。當介面 up 之後,流程如下:
1. RS/RA 封包交換: 主機發送 Router Solicitation (RS),模組(或電信端網路)回覆 Router Advertisement (RA)。
2. Prefix 下發: RA 封包會提供一個 /64 的網路前綴(Prefix),例如你畫面中的 2001:b400:e2a9:443f::/64。
3. SLAAC 計算:
主機根據這個 Prefix,結合自身的 MAC 位址或隨機數,自動計算出 Global 廣域位址。
由於 Linux 核心通常預設開啟了 IPv6 Privacy Extensions (RFC 4941),所以會同時產生一組「固定」與一組「臨時」的位址,這就是你看到「兩組全球 IP」的原因。
| 類型 | 位址範例 | 說明 |
|---|---|---|
| Global (隱私位址) | 2001:b400:...:cc88 | 臨時性位址 (Temporary Address)。為了保護隱私,系統會隨機產生一組位址用於對外連線,避免追蹤。 |
| Global (固定位址) | 2001:b400:...:96aa | 公共位址 (Public Address)。由 Prefix + 介面識別碼組成,通常較固定,可用於被動接收連線。 |
| Link-Local | fe80::...:96aa | 區域連結位址。僅用於本地端(模組與主機之間)的通訊,不跨越路由器。 |
Set the IPv6 route
$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2001:1111:2222:3333::/64 dev wwx2026123aa proto kernel metric 256 pref medium
fe80::/64 dev wwx2089846a96aa proto kernel metric 256 pref medium
default via fe80::aaaa:bbbb:cccc:e685 dev wwx2089846a96aa proto ra metric 1024 expires 65525sec hoplimit 255 pref high
$ sudo ip -6 rule add from 2001:1111:2222:3333::/64 lookup 100
$ sudo ip -6 route replace default via fe80::aaaa:bbbb:cccc:e685 dev wwx2026123aa table 100
$ sudo ip -6 route add default via fe80::aaaa:bbbb:cccc:e685 dev wwx2026123aa metric 100
$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2001:1111:2222:3333::/64 dev wwx2089846a96aa proto kernel metric 256 pref medium
fe80::/64 dev wwx2089846a96aa proto kernel metric 256 pref medium
default via fe80::aaaa:bbbb:cccc:e685 dev wwx2089846a96aa metric 100 pref medium
default via fe80::aaaa:bbbb:cccc:e685 dev wwx2089846a96aa proto ra metric 1024 expires 65507sec hoplimit 255 pref high
$ ping6 -I wwx2089846a96aa 2001:4860:4860::8888
PING 2001:4860:4860::8888(2001:4860:4860::8888) from 2001:b400:e255:a973:8836:4d92:92bd:f430 wwx2089846a96aa: 56 data bytes
64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=115 time=43.1 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=115 time=64.6 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=3 ttl=115 time=37.9 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=4 ttl=115 time=37.1 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=5 ttl=115 time=55.8 ms
^C
--- 2001:4860:4860::8888 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 37.056/47.690/64.591/10.783 ms
$ ifconfig wwx2026123aa
wwx2026123aa: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 2001:b400:e2a9:aaaa:bbbb:cccc:dddd:cc88 prefixlen 64 scopeid 0x0<global>
inet6 2001:b400:e2a9:ffff:ffff:ffff:ffff:96aa prefixlen 64 scopeid 0x0<global>
inet6 fe80::2289:84ff:fe6a:96aa prefixlen 64 scopeid 0x20<link>
ether 11:11:11:11:11:11 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ping6 -I 2001:b400:e2a9:aaaa:bbbb:cccc:dddd:cc88 2001:4860:4860::8888
PING 2001:4860:4860::8888(2001:4860:4860::8888) from 2001:b400:e255:1111:2222:3333:4444:5555 : 56 data bytes
64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=114 time=153 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=2 ttl=115 time=52.4 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=3 ttl=115 time=51.1 ms
64 bytes from 2001:4860:4860::8888: icmp_seq=4 ttl=115 time=52.5 ms
^C
--- 2001:4860:4860::8888 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 51.108/77.171/152.633/43.571 ms
Set DNS
$sudo resolvectl dns wwx2026123aa 2001:4860:4860::8888 2001:4860:4860::8844
#Tell the system this interface is the "default" for all DNS queries
$ sudo resolvectl domain wwx2026123aa "~."
$ resolvectl status wwx2026123aa
Link 5 (wwx2026123aa)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 2001:4860:4860::8844
DNS Servers: 2001:4860:4860::8888 2001:4860:4860::8844
DNS Domain: ~.
$ ping6 google.com
PING google.com(lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e)) 56 data bytes
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=1 ttl=116 time=41.8 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=2 ttl=116 time=41.3 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=3 ttl=116 time=28.7 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=4 ttl=116 time=21.6 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=5 ttl=116 time=36.9 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=6 ttl=116 time=44.2 ms
64 bytes from lctsaa-ac-in-x0e.1e100.net (2404:6800:4012:9::200e): icmp_seq=7 ttl=116 time=15.0 ms
^C
--- google.com ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6009ms
rtt min/avg/max/mdev = 14.987/32.779/44.184/10.431 ms
About Kenel config for IPv6
CONFIG_IPV6=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_ESP_OFFLOAD=m
CONFIG_INET6_ESPINTCP=y
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_IPV6_VTI=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_SIT_6RD=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
CONFIG_IPV6_FOU=m
CONFIG_IPV6_FOU_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
CONFIG_IPV6_SEG6_LWTUNNEL=y
CONFIG_IPV6_SEG6_HMAC=y
CONFIG_IPV6_SEG6_BPF=y
# CONFIG_IPV6_RPL_LWTUNNEL is not set
ref: Gemini
沒有留言:
張貼留言