NeilB

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

  •  
  •   NeilB · 1h 9m ago · 65 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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
    ♥ Do have faith in what you're doing.