V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rhaegarlai
V2EX  ›  HomeKit

homekit 的监控其实是转发到美国然后再回来?

  •  
  •   rhaegarlai · 182 天前 · 1397 次点击
    这是一个创建于 182 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在外面点开 homekit 的视频的时候,发现家庭中枢会往美国的 ip 传输流量,几百 kb 一秒 所以是因为这样在家外面接通才这么慢吗,有什么办法直连吗,有公网 ip

    11 条回复    2023-11-24 18:31:17 +08:00
    jsq2627
        1
    jsq2627  
       182 天前 via iPhone
    我在各种网络条件下实验过,除了局域网,其他情况都不能直连,即使有公网 IP 、有 IPv6 、关 IPv6 防火墙、开了 UPnP/IGD 、Full-Cone NAT ,homekit 的视频流也只能经过苹果服务器中转,而且没有国内服务器,最近也是香港。
    homekit secure video 录制的视频也是一样,数据存在海外服务器,即使是国区 Apple ID 。
    txydhr
        2
    txydhr  
       181 天前 via iPhone
    @jsq2627
    其实可以给库克发个邮件威胁下,告诉他违法了~
    rhaegarlai
        3
    rhaegarlai  
    OP
       181 天前
    @jsq2627 我看 ip 都是美国,没有试过香港的,所以很慢.
    只能买 surge ponte 了吗
    jsq2627
        4
    jsq2627  
       181 天前 via iPhone
    @rhaegarlai 我实验过 wireguard ,也不会直连。surge ponte 那么应该也没用。
    想要直连除了 vpn 虚拟内网,应该还需要用 avahi reflector 把 mdns 广播中继到 vpn 的网段下。
    jsq2627
        5
    jsq2627  
       181 天前 via iPhone
    我尝试过,只要能把 mdns 广播中继到 vpn 网段下,像 airplay 、homekit 设备控制等依赖局域网直连的协议就都能用了。(但是当时没有验证 homekit 视频流是否能直连)
    jsq2627
        6
    jsq2627  
       181 天前 via iPhone
    https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017 在 ios 上安装这个 app ,可以验证是否能接受到 homekit mdns 广播(_hap._tcp )。
    rhaegarlai
        7
    rhaegarlai  
    OP
       180 天前
    @jsq2627 我试过 mdns 不能转发到 vpn,要开 tun 模式,然而 ios 不支持 tun 模式
    rhaegarlai
        8
    rhaegarlai  
    OP
       180 天前
    @jsq2627 wireguard 你有试过转发 mdns 吗
    rhaegarlai
        9
    rhaegarlai  
    OP
       180 天前
    @jsq2627 surge ponte 我看他可以安装在 atv 上了现在,趁着免费期让我试试看看
    Twins666
        10
    Twins666  
       176 天前
    @jsq2627 国区 apple ID 的 HSV 视频居然存在海外服务器上,而不是云上贵州,这个涉及数据出境了
    jsq2627
        11
    jsq2627  
       158 天前
    我仔细研究了下,发现还是可以直连的。条件是:
    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 重载。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   843 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:22 · PVG 04:22 · LAX 13:22 · JFK 16:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.