Replies: 3 comments
|
现实建议分两档:
(回环绑定为本机实测;官方对公网暴露的具体安全立场未逐行核实。) |
|
补充:关于支持指定监听 IP(bind address)的正式建议 背景 原讨论“能不能开放固定 IP 的远程访问”核心诉求是远程访问。直接开放公网监听风险较高,因为 DSH Web 暴露的是完整本地控制面,包括文件、shell、会话等。官方默认只监听回环地址是合理且保守的。 但实际使用中存在以下场景,需要指定监听 IP,而不是只能使用 127.0.0.1: 绑定 Tailscale IP,仅允许 tailnet 内访问; 绑定局域网 IP,例如 192.168.1.10; 多网卡服务器上只监听指定网卡; 配合反向代理时,让 DSH 监听内网地址而非回环; IPv6 环境,例如 ::1 或指定 IPv6 地址。 目前如果只能绑定回环,上述场景都需要额外反代、隧道或修改代码,体验不够直接。 诉求 希望官方支持可配置监听地址,同时保持默认安全: dsh web 默认仍绑定 127.0.0.1; 支持 --host / --bind / --listen 指定监听地址,具体命名由维护者决定; 支持 IPv4 与 IPv6; 支持环境变量或配置文件,例如 DSH_WEB_HOST; 支持指定端口,例如 --port。 示例: bash 默认值永远为 127.0.0.1,不改变现有安全默认。 绑定非回环地址且未配置鉴权时,建议拒绝启动;如确需绕过,必须显式使用 --insecure。 提供内置 token 鉴权,首次启动生成并仅打印一次。 可选 TLS:--tls-cert / --tls-key。 可选 IP / CIDR 允许列表,例如只允许 Tailscale 网段或局域网。 增加 CSRF / CORS 防护与审计日志。 文档明确推荐:公网固定 IP 场景仍应使用反向代理 + OIDC / mTLS,或 Tailscale / SSH 隧道,而不是直接裸奔。 最小可行方案(MVP) 支持 --host,默认 127.0.0.1。 非回环 + 无鉴权时拒绝启动,或至少强警告并要求显式确认。 提供一个简单 token 鉴权。 文档补充 Tailscale、SSH 隧道、反向代理示例。 验收标准 默认 dsh web 行为不变,仅监听回环。 dsh web --host <指定IP> 仅监听该地址。 非回环且无鉴权时不能启动,除非显式不安全选项。 带鉴权时,未认证请求返回 401 / 403。 IPv6 地址可用。 文档同步更新。 替代方案 SSH 隧道、Tailscale Serve、ZeroTier + 反代、Cloudflare Tunnel 等。官方不必内置所有方案,但支持 bind address 会让这些方案更自然。 备注 本机实测 dsh web 默认绑定 127.0.0.1;官方具体安全立场以仓库文档 / 维护者说明为准。若维护者认为内置鉴权超出范围,至少希望支持指定监听 IP,并在非回环场景明确要求用户自行提供鉴权或反向代理。 |
|
好消息:你列的诉求大部分已经存在,而且 0.0.0.0 的拒绝是刻意的。对照 0.1.5-rc.2 源码:
所以值得顶给官方的不再是「支持可配置监听地址」,而是更窄的两点:① 把 --host 0.0.0.0 的「故意不支持」变成可选 opt-in(在鉴权 + 围栏就位后);② 文档把这些 flag 写清楚 —— 现在几乎没人知道 --host 已经存在。(全部基于 0.1.5-rc.2 源码与测试核对。) |
Uh oh!
There was an error while loading. Please reload this page.
开放固定IP的远程访问
All reactions