现象回顾
- 劫持 WIFI 网络环境, Sqi-dns-hijacking 把
core.sqiapp.com
解析到203.208.39.99
, 已知目标 IP 已开启 443 端口。 - 你的
NSURLSession
任务在didFinishCollecting
回调里拿到一条NSURLSessionTaskTransactionMetrics
,但:
(Local Address) (null)
(Remote Address) (null)
Apple 的计量规则
localAddress
/ remoteAddress
只有在 “这条连接被真正用来传输应用层数据” 之后才会被填充。
Apple 文档对两个属性都写着几乎相同的一句(高亮是我加的):
If the app didn’t use the connection, this value is nil
在下面这些情况下,系统会认为“连接没被用过”:
情形 | 结果 | 为什么地址为 nil |
---|---|---|
TLS 握手/证书校验失败 (例如被劫持到 203.208.39.99,证书与 core.sqiapp.com 不匹配,ATS 或你自己的 Pinning 在 ClientHello 之后就终止连接) |
task 直接报 NSURLErrorServerCertificateUntrusted 等错误 |
没有任何应用数据发出,连接标记为 “unused” |
域名解析失败 / TCP 握手没做完 | 地址自然拿不到 | 同上 |
iCloud Private Relay 或代理 ( isProxyConnection == Y |