Skip to content

网络与隧道

交互式实例的"浏览器零安装可达"靠 Cloudflare 隧道实现。理解它有助于知道哪些节点能 SSH、为什么节点不用开放端口。

为什么用隧道

供应商节点大多在 NAT 后、没有公网 IP,也不应为了接单去开放入站端口(不安全、配置麻烦)。平台让节点上的 cloudflared 主动建立出站隧道,把实例服务暴露到一个稳定的公网域名。因此节点只需出站连接,无需任何入站端口,用户在浏览器即可直接访问。

隧道暴露的地址形态:

地址用途
https://i-<实例ID前8位>.inst.<域名>主入口(如 Jupyter /lab
https://i-<实例ID前8位>-term.inst.<域名>网页终端(ttyd)
https://i-<实例ID前8位>-ssh.inst.<域名>SSH over tunnel(VM 等场景)

公网 IP vs NAT 节点

节点类型Jupyter / 网页终端SSH
有公网 IP(public_ip 非空)经隧道直连ssh -p <动态端口> root@<公网IP>
NAT 节点经隧道仅隧道方式(或不提供直连 SSH)

需要直连 SSH 时,在算力市场筛选 public_ip 非空的节点。GET /rentals/:id/access 会据节点能力返回 ssh_cmd / ssh_host / ssh_port

访问地址从何而来

实例运行后调用 GET /rentals/:id/access,返回 tunnel_hostnameaccess 对象(jupyter_urlterminal_urlssh_cmd 等)。open_button 指明主入口。详见 交互式实例

端口暴露

创建实例时 ports 里声明的端口(如推理服务 8000)也经隧道映射;open_button: true 的端口会在控制台显示"打开"按钮。底层端口由 Nomad 动态分配,详见 HashiCorp 集成

安全

  • 隧道为出站发起,节点不暴露入站面,降低被扫描/攻击的风险。
  • Jupyter 通过 token、网页终端通过会话保护访问;不要把带 token 的实例地址公开分享。
  • 节点防火墙建议默认拒绝入站,仅放行管理 SSH,详见 安全最佳实践

基于 MIT License 发布