/*nice*/

2026年4月8日 星期三

Telit LE910Q1 ECM Mode

LE910Q1
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

沒有留言:

張貼留言

/*nice*/