NeilB

一个通用 P2P 隧道方案: DSH 的 loopback 同源限制在远程访问下的处理

  •  
  •   NeilB · 13h 10m ago · 365 views

    DeepSeek Harness ( DSH )将配置面板限制为 loopback 同源,用于防范 DNS rebinding ,这一设计是合理的。但该限制对远程访问提出了额外要求:通过局域网 IP 直连时 /api 返回 403 ,通过域名或隧道访问时设置面板为空(设置仅存在于进程内存),--trusted-host 需要逐一枚举 IP 且不支持通配符,网络变更后需要重新配置。

    此前常用的替代方案各有权衡。SSH 端口转发可用,但需要在每台设备上维护隧道及其保活;反向代理需要额外引入认证层。二者均未从根本上解决"服务只信任 loopback"这一约束。

    kepos 是我开发的一个通用 P2P 隧道( Apache-2.0 ),其核心设计是:发布端分享任意 TCP 服务,订阅端以 *.localhost 域名或本地端口的形式访问,使浏览器、SSH 、CLI 等客户端始终认为自己在访问本机。由于 DSH 的 browser-trust 围栏仅校验 Host 头,kepos 将服务挂载于 *.localhost 网关后,Host 即为 loopback ,围栏原样放行。无需修改 --trusted-host ,无需引入认证层,设置项正常持久化,刷新后不丢失。kepos 并未针对 DSH 做任何特殊适配,该能力是其通用设计的结果。

    传输层方面,kepos 基于分布式哈希表( DHT )建立对等连接,并在此基础上实现端到端加密与多路复用。具体而言:HyperDHT 与 UDX 提供经过认证的对等连接、NAT 穿透、路径迁移、可靠有序的数据流;对等密钥对外层连接进行端到端加密认证。多路复用由 Protomux 承载——服务注册表、心跳控制、配对过程以及每个服务各自的独立通道,全部复用同一条持久化的外层连接;隧道本身是 UDX 之上的分裂 TCP 字节流代理,OPEN 、数据、半关闭、重置与背压均经由多路复用通道传递,而非传输原始 TCP 报文。

    实际配置如下(订阅端):

    [subscriber]
    enabled = true
    gateway_port = 17480
    
    [[subscriber.services]]
    id = "dsh"
    local_port = 13080
    

    通过 http://127.0.0.1:13080 访问,语言与主题设置均可正常修改并持久化。SSH 、Dagger 等 raw TCP 服务可复用同一条隧道,各自绑定独立本地端口。

    访问控制方面:未知设备仍无法连接,发布端每个服务可独立配置 allowlist 。

    项目当前状态为 developer preview:Android 需侧载安装,macOS 也需要xattr -d com.apple.quarantine,UDP 不承载。

    仓库:github.com/LamplitIsles/kepos

    官网: https://kepos.guion.io/

    集成文档:docs/integrations/deepseek-harness.md

    1 replies    2026-08-17 09:25:03 +08:00
    wonderfulcxm
        1
    wonderfulcxm  
       1h 57m ago via iPhone
    昨天我也折腾了一下,--trusted-host 就是个坑,反向代理只能解决接口的问题,突破不了浏览器限制,必须用 127.0.0.1 加端口访问。后来还是用 ssh 隧道做,让 dsh 写个脚本,弄个别名,一键开启服务器上的 dsh,然后每 5 秒监控隧道,断线重连。这应该是最简单的方法。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5843 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 147ms · UTC 03:23 · PVG 11:23 · LAX 20:23 · JFK 23:23
    ♥ Do have faith in what you're doing.