一个通用 P2P 隧道方案:DSH 的 loopback 同源限制在远程访问下的处理
### 一、背景
DeepSeek Harness ( DSH )将配置面板限制为 loopback 同源,用于防范 DNS rebinding,这一设计是合理的。但该限制对远程访问提出了额外要求:通过局域网 IP 直接连接时,/api 返回 403;通过域名或隧道访问时,面板设置为空(设置仅存在于进程内存),--trusted-host 需要逐一枚举 IP,且不支持通配符,网络变更后需要重新配置。
### 二、替代方案
此前常用的替代方案各有权衡。SSH 端口转发可用,但需要在每台设备上维护隧道及其保活;反向代理需要额外引入认证层。二者均未从根本上解决“服务只信任 loopback”这一约束。
### 三、介绍 kepos
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 报文。
### 五、实际配置
实际配置如下(订阅端):
```toml
[subscriber]
enabled = true
gateway_port = 17480
[[subscriber.services]]
id = "dsh"
local_port = 13080
```
通过 [http://127.0.0.1:13080/](http://127.0.0.1:13080/) 访问,语言与主题设置均可正常修改并持久化。SSH 、Dagger 等原始 TCP 服务可复用同一条隧道,各自绑定独立本地端口。
### 六、访问控制
访问控制方面:未知设备仍无法连接,发布端每个服务可独立配置 allowlist。
### 七、项目状态
项目当前状态为 developer preview:Android 需侧载安装,macOS 也需要 `xattr -d com.apple.quarantine`,UDP 不承载。
### 八、相关链接
- 仓库:[github.com/LamplitIsles/kepos](http://github.com/LamplitIsles/kepos)
- 官网:[https://kepos.guion.io/](https://kepos.guion.io/)
- 集成文档:docs/integrations/[deepseek-harness.md](http://deepseek-harness.md/)
---
原文链接:[点击查看](https://www.v2ex.com/t/1234800)
DeepSeek Harness ( DSH )将配置面板限制为 loopback 同源,用于防范 DNS rebinding,这一设计是合理的。但该限制对远程访问提出了额外要求:通过局域网 IP 直接连接时,/api 返回 403;通过域名或隧道访问时,面板设置为空(设置仅存在于进程内存),--trusted-host 需要逐一枚举 IP,且不支持通配符,网络变更后需要重新配置。
### 二、替代方案
此前常用的替代方案各有权衡。SSH 端口转发可用,但需要在每台设备上维护隧道及其保活;反向代理需要额外引入认证层。二者均未从根本上解决“服务只信任 loopback”这一约束。
### 三、介绍 kepos
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 报文。
### 五、实际配置
实际配置如下(订阅端):
```toml
[subscriber]
enabled = true
gateway_port = 17480
[[subscriber.services]]
id = "dsh"
local_port = 13080
```
通过 [http://127.0.0.1:13080/](http://127.0.0.1:13080/) 访问,语言与主题设置均可正常修改并持久化。SSH 、Dagger 等原始 TCP 服务可复用同一条隧道,各自绑定独立本地端口。
### 六、访问控制
访问控制方面:未知设备仍无法连接,发布端每个服务可独立配置 allowlist。
### 七、项目状态
项目当前状态为 developer preview:Android 需侧载安装,macOS 也需要 `xattr -d com.apple.quarantine`,UDP 不承载。
### 八、相关链接
- 仓库:[github.com/LamplitIsles/kepos](http://github.com/LamplitIsles/kepos)
- 官网:[https://kepos.guion.io/](https://kepos.guion.io/)
- 集成文档:docs/integrations/[deepseek-harness.md](http://deepseek-harness.md/)
---
原文链接:[点击查看](https://www.v2ex.com/t/1234800)
评论
暂无评论。