背景

家庭网络使用软路由架构:

主路由
  ↓
ImmortalWrt(运行 sing-box)
  ↓
终端设备(Windows / 手机)

目标:

  • 使用 sing-box 代理网络

  • 保留真实 DNS 解析

  • 开启 IPv6

  • 避免 FakeIP 对 Wi-Fi Calling(WFC / IMS)的潜在影响

  • 排查 IPv6 不通问题


一、排查 FakeIP 是否生效

问题现象

最初怀疑:

sing-box 是否返回 FakeIP,导致运营商 IMS/Wi-Fi Calling 异常?

检查 DNS:

nslookup www.google.com

如果返回类似:

198.18.x.x

通常代表 FakeIP 模式。

真实解析应该返回公网地址,例如:

142.x.x.x

或:

2xxx::/64

IPv6 地址。


二、sing-box 配置检查

检查是否启用了 FakeIP:

grep -n "fakeip" /etc/sing-box/config.json

发现:

{
  "tag": "fakeip",
  "address": "fakeip"
}

说明配置中存在 FakeIP DNS。

同时 sing-box 提示:

legacy DNS fakeip options is deprecated

表示新版 sing-box 已经开始迁移 DNS 配置格式。


三、最终选择:关闭 FakeIP,使用真实解析

原因:

Wi-Fi Calling / IMS 对网络环境比较敏感。

部分运营商 IMS 流程:

手机
 ↓
DNS 查询 IMS 域名
 ↓
获取真实服务器地址
 ↓
建立 IMS 注册连接

FakeIP 会变成:

ims.domain.com
        ↓
198.18.x.x

虽然大部分代理软件可以处理,但运营商 IMS 场景可能出现兼容问题。

因此:

  • 普通网页代理:FakeIP 很方便

  • IMS / VoLTE / Wi-Fi Calling:建议真实 DNS


四、发现真正问题:不是 FakeIP,而是 IPv6 缺少默认路由

修改前:

DNS 正常:

nslookup ipv6.google.com

可以解析 IPv6:

2xxx:xxxx::xxxx

但是:

ping -6 ipv6.google.com

失败。

检查路由:

ip -6 route

发现没有:

default via xxxx

问题定位:

IPv6 地址存在,但没有 IPv6 默认网关。


五、修复 ImmortalWrt IPv6

检查网络配置:

cat /etc/config/network

确保 LAN 支持 IPv6:

option ip6assign '60'

重启网络:

/etc/init.d/network restart

再次查看:

ip -6 route

修复后出现:

default from xxxx::/64 via fe80::xxxx dev br-lan

说明:

  • 已获得 IPv6 前缀

  • 已收到 RA

  • 已存在 IPv6 默认路由


六、不要使用 ping 判断 IPv6 是否正常

测试过程中:

ping6 ipv6.google.com

失败。

容易误判 IPv6 不可用。

实际测试:

wget -6 --spider https://www.google.com

返回:

HTTP request sent, awaiting response... 200 OK

说明:

  • DNS 正常

  • IPv6 路由正常

  • TCP/443 正常

结论:

ICMP 不通 ≠ IPv6 不可用。


七、让终端重新获取 IPv6

Ubuntu:

重新应用网络:

sudo netplan apply

检查:

ip -6 route

正常:

default proto ra
        nexthop via fe80::xxxx dev ens33

说明终端已经获得 IPv6 默认路由。


八、Windows IPv6 验证

开启 IPv6 后:

curl -6 https://www.google.com -I

返回:

HTTP/1.1 200 OK
Server: gws

说明:

  • Windows IPv6 地址正常

  • IPv6 DNS 正常

  • IPv6 出口正常


九、最终网络状态

优化完成后:

项目

状态

IPv4

正常

IPv6 地址

正常

IPv6 默认路由

正常

DNS真实解析

正常

FakeIP

已避免

HTTPS IPv6

正常

Wi-Fi Calling环境

更兼容


十、踩坑总结

1. 有 IPv6 地址 ≠ 有 IPv6 网络

错误判断:

看到 IPv6 地址
=
IPv6正常

实际需要检查:

ip -6 route

必须存在:

default via

2. DNS 能解析 IPv6 ≠ IPv6 能访问

例如:

nslookup google.com

成功。

不代表:

curl -6 https://google.com

一定成功。


3. 不要只用 ping 测试 IPv6

很多公网服务限制 ICMP。

优先:

curl -6

或者:

wget -6 --spider

4. FakeIP 不适合所有场景

FakeIP 优点:

  • 代理规则简单

  • 防止 DNS 泄露

  • 兼容大量应用

缺点:

  • 某些 IMS / VoLTE / WFC 场景可能异常

  • 部分需要真实 IP 的应用可能受影响


5. 排查网络问题顺序

推荐流程:

1. 检查 DNS
        ↓
2. 检查 IP 地址
        ↓
3. 检查默认路由
        ↓
4. 检查 TCP/HTTPS
        ↓
5. 最后检查代理规则

不要一开始就怀疑代理。


总结

本次故障最终原因不是 sing-box FakeIP,也不是 DNS 问题。

核心问题:

软路由虽然获得 IPv6 前缀,但没有正确下发 IPv6 默认路由。

修复 IPv6 RA 后:

  • ImmortalWrt 获得 IPv6 默认路由

  • Ubuntu / Windows 自动获取 IPv6

  • IPv6 HTTPS 正常

  • 使用真实 DNS 后,更适合 Wi-Fi Calling 环境

对于需要 IMS、VoLTE、Wi-Fi Calling 的家庭代理环境:

推荐方案:

IPv6 开启
+
真实 DNS
+
避免 IMS 流量 FakeIP
+
精确代理规则

这样可以兼顾代理能力和运营商服务兼容性。

本文源自本人真实经验,使用AI进行总结。

好句天成,妙手偶得。