搜索 K
Appearance
过去半年,我在 AirPick 的读者群里至少见过 200 次同一类提问:"装了 OpenClash 之后,米家卧室灯不亮了""HomeKit 一直显示配件未响应""摄像头隔十分钟掉一次线"。
这不是玄学,也不是设备坏了。99% 的情况是代理层把 IoT 设备的 DNS、组播和路由三条生命线之一掐断了。
直接给结论,优先级从高到低:
198.18.x.x 这类假 IP,云端连接会直接失败,且故障现象极具迷惑性——设备指示灯正常,App 显示"设备离线"。要排障,先得知道设备到底在说什么话。米家和 HomeKit 这套生态,表面上都走互联网,骨子里高度依赖局域网。
米家 App 配网后,设备需要解析 iot.mi.com、*.mi.com、*.mijia.com 等一片域名。代理内核如果开了 enhanced-mode: fake-ip,这些域名会被解析到 198.18.0.0/15(RFC 2544 基准测试保留段)。
对浏览器来说这没问题,内核会在连接时反查真实 IP。但嵌入式 IoT 设备不会走内核的映射表——它拿到 198.18.1.37 就真的去连 198.18.1.37,结果就是握手超时、无限重连。
典型症状:设备能连上 Wi-Fi,路由器后台能看到它在线,但米家 App 永远显示"设备离线"。
OpenWrt 上的 OpenClash、ShellClash 默认用 nftables 的 redirect 或 tproxy 把 TCP/UDP 流量导入内核的透明代理端口。如果规则里没排除 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12,两台设备之间的局域网直连流量也会被塞进代理隧道。
后果:手机 App 找不到设备、米家多设备联动失效、HomeKit 场景执行延迟 5 秒以上。
0.0.0.0/0 一口吞掉 TUN 模式会在系统里建一张虚拟网卡并抢占默认路由。Mihomo / sing-box 的 route-exclude-address 如果没配全,224.0.0.0/4 组播段就会被吞。
mDNS(224.0.0.251:5353)和 SSDP(239.255.255.250:1900)一旦断掉,HomeKit 中枢就再也发现不了配件。 这是"HomeKit 远程控制失效但本地正常"的经典成因。
HAP 协议(HomeKit Accessory Protocol)的 IP 传输层依赖 mDNS 服务发现,记录类型是 _hap._tcp。米家的新版 MIoT 也大量使用 mDNS(_miio._udp、_miotspec._udp)和 UDP 54321 端口的局域网协议。
这些都需要路由器正确转发组播,且不能开启 AP 隔离。很多人在路由器上勾了"无线隔离/AP Isolation"图省事,结果把自己 HomeKit 也一起隔离了。
有个反直觉的现象:即使设备成功走了代理,也可能出问题。米家和小米账号体系对异地登录有风控,如果你的 IoT 流量从东京、洛杉矶节点出去,云端会判定异常,触发验证甚至踢下线。
同时,代理节点的排队延迟(bufferbloat)会让 IoT 的心跳包(通常 30–60 秒一次)超时。IoT 设备对丢包容忍度高,对延迟抖动容忍度极低。
| 方案 | 隔离强度 | 配置复杂度 | IoT 兼容性 | 内网互访 | 硬件要求 | 维护成本 | 适用规模 | 性能损耗 | IPv6 支持 |
|---|---|---|---|---|---|---|---|---|---|
| DNS 白名单(fake-ip-filter) | ★★☆☆☆ | 低 | 中 | 保留 | 无 | 低 | 1–10 台 | 可忽略 | 一般 |
| MAC/IP 路由直连(nftables return) | ★★★★☆ | 中 | 高 | 保留 | 无 | 中 | 10–50 台 | 极低 | 好 |
| TUN 排除网段(route-exclude-address) | ★★★☆☆ | 低 | 中高 | 保留 | 无 | 低 | 1–20 台 | 低 | 依赖内核 |
| 独立 VLAN + SSID 划分 | ★★★★★ | 高 | 最高 | 需 AC 规则 | 网管交换机/AP | 高 | 20–100 台 | 无 | 优秀 |
| 二级路由器隔离(NAT 套 NAT) | ★★★★★ | 中 | 最高 | 默认不通 | 一台路由器 | 低 | 5–30 台 | 中(双层 NAT) | 通常差 |
| 旁路由 + 策略路由分流 | ★★★★☆ | 高 | 高 | 可控 | 独立设备 | 高 | 20–80 台 | 中 | 中 |
| Surge/Clash 客户端层 SSID 策略 | ★★★☆☆ | 低 | 中 | 保留 | 无 | 低 | 手机/平板 | 低 | 一般 |
| 全局 TUN 硬扛 | ★☆☆☆☆ | 低 | 差 | 易断 | 无 | 极高 | 不推荐 | 高 | 差 |
一句话选型:普通家庭选第 2 项 + 第 1 项叠加;设备超过 20 台且有 NAS 的选第 6 项;新装修、能布线拉网线的直接上第 4 项。
A 类:租房党 / 单路由器 / 米家设备 5 台以内 走 MAC 白名单 + fake-ip-filter 双保险。不用折腾 VLAN,OpenWrt 上两条 nftables 规则搞定。
B 类:自建房 / 复式 / 设备 20 台以上 必须做 SSID 分层,2.4G 给 IoT、5G 给人和 PC。IoT 那台 AP 桥接到独立 VLAN,出口走主 WAN 直连,不经过代理策略链。
C 类:HomeKit 重度用户(有 HomePod / Apple TV 中枢) 中枢设备(HomePod、Apple TV、iPad 常驻)建议走独立直连出口或稳定的原生 IP 节点。中枢一旦走代理被 NAT 类型卡住,整个家庭远程控制都会瘫。HomeKit 远程依赖 APNs(TCP 5223、TCP 443),这俩端口必须能出。
D 类:跨境办公 + 智能家居混用 用旁路由做策略路由:主路由只管 NAT 和 DHCP,代理策略全在旁路由,IoT 设备的网关直接指向主路由,天然绕过。
先在 Mihomo 配置里补 DNS 白名单:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "*.arpa"
- "+.mi.com"
- "+.mijia.com"
- "+.miui.com"
- "+.xiaomi.com"
- "+.homekit.arpa"
- "+.apple.com"
- "+.icloud.com"再在 TUN 里排除私有段和组播段:
tun:
enable: true
stack: system
route-exclude-address:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 224.0.0.0/4
- 255.255.255.255/32最后在 nftables 层按 MAC 直接 return(OpenWrt 22.03+ 用的是 fw4):
nft add rule inet fw4 mangle_prerouting ether saddr 3c:cd:5d:aa:bb:cc return建议把常用 IoT 设备的 MAC 一次性写进 /etc/nftables.d/10-iot-bypass.nft,重启自动加载。
iStoreOS 的 OpenClash 插件在"覆写设置 → 绕过中国大陆"里可以填自定义网段,把 192.168.0.0/16 补进去。
梅林���Asuswrt-Merlin)用户注意:如果启用了 AiMesh,主路由的代理策略会下发到节点,IoT 设备连在子节点上时同样会被劫持。 需要在子节点上单独排白名单,或者干脆让 IoT SSID 只广播在主路由。
用地址列表 + mangle 打标记,把 IoT 网段标记为 no-proxy,然后在路由决策时跳过旁路由网关。RouterOS 的组播转发需要显式开启 IGMP Proxy,/routing igmp-proxy 里把 IoT 接口设为 upstream。
Surge 里可以用 SSID 策略,家庭 Wi-Fi 下自动切换为直连规则集:
[General]
bypass-system = true
hijack-dns = 223.5.5.5
[Rule]
SRC-IP-CIDR,192.168.1.0/24,DIRECT
DOMAIN-SUFFIX,mi.com,DIRECT
DOMAIN-SUFFIX,mijia.com,DIRECT
PROCESS-NAME,Home,DIRECT关键点:iOS 上开启代理时,Home App 的局域网发现会被 VPN 描述文件拦截。 建议把家庭场景下的代理客户端设置为"按需连接",回到家庭 Wi-Fi 自动断开。
排障要按"设备能不能上网 → 能不能发现 → 能不能控"三层递进。
# 查看设备是否拿到 IP(在路由器上执行)
ip neigh | grep -i "3c:cd:5d"
arp -a | grep 192.168.1.
# 测试设备端口可达性(miIO 局域网端口)
tcping -p 54321 192.168.1.50
nc -vz -u 192.168.1.50 54321# 在 OpenWrt 上抓某个设备的 DNS 请求(看是否返回 198.18.x.x)
tcpdump -i br-lan -n udp port 53 and host 192.168.1.50 -vv
# 抓 mDNS 组播,确认设备是否在广播服务
tcpdump -i br-lan -n udp port 5353 -vv
# 抓 SSDP
tcpdump -i br-lan -n udp port 1900如果 tcpdump 完全抓不到 5353 的包,说明组播在 AP 或交换机层就被丢了,跟代理无关——去关 AP 隔离、开 IGMP Snooping。
# OpenWrt 上查看 nat 表转发规则命中情况
nft list ruleset | grep -A5 -i "redirect\|tproxy"
iptables -t nat -L PREROUTING -n -v | grep REDIRECT
# 查看路由表是否有 TUN 抢占默认路由
ip route show table all | grep -i tunscutil --dns
networksetup -getdnsservers Wi-Fi
dig @192.168.1.1 iot.mi.com +short| 症状 | 高概率原因 | 验证命令 | 处置 |
|---|---|---|---|
| 设备在线但 App 显示离线 | FakeIP 污染 DNS | tcpdump udp port 53 看返回段 | 加 fake-ip-filter 白名单 |
| HomeKit 配件全部"未响应" | mDNS 组播被吞 | tcpdump udp port 5353 | 排除 224.0.0.0/4,关 AP 隔离 |
| 远程控制失效、本地正常 | 中枢走代理被 NAT 卡住 | 查中枢设备出口 IP | 中枢强制直连 |
| 设备每 5 分钟重连一次 | 心跳超时 / 节点抖动 | mtr -n -c 100 节点IP | 换低抖动节点或直连 |
| 米家 App 配网失败 | UDP 54321 被劫持 | nft list ruleset | 局域网段整体 return |
| 只有部分房间设备掉线 | 子节点/AP 未排白名单 | 按 MAC 分别核对 | 逐节点补规则 |
| 白天正常,晚上全掉 | 节点超售 / QoS 抢占 | 分时段测速 | 排查服务商超售 |
| 宣传话术 | 真实情况 | 识别方法 | 风险等级 |
|---|---|---|---|
| "全屋智能加速,一键搞定" | 全局 TUN 硬套,IoT 全走隧道 | 看是否提供 fake-ip-filter 或 MAC 绕过 | 高 |
| "节点 200+,覆盖全球" | 大量复用同机房,实际可用不足 20% | 批量测延迟与丢包分布 | 中 |
| "原生 IP,解锁全流媒体" | 住宅 IP 少,多为广播 IP | 查 ASN 与反向解析 | 中 |
| "不限流量,随便用" | 软性限速 / 高峰 QoS 降级 | 分时段 iperf3 对比 | 高 |
| "支持所有智能家居" | 只保证 TCP,UDP 组播不管 | 问是否支持 mDNS 转发 | 高 |
| "秒开 4K,永不掉线" | 单节点超售 5–10 倍 | 晚高峰 20:00–23:00 连续测 | 高 |
| "无日志、绝对安全" | 无第三方审计 | 要求公开审计报告 | 中 |
重点提醒:预算低于每月一杯咖啡的机场,几乎不可能给你稳定���低抖动链路。 IoT 设备对抖动敏感,便宜的节点会让你天天怀疑人生。选择有 IEPL/IPLC 专线的服务商,抖动通常能控制在 5 ms 以内,这才是智能家居真正需要的。
Q1:为什么我关了代理,米家设备还是连不上? 先别怀疑代理。检查路由器是否开了 AP 隔离、设备是否连的是 5G 频段(部分米家设备只支持 2.4G)、DHCP 池是否耗尽。代理只是最常见的背锅侠。
Q2:FakeIP 关了会不会影响我上网体验? 会有轻微影响,主要体现在首次连接延迟增加(需真实 DNS 解析)。折中方案是保留 FakeIP,但把 mi.com、mijia.com、apple.com、homekit.arpa 加进 fake-ip-filter,让这些域名走真实解析。
Q3:HomeKit 中枢用 HomePod 还是 Apple TV? 实测 Apple TV 有线接入时稳定性最好,HomePod 走 Wi-Fi 容易受 2.4G 干扰。无论用哪个,中枢都必须处于同一二层网络,且不能被代理策略劫持。远程控制依赖 APNs,确保 TCP 5223 和 TCP 443 可出。
Q4:VLAN 划分后,手机还能控制 IoT 设备吗? 可以,但需要在三层交换机或路由器上放行跨 VLAN 的策略:允许手机 VLAN 主动访问 IoT VLAN,禁止 IoT VLAN 反向访问内网其他资产(这也是安全加固的核心价值)。
Q5:二级路由器套 NAT 会不会让 HomeKit 远程失效? 双层 NAT 会破坏 UPnP 和部分 P2P 发现。如果一定要这么做,把二级路由设为 AP 模式(桥接)而不是 NAT 模式,或者在上游做端口映射。
Q6:换了专线节点还是掉线,怎么办? 做一次 24 小时 mtr 记录,判断是代理侧丢包还是运营商侧丢包。如果最后一跳之前就有丢包,问题在你的宽带;如果代理节点 IP 附近丢包,问题在服务商。
Q7:IoT 设备要不要给固定 IP? 强烈建议给。DHCP 保留(静态租约)能让你的 nftables 规则更稳定,也能避免设备重启后 IP 漂移导致白名单失效。