每日签到奶昔超市积分商城奶昔访达
1234下一页
返回列表 发布新帖

CTExcel UK 大陆激活:链路搭建与逐层排查记录

 
4366 79
发表于 2026-7-31 18:04:36 | 查看全部 阅读模式

登录后免广告,享受更多奶昔会员权益!

您需要 登录 才可以下载或查看,没有账号?注册

×

CTExcel UK 大陆激活:链路搭建与逐层排查记录

论坛不让发链接,涉及的网址都改成了文字描述,命令里的接口地址去掉了协议头,
自己补上 https 前缀就能用。域名要是被系统吞了,按文中给的格式拼一下。

当前进展:IMS 在 IWLAN 上注册成功(registrationState=HOME)、能收运营商短信、
拨号能到对端并被响应,激活短信还没收到。

测试环境

  • 承载机(插卡):Android 16,联发科平台,接近原生的 ROM,支持 eSIM
  • 网关:已 root 的 Android 手机
  • 节点:伦敦 VPS,Debian 13,1 核 512MB,sing-box 跑 Hysteria2
  • 卡:CTExcel UK eSIM,MCC/MNC = 23433
  • 工具:adb、tcpdump、curl

下面的命令和现象都出自这套环境,没试过的会标出来。

一、原理

CTExcel UK 是跑在 EE 上的 MVNO(经 Transatel),SIM 上报 MCC/MNC = 23433。
新卡出厂时语音服务没开通、号码也没下发,要在英国本地网络上产生一次使用才会开户。

人在大陆收不到 EE 信号,入口是 VoWiFi。它的流量结构是:

设备 --IKEv2 (UDP 500)--> 运营商 ePDG 网关
     --NAT-T 后 ESP 封装进 UDP 4500-->
     隧道建立后,隧道内跑 SIP REGISTER 完成 IMS 注册
     注册成功才谈得上打电话、发短信

两条硬要求:

  1. 得是 UDP,500 / 4500 不能被屏蔽。不少机场的服务端压根不转发 UDP。
  2. ePDG 域名得解析成真实 IP。IPsec 要对端的真实地址,解析到 fake-ip 段
    (198.18.0.0/16)就建不起来。

IP 是不是家宽/原生,论坛上说法不一,有人用公共节点成功、也有人用英国家宽半个月没成。
这套链路用的是数据中心 IP,隧道正常建起来了。

ePDG 域名构造规则固定,换运营商照套:

epdg.epc.mnc<MNC 补足三位>.mcc<MCC>.pub.3gppnetwork.org

CTExcel (23433)     ->  epdg.epc.mnc033.mcc234.pub.3gppnetwork.org
Vodafone UK (23415) ->  epdg.epc.mnc015.mcc234.pub.3gppnetwork.org

查真实 IP 用 DoH,别用本机 dig(原因见坑 5):

curl -s "1.1.1.1/dns-query?name=epdg.epc.mnc033.mcc234.pub.3gppnetwork.org&type=A" -H 'accept: application/dns-json'

(前面补上 https 协议头)写这篇时返回 31.94.76.1 / .2 / .6 / .9 / .10,是 EE 的 ePDG 集群。
地址会变,用时现查。

二、链路架构

承载机(插卡,飞行模式 + WiFi,定位改到伦敦)
    | WiFi
网关(root 安卓,全局代理 + 转发,出口在英国)
    | Hysteria2 (QUIC / UDP)
英国 VPS
    |
ePDG (UDP 500 & 4500)

分两台设备是因为承载机得整机流量都走英国。在它自己身上装代理 app,能不能盖住
modem 发起的 IPsec 流量要看这台机器 IWLAN 数据栈的实现,有些实现会绕过系统的
VpnService。放到设备外面转发就没这个不确定性。

三、节点与协议

实测过两种:

  • Trojan over TLS(机场节点):UDP 上下行都是 0 字节,隧道建不起来
  • Hysteria2(自建):正常,双向 ESP

Trojan 那次的连接记录:

udp://epdg.epc.mnc033.mcc234.pub.3gppnetwork.org/31.94.76.1:4500   0B 上 0B 下
udp://epdg.epc.mnc033.mcc234.pub.3gppnetwork.org/31.94.76.1:500    0B 上 0B 下

同一时刻同一节点的 TCP:

tcp://mtalk.google.com/...:5228      1KB 上 1.6KB 下
tcp://.../443                      134KB 上 17.7KB 下

TCP 有几百 KB 流量,UDP 一个字节都出不去。会话记录建了,包没送出去,
服务端没开 UDP 转发。换成 Hysteria2 之后,同一台承载机立刻建起了隧道。

别的协议没试。Hysteria2 / TUIC 是 QUIC 原生 UDP,Shadowsocks 有 UDP relay,
VLESS / VMess 看服务端配置。

自建的话,伦敦机房的 VPS 按小时计费(0.006 到 0.007 美元一小时),装 sing-box 跑
Hysteria2,激活完删掉,整件事不到 1 美元。配置拿最低档就够,这条链路传的是 IKE
协商包和 SIP 信令,数据量以 KB 计。

服务端两点:

  1. outbound 强制 IPv4。sing-box 1.12 起 outbound 的 domain_strategy 已废弃,
    还写旧字段会直接 FATAL 起不来,要写成:

    "outbounds": [{
    "type": "direct",
    "domain_resolver": { "server": "local", "strategy": "ipv4_only" }
    }]

  2. 防火墙放行 Hysteria2 自己的 UDP 端口就行。出站默认全通,不用为 500/4500
    单独开洞,那是节点出去的方向。

四、客户端配置

DNS:ePDG 得解析出真实 IP

fake-ip 模式下是这样:

$ ping epdg.epc.mnc033.mcc234.pub.3gppnetwork.org
PING ... (198.18.0.127)      <- 假地址,IPsec 建不上去

两种改法都试过,ePDG 都能解析到真实地址。

改法 A,保留 fake-ip、放行 3gpp 域名:

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-filter:
    - "+.3gppnetwork.org"

改法 B,全局改成 redir-host:在客户端把 DNS 模式从 fake-ip 改成 redir-host。

注意 FlClash 里「覆写 DNS」是总开关,DNS mode 是它下面的一项。总开关关着的时候,
设的 redirHost 不生效,走的是订阅文件里的 dns 段。

IPv6

客户端 ipv6: false,服务端 outbound 强制 IPv4。承载机要是拿到全局 IPv6,
就存在绕过隧道直连的路径,浏览器里查到的是英国 IP,IMS 流量却从本地出去了。

规则(只有规则模式需要)

全局模式下 rules 整段不参与选路。规则模式的话这几条放在 GEOIP,CN 前面:

- DOMAIN-SUFFIX,3gppnetwork.org,PROXY
- IP-CIDR,31.94.76.0/24,PROXY,no-resolve
- DST-PORT,500,PROXY
- DST-PORT,4500,PROXY

Surge 的等价写法:

AND,((GEOIP,GB),(AND,((PROTOCOL,UDP),(OR,((DEST-PORT,500),(DEST-PORT,4500))))))

五、网关

这一层的目标:承载机连的那个 WiFi,公网出口在英国。

用的是 root 安卓机加 VPN Hotspot。论坛上也有人拿电脑开热点配 TUN 全局、或者用
软路由旁路由做这一层,原理一样,没试过,配法看对应的帖子。

安卓自带的热点和 USB 共享,流量是绕过 VPN/tun 的,连热点的设备走的是裸的上行。
要让热点客户端也走代理得用 VPN Hotspot(开源,需要 root,GitHub 上搜 Mygod/VPNHotspot,
F-Droid 包名 be.mygod.vpnhotspot_foss)。应用商店里有蹭名字的同名应用,
包名认准 be.mygod.vpnhotspot。

用法:网关机上代理客户端开全局模式加英国节点,开系统热点,然后在 VPN Hotspot 的
Tethering 列表里把对应接口(这台是 wlan2)的开关打开。

开发者选项里的「网络共享硬件加速」要关掉,VPN Hotspot 界面上也提示了这条。
开着的时候部分转发会被硬件 offload、绕过 iptables 规则,现象有迷惑性:
网页查 IP 显示英国、看着一切正常,但部分流量直连出去了。

配好之后承载机连上,浏览器开 ipinfo 那类 IP 查询站看国家。

六、承载机配置

定位

论坛上的成功案例多数都改了定位。iOS 那边用的是 WLOC 类工具,手头没 iOS 设备,
用的是 Android 自带的模拟位置:

  1. 装 FakeTraveler(开源,F-Droid 包名 cl.coders.faketraveler)
  2. 开发者选项 -> 选择模拟位置信息应用 -> FakeTraveler
  3. app 里选点,勾上持续 mock,Apply
  4. 系统定位得打开(location_mode=3),关着的话模拟位置不生效
  5. 电池设置里设成「不受限制」,免得被系统杀掉

坐标用的是节点出口 IP 自己报的位置(IP 查询站返回的 loc 字段),这样定位跟 IP 归属对得上。

Android 的模拟位置只管 GPS / fused provider,不改 Wi-Fi 扫描到的 BSSID 列表。
Google 的网络定位用的正是周围 WiFi 的 BSSID,所以还得去 设置 -> 位置 -> 位置服务,
把 WLAN 扫描和蓝牙扫描都关了。

飞行模式

论坛主流经验是全程开着飞行模式。这台(联发科平台)测下来是反的:

  • 开飞行模式:节点侧抓包 10 秒 0 个包,registrationState 退回 UNKNOWN
  • 关飞行模式:隧道持续活跃

但最后把状态推到 HOME 的那一次,恰恰是开着飞行模式的(同时配了模拟定位)。
两种配置的表现都记录过,没看出确定的规律。

其他

  • 关蓝牙
  • 系统语言、地区、时区设成目标国
  • Private DNS 设成「关闭」。默认的 opportunistic 会尝试对上游做 DoT,
    存在绕开代理 DNS 处理的路径

激活流程

下面 10 步是综合论坛多个成功案例的共性顺序:

1. 关闭 GPS,或设好模拟定位
2. 连上网关热点,确认出口 IP 在目标国
3. 关闭要激活的那张卡(eSIM 就是关掉 profile 开关)
4. 关闭 Wi-Fi Calling 选项
5. 关机(不是重启)
6. 开机,连上热点,确认能上网
7. 打开卡
8. 打开 Wi-Fi Calling
9. 等 VoWiFi 标识出现(10 秒到几分钟)
10. 再等 2 分钟,拨 888

实际走的是第 1、2、3、5、6、7、10 步。第 4 和第 8 步没做,Wi-Fi Calling 的开关
全程一直开着,没关掉再打开,HOME 就是在这个顺序下拿到的。

论坛上多数成功案例的描述是「888 没打通、秒挂断或 busy,但拨号那一刻激活短信就来了」,
也就是说结果的标志是激活短信,不是 888 通没通。

七、逐层排查

这条链路有七八层,中间断了哪一层,表现出来都是同一个症状:WiFi Calling 拉不起来。
下面是每层用什么看的,以及看到什么算通、什么算不通。

论坛上的成功配置互相打架的地方不少(飞行模式开还是关、要不要改定位、家宽还是机场),
这套环境也没归纳出规律,只能一层层确认。这些检查点也可以直接丢给 AI,
让它对着具体环境逐条过。

第 1 层:出口 IP

承载机浏览器打开 IP 查询站看国家。顺带两个泄露点:test-ipv6 那个站看有没有全局
IPv6,browserleaks 的 dns 页看 DNS 有没有落到本地解析。

第 2 层:ePDG 解析

adb shell ping -c1 epdg.epc.mnc033.mcc234.pub.3gppnetwork.org

返回 31.94.76.x 这类真实地址就是通了;返回 198.18.x.x 说明 fake-ip 没绕过去。
ePDG 一般不回 ICMP,看到「无回应」是正常的,这儿只看解析出来的地址。

第 3 层:IKE 到底送出去没有,节点侧抓包

SSH 到 VPS:

tcpdump -i any -n "udp port 500 or udp port 4500"

隧道正常建起来是这样:

Out  <节点IP>.41637 > 31.94.76.1.4500: UDP-encap: ESP(spi=0x040201da,seq=0x3), length 1300
In   31.94.76.1.4500 > <节点IP>.41637: UDP-encap: ESP(spi=0xbe6d9dea,seq=0x3), length 100
Out  ... NONESP-encap: isakmp: child_sa  inf2[I]
In   ... NONESP-encap: isakmp: child_sa  inf2[R]

怎么读:

  • 双向都有 ESP,说明 IKE 协商完成,进入数据阶段了
  • SPI 成对(出站一个、入站一个),说明 Child SA 建起来了
  • seq 连续递增,说明隧道在正常传
  • child_sa inf2[I] 和 [R],说明 INFORMATIONAL 交换有请求有响应

不通的话:只有 Out 没有 In,是包出去了对端不理,查下 IP 地理位置或者节点是不是被墙;
一个包都没有,是根本没送出去,回去看协议。

第 4 层:IMS 注册状态

adb shell dumpsys telephony.registry | sed -n "1,80p" | grep -oE "transportType=WLAN registrationState=[A-Z_]+|mOperatorAlphaLong=[A-Za-z]*"

得取输出的前段(head 或 sed -n "1,80p")。dumpsys telephony.registry 前面是当前状态
(mServiceState),后面几百行是历史事件日志,用 tail 会读到历史记录里某个瞬时状态。

  • registrationState=HOME 加 mOperatorAlphaLong=运营商名:IMS 在 IWLAN 上注册成功
  • NOT_REG_SEARCHING:正在尝试
  • UNKNOWN 加 mOperatorAlphaLong=null:没在注册

第 5 层:定位到底生效没有

adb shell dumpsys location | grep "last location"

四个 provider(fused、network、gps、passive)都该显示设的坐标,并且带 mock 标记。

输出里的 et=+4d1h5m 是 elapsed-since-boot,不是「多久之前」。要跟
cat /proc/uptime 对比,et 接近 uptime 说明位置是刚注入的。一台连续开机四天的设备
显示 et=+4d,意思是「1 分钟前」。

手动触发 IMS 重新注册

不用重启手机(-s 后面是 SIM 槽位,双卡机注意选对):

adb shell cmd phone ims disable -s 1
adb shell cmd phone ims enable  -s 1

掉线后用这个几十秒就能拉回 HOME,比关机重启快,也不会丢别的状态。

八、踩过的坑

  1. 机场 Trojan 节点的 UDP 送不出去。连接记录 0B 上 0B 下,同节点 TCP 有几百 KB 流量。
    换 Hysteria2 后立刻建起隧道。

  2. fake-ip 跟 IPsec 不兼容。ePDG 解析到 198.18.0.127,IKE 无从谈起。
    加 fake-ip-filter 或者改 redir-host。

  3. 「覆写 DNS」是总开关。FlClash 里 DNS mode = redirHost 只在「覆写 DNS」打开的时候
    才生效,总开关关着的时候实际走的是订阅里的 fake-ip。

  4. 网络共享硬件加速会绕过 iptables。开着的时候部分流量 offload 到硬件、
    不经过转发规则,现象是各项看着都正常但就是不成。

  5. 本机 dig 的结果可能是假的。本机开着增强模式的代理(Surge 之类)时,
    连 dig @8.8.8.8 都会被拦下来返回 fake-ip。查 ePDG 真实地址得用 DoH。

  6. dumpsys telephony.registry 要读前段,用 tail 会读到历史日志。

  7. availableServices 不反映 IMS 能力。这字段主要对应蜂窝域的服务状态,
    这台机器上它全程只有 [DATA] 和 [EMERGENCY],但设备照样收到了运营商短信、
    拨号也能到对端。

  8. EMERGENCY 从一开始就在。紧急呼叫走独立通道,不需要 IMS 完整注册,
    所以它在不能说明语音通道通了。另外紧急号码会调动真实的应急资源,
    不适合拿来测连通性。

  9. 飞行模式的行为因机型而异。论坛主流经验是必须开,这台(联发科平台)开了之后
    IMS 停摆、抓包 0 包。

  10. 模拟位置管不了 Wi-Fi 定位。FakeTraveler 只改 GPS 和 fused provider,
    Google 的网络定位用的是周围 WiFi 的 BSSID,得另外把 WLAN 扫描和蓝牙扫描关掉。

  11. 飞行模式下发不出短信。Android 短信 app 在飞行模式下直接拒绝发送,
    这是系统 UI 层的限制,同一时刻收短信完全正常。

  12. eSIM profile 导不出来。一旦下载进设备的 eUICC 安全域就没法提取,
    这是 eSIM 的安全设计,换设备只能让运营商重新发放。扫码那一下就把 profile 消耗掉了。

九、当前进展

已经确认通了的:

  • UDP 500/4500 转发:节点侧抓包双向 ESP
  • IPsec / IKEv2 隧道:Child SA 建立,seq 连续
  • ePDG 真实解析
  • 出口地理位置
  • IPv6 泄露已封堵
  • 设备定位伪装:四 provider 全 mock
  • IMS 在 IWLAN 注册:registrationState=HOME
  • 接收运营商短信:收到 welcome SMS
  • 拨号到达对端:888 返回 busy,对端有响应

还没成的:

  • 激活短信没收到
  • MSISDN(号码)还是全零

registrationState=HOME 说明 SIM 的 IMSI 和密钥已经过了运营商鉴权,网络层面各项都对。
剩下的是运营商后台给这张卡开通语音服务。

论坛上成功案例的收尾多数落在时间上:没打通但等了几个小时就成了、挂了两天收到激活短信、
反复关机重启四次才好。

社区还有一条 4G 模组的路线:大疆一代 4G 模块本体是 Quectel EG25-G,改一条 AT 命令
就能被识别成 EC25,配 VoHive 平台用。它能用 AT 命令直接发短信和拨号,不经过 Android
UI 层那道限制,也能看到 SIP 层的响应码。前提是得有一份能写进 eUICC 白卡的 profile,
已经装进手机的那份挪不过去(见坑 12)。这条路线没试过。

十、命令速查

查 ePDG 真实 IP(前面补 https):

curl -s "1.1.1.1/dns-query?name=epdg.epc.mnc033.mcc234.pub.3gppnetwork.org&type=A" -H 'accept: application/dns-json'

承载机,ePDG 解析(该是真实 IP,不是 198.18.x.x):

adb shell ping -c1 epdg.epc.mnc033.mcc234.pub.3gppnetwork.org

承载机,IMS 注册状态(取前段,别用 tail):

adb shell dumpsys telephony.registry | sed -n "1,80p" | grep -oE "transportType=WLAN registrationState=[A-Z_]+|mOperatorAlphaLong=[A-Za-z]*"

承载机,定位注入没有(四 provider 都该带 mock):

adb shell dumpsys location | grep "last location"
adb shell cat /proc/uptime

承载机,模拟位置授权给了谁:

adb shell appops query-op --user 0 MOCK_LOCATION allow

承载机,触发 IMS 重新注册:

adb shell cmd phone ims disable -s 1 && adb shell cmd phone ims enable -s 1

承载机,确认没有全局 IPv6:

adb shell ip -6 addr show scope global

节点侧,抓 IKE / ESP:

tcpdump -i any -n "udp port 500 or udp port 4500"

多台设备同时连 adb 的话用 adb -s 序列号 指定,adb devices -l 能看到型号。

爱生活,爱奶昔~
estkme

评论79

luxun楼主Lv.2 发表于 2026-8-1 15:39:29 | 查看全部

【更新】
【AI 整理的后续实测,有一股 AI 味,凑合看吧】

原帖发出后又折腾了一天,有几个发现值得补上,尤其是诊断方法那部分——原帖里推荐的一个观察指标会给出相反的结论,先说这个。

一、别看 dumpsys 那个字段了,它会把人带反,改看 ##4636##

原帖第 7 节和坑 #7 里写的 availableServices,实测下来不只是"不反映 IMS 能力",而是会把人带到反方向。

拨号盘输入 ##4636## 进「手机信息」,能看到这些:

IMS status:
  IMS registration:  Registered
  Voice over LTE:    Unavailable
  Voice over Wi-Fi:  Available
  Video calling:     Unavailable
  UT interface:      Unavailable

往下翻还有 provisioning 开关:

VoLTE provisioned          开
Wi-Fi calling provisioned  开
Video calling provisioned  关
EAB/Presence provisioned   关

同一时刻 dumpsys telephony.registry 里的 availableServices 全程只有 [DATA] 和
[EMERGENCY],从没出现过 VOICE。两边结论完全相反。

Wi-Fi calling provisioned 这项是运营商侧下发的开通标记。有人卡住时
这项是 false(配置里表现为 carrier_volte_provisioned_bool=false),那说明问题在
provisioning;如果这项是开的,就该往别处找了。dumpsys 看不到这个。

结论:判断 VoWiFi 能力用 ##4636##,别用 availableServices。

二、"号码全零"不是运营商没开户的证据

原帖当前进展那节把 MSISDN 全零列成了未开户的迹象,这条不成立。

同一个页面里,Phone number 那行是这样的:

Phone number: 00000000000 { CARRIER:, UICC:00000000000, IMS:+44xxxxxxxxx }

UICC 里确实是全零——卡的 EF_MSISDN 字段没写。但 IMS 注册之后,网络把正确号码推下来了,
IMS: 后面是完整的号码。设置里显示全零只是因为它读的是 UICC 那个字段。

所以别拿设置里那个全零当依据,去 ##4636## 里看 IMS: 后面那串。

三、别纠结换什么协议,看服务端开没开 UDP

自建节点上把三种协议都跑了一遍,结论是只要服务端开了 UDP 转发,表现完全一致:

Hysteria2(QUIC 原生 UDP)      隧道建立 ✅   IMS 注册 HOME ✅
VLESS Reality(XUDP over TCP)  隧道建立 ✅   IMS 注册 HOME ✅
Trojan(自建,UDP over TCP)    隧道建立 ✅   IMS 注册 HOME ✅

原帖里写机场 Trojan 节点 0B↑0B↓,容易让人以为 Trojan 这个协议不行。不是协议的问题,
是那个机场的服务端没开 UDP 转发。 自建的 sing-box trojan 默认支持 UDP,抓包能看到
完整的双向 ESP 和 788 字节的 SIP 消息。

论坛里不少人在纠结换哪个协议,可以省了——先确认服务端有没有开 UDP 转发。

四、运营商到底卡在哪一步

几条官方文案 + 实测,把 CTExcel 对预激活卡的策略拼出来了。

充值页面在未激活时会弹:

您的SIM卡还未激活,请插卡拨打任意电话进行激活后,再进行充值/订购套餐等操作

注意是「拨打任意电话」,不是必须 888。888 是短号,走运营商内部的短号翻译;
普通 E.164 号码走标准呼叫路由,两条路不一样,值得都试。

发短信页面会直接提示:

预激活号码不可发送短信

所以上行短信发不出去是运营商的策略封禁,不是本地设置问题。原帖坑 #11 写的是
「Android 短信 app 在飞行模式下拒绝发送,是系统 UI 层限制」——这条得改,实际是
网络层被拒。抓包能看到发短信时有完整的 SIP 交互(932 / 660 / 548 / 1284 字节的包),
包送出去了,回来的是拒绝。

实测下来哪些能用、哪些不能用:

下行 · 数据          通
下行 · 短信接收      通(拿别的手机往这个号发,能收到)
上行 · 短信发送      拒(Not Sent)
上行 · 语音拨出      拒(486 busy)
下行 · 语音呼入      不通

规律很清楚:所有被动接收的都通,所有主动发起的都被拒。这是预激活账户的典型状态——
网络认这张卡、IMS 能注册、VoWiFi 能力也开着,但不允许它发起任何计费动作。

而官方的开户路径恰恰要求你主动拨一次电话。死循环。

另外,官网登录用的是短信验证码,本来以为下行短信通就能登进去办携转、绕开激活——
实测不行,未激活状态下不给发验证码。这条路也堵死。

五、飞行模式在拨号时的差别

原帖说这条因机型而异,补一个具体现象:同一台机器上,拨号时飞行模式开关会改变错误类型。

飞行模式开   →  busy               呼叫到了对端并被明确拒绝
飞行模式关   →  Server unreachable  压根没送到

关掉飞行模式后 WWAN 那边是 NOT_REG_SEARCHING(在反复搜网,当然搜不到),呼叫会被
扔到那条搜不到网的路上去。开着飞行模式只有 IWLAN 一条路,呼叫必然走 VoWiFi。

busy 比 unreachable 好——至少说明包到了对端。所以拨号时开着飞行模式。

六、掉线不用重启,一条命令能拉回来

挂机久了 IMS 会掉(registrationState 变 UNKNOWN、operator 变 null)。不用关机重启,
adb 一条命令几十秒就能恢复:

adb shell cmd phone ims disable -s 1
adb shell cmd phone ims enable  -s 1

-s 后面是 SIM 槽位,双卡机注意选对。实测掉了七八次,每次都是这么拉回来的。

顺带:原帖那套「关 eSIM → 关机 → 开机 → 开卡」的流程里,有一条假设也不成立——
不需要定位在开卡之前就位。卡开着的状态下补上定位、cycle 一次 IMS,照样能注册到 HOME。
要紧的是定位得在场,不是先后顺序。

七、附带:giffgaff 封号后的卡是什么状态

想过用 giffgaff 的流量开热点拿真实英国移动网络 IP(论坛上有人这么成功的),实测记录一下。

封号邮件之后,卡还能在中国移动网络上漫游注册,语音域甚至报 IN_SERVICE,
availableServices 里 [VOICE,SMS,VIDEO] 和 [DATA,MMS] 都在。看起来像是活的。

但实际全断:

打这个号码        忙音但不通
发短信            收不到
蜂窝数据 ping     PDP 建立了、拿到 IP 了、默认路由也配好了,100% packet loss

网站上还能登录,显示 You don't have an active plan、credit Not available。想充值买套餐,
支付被拒:We can't accept payments at the moment。

所以 availableServices 那套声明是网络能力的描述,不代表这张卡有权限用——跟 CTExcel
那边是一个道理。封号后的卡拿不来做网关,别指望。

PAC 码倒是还能正常申请到,这个不受影响。

当前进展

技术侧能查的每一项都是绿的:

IPsec 隧道           双向 ESP,Child SA 建立,1332 字节大包能过
IMS 注册             Registered / HOME
VoWiFi 能力          Voice over Wi-Fi: Available
运营商 provisioning   Wi-Fi calling provisioned 开
号码                 IMS 层有正确号码
下行短信             通

卡在账户状态那一层,拨 888 稳定返回 busy。抓包能看到完整的 SIP 往返(出站 788 字节的
INVITE,入站 420 + 580 字节的响应),但从没出现过 CREATE_CHILD_SA——呼叫在信令阶段
就被拒了,没走到开语音媒体承载那一步。

还在拨。论坛上有位打了五十几次突然就通,也有人挂两天收到激活短信,暂时按这个思路耗着。

如果最后还是不行,下一步是上 4G 模组(大疆一代模块本体是 EG25-G,改条 AT 命令认成 EC25)
配 VoHive。它的价值不在"更强"——如果拒绝来自运营商,模组一样会被拒——而在于能直接看到
SIP 响应码,能确认对端回的到底是 403 策略拒绝还是别的。现在只能从 UI 文案倒推。
这条还没试,有结果再更新。

爱生活,爱奶昔~
luxun楼主Lv.2 发表于 2026-8-1 17:18:59 | 查看全部

【更新2】拿真英国移动网络 IP 做了对照,结果和机房 IP 一模一样

论坛上「首次激活挑 IP,需要英国原生家宽」这说法流传挺广。之前没条件验证——手上只有机房 IP,giffgaff 又已经停服。昨天拿到了真英国移动网络出口,把这个变量单独测了一次。

一、之前唯一没变过的变量

原帖那套链路的出口是 DigitalOcean 伦敦,机房 IP。三种协议、两种 DNS 模式、定位、飞行模式、时区语言、各种扫描开关,能调的都调过,IMS 能注册 HOME、能收短信、拨号能到对端,888 稳定 busy。

只有 IP 类型一直没能换。而论坛上成功那几位用的是 giffgaff 漫游流量,那是真移动网络 IP。

二、怎么拿到真移动网络 IP

giffgaff 封号后支付通道也关了,开不了漫游包。但旅游 eSIM 里有一类能用:

在 eSIM.TF(Nekoko)这类平台上,套餐列表除了 NETWORK 那列,还单独标了一列 IP,写明数据出口落在哪国。买了这档:

PLAN      Asia (20 areas) 1GB / 7 天
NETWORK   China Mobile 5G / China Unicom 5G     人在中国走移动或联通漫游
IP        GB                                     出口在英国
价格      $4.20

这类卡装的是海外 MVNE 的 IMSI,人在中国走本地运营商漫游,数据回传到英国落地,结构跟 CTExcel 自己一样。

三、链路

装到当网关那台手机上,然后:

网关手机关掉 WiFi,只留新 eSIM 的移动数据
确认默认路由走 rmnet 接口,不是 tun
代理软件和 VPN Hotspot 全部关掉

链路从

插卡手机 → 网关(代理) → 英国 VPS → ePDG

变成

插卡手机 → 网关(联通漫游 → 英国落地) → ePDG

没有隧道封装、没有协议转换、没有 MTU 问题、没有 fake-ip、没有转发规则。

四、实测

网关手机上查出口:

ip        91.223.100.x
city      London
country   GB
org       AS35120 WORKING GROUP TWO AS

AS35120 是做移动核心网的 MVNE,给全球 MVNO 提供 PGW 之类的服务,不是云服务商。之前 DO 那边是 AS14061 DigitalOcean,性质完全不同。

插卡手机连上热点后,出口 IP 和 ASN 跟网关一致。

IMS 侧:

IMS 注册          CTExcel / HOME
mVoiceRegState    0(IN_SERVICE)
ePDG 解析          31.94.76.x(真实 IP)
定位              伦敦 mock
飞行模式           开
状态栏             VoWiFi 图标在

一个细节:这张卡 IMSI 归属是 23210(MCC 232 奥地利),出口却在伦敦。IMSI 国籍和数据落地是两回事,别拿 IMSI 判断出口。

五、结果

拨 888,还是 busy。跟机房 IP 下没有任何区别。

六、排除掉的

代理协议不对(Hy2 / Reality / Trojan)   现在没有协议
代理本身有问题(MTU / NAT / 转发规则)    现在没有代理
机房 IP 被风控                          换成移动核心网 IP 也一样
首次激活挑 IP、需要原生家宽               比家宽更原生的也一样

「必须英国原生家宽」这条,至少在这个案例上不成立。

剩下的解释只有账户状态,跟从哪儿连、怎么连、IP 多干净无关。这跟官网那两条提示对得上:「预激活号码不可发送短信」「请插卡拨打任意电话进行激活后,再进行充值/订购套餐等操作」。账户处于预激活,所有主动发起的动作一律拒绝。

七、还剩什么

拨号次数继续累积。论坛上有位打了五十几次突然通,也有人挂两天收到激活短信。

另一条是 4G 模组配 VoHive。它绕过的是 Android 框架层的限制,不是运营商策略——如果拒绝来自账户状态,模组一样会被拒。但它能直接看到 SIP 响应码,能确认对端回的到底是 403 还是别的,现在只能从 busy 这个文案倒推。还没试,有结果再更新。

爱生活,爱奶昔~
luxun楼主Lv.2 发表于 2026-8-3 15:30:52 | 查看全部

【更新3】不用 root 不用抓包,一条 adb 命令就能看到 EE 回的 SIP 码,888 那边是 487

前面几篇都卡在同一个地方:拨 888 显示 busy,但不知道对端回的是什么码。原本打算上 4G 模组来读,后来发现不用——安卓自己就把这个码打在日志里,adb 直接能读,不需要 root,不需要在路由上抓包。

一、怎么看

三步。先清日志,再拨号,然后捞。

adb logcat -b radio,main,system -c
adb shell am start -a android.intent.action.CALL -d tel:888

等十来秒,挂断,然后:

adb logcat -b radio,main,system -d > call.log
grep -E "sipCode|ImsReasonInfo|imsReasonInfoCodeFromRilReasonCode|DisconnectCause" call.log

要找的是这几行:

ImsCallSessionProxy: [callId = 1] getOpImsReasonInfo sipCode 487
ImsCallSessionProxy: [callId = 1] callTerminated() : get disconnect cause from AT+CEER
ImsCallSessionProxy: [callId = 1] imsReasonInfoCodeFromRilReasonCode() : causeCode = 17
ImsCall: callSessionStartFailed :: reasonInfo=ImsReasonInfo :: {338 : CODE_SIP_BUSY, 0, null}

日志 tag 跟芯片平台有关。这台是联发科的,所以是 ImsCallSessionProxy 和 MtkImsCallSessionProxy。高通平台 tag 不一样,grep sipCode 或者 ImsReasonInfo 能覆盖到。

二、888 拿到的是什么

SIP 响应码            487
Q.850 cause          17
Android ImsReasonInfo 338 CODE_SIP_BUSY
界面上显示            Line busy

时间线:

00.267   拨号发起
01.361   487 回来
01.368   callSessionStartFailed
         ──────────────
         全程 1.1 秒

三、487

486 Busy Here          对端明确说这边忙,真占线
487 Request Terminated  INVITE 事务被终止了

487 的常规场景是主叫自己按了取消,服务器对原来那个 INVITE 回 487。但这次没取消——挂断是十秒之后手动发的,呼叫在 1.1 秒就已经死了。是网络那边终止的。

拿到 487 之后,系统会去查 AT+CEER 要详细原因,回来的是 Q.850 cause 17,也就是 User Busy。安卓再把它映射成 CODE_SIP_BUSY,界面上就显示成「Line busy」。

所以那个「忙」是三层映射出来的结果,不是对端真的占线。888 是自动化服务号,不存在占线。而且 1.1 秒就被掐了,真要路由到对端、对端再回忙,不会这么快。

四、这说明什么

事实是:IMS 注册 HOME、VoWiFi 能力可用、INVITE 送到了 EE 并拿到了最终响应 487。

推断是:网络在呼叫建立的早期就终止了事务,然后用一个语义上说得过去的原因码回传。这跟账户处于预激活、不允许发起呼叫对得上。CTExcel 官网自己写的两条也是一个意思——「预激活号码不可发送短信」「请插卡拨打任意电话进行激活后,再进行充值/订购套餐等操作」。

帖子里有几位也是 487,其中有位刷了港版 ROM、VoWiFi 秒拉,抓包结果和原来的 ROM 一模一样,照样 487。换设备形态这个变量,那边已经验证过了。

五、4G 模组这条路

之前写过打算上模组配 VoHive,理由是模组能直接看到 SIP 响应码,而手机上只有一个 busy 的文案。

这个理由现在不成立了。logcat 就能给,而且是从插卡那台机器上直接读的,比模组那条路短。

六、还剩什么

487 这个码目前看是普遍现象,不像是某一台设备或某一套链路的问题。技术侧能查的都是绿的,卡在账户有没有语音权限这一层。

等 iPhone SE3 到了,再试最后一波。

爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

luxun楼主Lv.2 发表于 2026-8-5 15:47:19 | 查看全部
【结贴】CTExcel 大陆激活方案。附完整的变量排除表
https://forum.naixi.net/thread-14221-1-1.html
爱生活,爱奶昔~
4ImdrwhzLv.7 发表于 2026-7-31 18:05:10 | 查看全部
就喜歡看這種看不懂但很厲害的技術貼
爱生活,爱奶昔~
回复 支持 5 反对 0

使用道具 举报

sfw123sfw123Lv.1 发表于 2026-8-5 00:16:54 | 查看全部
我草,我成功了,把那个dns改了就好了,拉起wificall瞬间来激活短信,888也通了。看来问题在那个dns设置
改的哪个dns 
发表于 2026-8-5 00:37
爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

luxun楼主Lv.2 发表于 2026-8-4 21:20:58 | 查看全部
ikaixindeww 发表于 2026-8-4 21:03
“自建的话,伦敦机房的 VPS 按小时计费(0.006 到 0.007 美元一小时),装 sing-box 跑
Hysteria2,激活完 ...

https://www.digitalocean.com/
https://www.vultr.com/
这俩都支持按时长计费,用完可以关闭

账号密码扔给 AI,让 AI 建好就行了
爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

ikaixindewwLv.2 发表于 2026-8-1 21:25:53 来自手机 | 查看全部
大佬,我的卡就是之前晚上的时候疯狂重启插卡打888飞行模式下都无法拨出电话,然后我关闭飞行模式开启卡流量来拨888,手机显示vowifi标志激活了,但是我上官网上查这次通话居然是漫游扣费,然后这张卡激活后我想挂着WiFi calling使用,把您的这篇帖子扔给ai后AI也全都帮我跑通了前置条件,但是试了无数次依旧唤不起WiFi calling😭请问您能帮我看一下我的做法是哪里和您的操作有出入吗,感觉搞了这么多天我也是没招了,万分感谢!https://forum.naixi.net/forum.php?mod=viewthread&tid=14001&page=1&mobile=2#pid194395
爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

CheraxDevLv.2 发表于 2026-8-1 12:43:14 来自手机 | 查看全部
谢谢佬您太厉害了😭完美激活了
爱生活,爱奶昔~
回复 支持 1 反对 0

使用道具 举报

alecthwLv.1 发表于 2026-7-31 18:45:40 来自手机 | 查看全部
888不通基本确定是节点问题。我做aff手上一大堆机场,多数拉wifi calling都没问题,但是888打不通,也不会收到短信。后来买了台英国vps,配vless reality,888拨出去短信一下就来了。机场基本靠运气。
后来我想过,udp端口,如果机场一个节点n个人在拉wifi caling,那母鸡上的端口号算转给谁了。所以猜测早期的时候机场都很好激活,现在很难应该就是这个原因了。
爱生活,爱奶昔~
SakuragagagaLv.1 发表于 2026-7-31 18:49:03 来自手机 | 查看全部
大佬,收到激活邮件,能收到国内手机号发过来的短信,能打通888,但是短信发不出去,也没收到激活短信,这种算激活了吗
爱生活,爱奶昔~
随便点Lv.1 发表于 2026-7-31 19:39:40 | 查看全部
讲的很专业,厉害
爱生活,爱奶昔~
luxun楼主Lv.2 发表于 2026-7-31 19:41:47 | 查看全部
Sakuragagaga 发表于 2026-7-31 18:49
大佬,收到激活邮件,能收到国内手机号发过来的短信,能打通888,但是短信发不出去,也没收到激活短信,这 ...

官网能登进,能看到号码和套餐状态,肯定就是激活了。
爱生活,爱奶昔~
misaka4a92Lv.2 发表于 2026-7-31 19:54:48 来自手机 | 查看全部
看到说esim profile的,写入到卡里自然是没法导出,如果用电脑写卡器之类的方案能实现导出和不同卡片之间转移吗
爱生活,爱奶昔~
xyfcLv.3 发表于 2026-7-31 20:03:44 | 查看全部
我的卡 ePDG 都跑通了,IMS注册失败
爱生活,爱奶昔~
SakuragagagaLv.1 发表于 2026-7-31 21:27:39 来自手机 | 查看全部
luxun 发表于 2026-7-31 19:41
官网能登进,能看到号码和套餐状态,肯定就是激活了。

短信发了,钱扣了,但是别人收不到😮‍💨,也是神了
爱生活,爱奶昔~
azemLv.2 发表于 2026-7-31 22:01:53 | 查看全部
感谢大佬的实操分享
爱生活,爱奶昔~
amigodoreenLv.2 发表于 2026-7-31 23:00:30 来自手机 | 查看全部
xyfc 发表于 2026-7-31 20:03
我的卡 ePDG 都跑通了,IMS注册失败

我昨天用小米 15pro 也是 epdg 成功,ims 注册失败,后来换了 iPhone 才激活,codex 说可能是手机型号的问题,也有人说是 EE 的问题?
爱生活,爱奶昔~
jhgj12Lv.2 发表于 2026-7-31 23:05:40 | 查看全部
参考一下这边的教程
爱生活,爱奶昔~
YecraftLv.4 发表于 2026-7-31 23:32:16 | 查看全部
这个好专业,所以我看不懂
爱生活,爱奶昔~
yexvshuyuLv.2 发表于 2026-8-1 02:54:09 来自手机 | 查看全部
感谢大佬
爱生活,爱奶昔~
operation7668Lv.1 发表于 2026-8-1 09:29:33 | 查看全部
alecthw 发表于 2026-7-31 18:45
888不通基本确定是节点问题。我做aff手上一大堆机场,多数拉wifi calling都没问题,但是888打不通,也不会 ...

机场节点,机房IP,广播IP,wifi calling开关打开后秒出EE wificall,随后就收到激活短信。发BAL,打888一切正常。“基本确定节点问题”吗?
爱生活,爱奶昔~
jacklpLv.1 发表于 2026-8-1 12:02:21 | 查看全部
我已经把手机端能够通过 ADB 修复的项目全部处理并实际验证。现在仍未激活的直接原因不是飞行模式、代理、定位或 ePDG 隧道,而是 CTExcel/EE 的 IMS 平台拒绝了这张卡的注册,返回 403。
爱生活,爱奶昔~
jacklpLv.1 发表于 2026-8-1 12:29:16 | 查看全部
jacklp 发表于 2026-8-1 12:02
我已经把手机端能够通过 ADB 修复的项目全部处理并实际验证。现在仍未激活的直接原因不是飞行模式、代理、 ...

让codex搞的成功了,红米k60 ,切换一下卡就出现了vowifi.收到了激活短信
爱生活,爱奶昔~
JINGEGELv.2 发表于 2026-8-1 12:33:16 | 查看全部
写的很好,但是说实话每个步骤都是细节,对小白来说非常难
爱生活,爱奶昔~
luxun楼主Lv.2 发表于 2026-8-1 13:29:53 | 查看全部
JINGEGE 发表于 2026-8-1 12:33
写的很好,但是说实话每个步骤都是细节,对小白来说非常难

直接全文扔给 AI,不然太难了。。
爱生活,爱奶昔~

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2026 Naixi Networks. 沪ICP备13020230号-1|沪公网安备 31010702007642号手机版小黑屋RSS
返回顶部 关灯 在本版发帖
快速回复 返回顶部 返回列表