我在外面点开 homekit 的视频的时候,发现家庭中枢会往美国的 ip 传输流量,几百 kb 一秒 所以是因为这样在家外面接通才这么慢吗,有什么办法直连吗,有公网 ip
1
jsq2627 2023-10-31 23:34:29 +08:00 via iPhone
我在各种网络条件下实验过,除了局域网,其他情况都不能直连,即使有公网 IP 、有 IPv6 、关 IPv6 防火墙、开了 UPnP/IGD 、Full-Cone NAT ,homekit 的视频流也只能经过苹果服务器中转,而且没有国内服务器,最近也是香港。
homekit secure video 录制的视频也是一样,数据存在海外服务器,即使是国区 Apple ID 。 |
3
rhaegarlai OP @jsq2627 我看 ip 都是美国,没有试过香港的,所以很慢.
只能买 surge ponte 了吗 |
4
jsq2627 2023-11-01 16:36:55 +08:00 via iPhone
@rhaegarlai 我实验过 wireguard ,也不会直连。surge ponte 那么应该也没用。
想要直连除了 vpn 虚拟内网,应该还需要用 avahi reflector 把 mdns 广播中继到 vpn 的网段下。 |
5
jsq2627 2023-11-01 16:38:27 +08:00 via iPhone
我尝试过,只要能把 mdns 广播中继到 vpn 网段下,像 airplay 、homekit 设备控制等依赖局域网直连的协议就都能用了。(但是当时没有验证 homekit 视频流是否能直连)
|
6
jsq2627 2023-11-01 16:41:56 +08:00 via iPhone
https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017 在 ios 上安装这个 app ,可以验证是否能接受到 homekit mdns 广播(_hap._tcp )。
|
7
rhaegarlai OP @jsq2627 我试过 mdns 不能转发到 vpn,要开 tun 模式,然而 ios 不支持 tun 模式
|
8
rhaegarlai OP @jsq2627 wireguard 你有试过转发 mdns 吗
|
9
rhaegarlai OP @jsq2627 surge ponte 我看他可以安装在 atv 上了现在,趁着免费期让我试试看看
|
11
jsq2627 2023-11-24 18:31:17 +08:00
我仔细研究了下,发现还是可以直连的。条件是:
1. iOS 上不开启任何代理,或者启用 Surge ,加上规则 DEST-PORT,3478-3497,DIRECT 2. 家里的路由器不启用任何代理(点名 OpenClash ),或者启用代理,但是在防火墙使 3478-3497 端口的 UDP 流量绕过。必须在防火墙绕过,不能使用 clash 规则绕过,因为套上 clash 之后 NAT 类型会变为 PortRestrictedCone 然后在路由器上抓包验证,确认可以直连。这里有个坑,因为涉及到 NAT 打洞,Surge 请求记录里面显示的对端 IP 是错误的,即使已经直连,Surge 还是显示对端为 17.x.x.x 的美国 IP 。 对于 openwrt+openclash ,可以用这套 nftables 规则来绕过: ``` chain mangle_prerouting { # Bypass OpenClash for STUN packets meta nfproto ipv4 udp dport 3478-3497 counter meta mark set 0 meta nfproto ipv6 udp dport 3478-3497 counter accept } ``` 写入到 openwrt 路由器的 /etc/nftables.d/99-stun-no-openclash.nft ,然后运行 /etc/init.d/firewall reload 重载。 |