简要结论
所有 4 种方法均无需开放入站端口。它们之间的区别体现在 谁能够调用该端点、认证机制如何运作以及是否专为 API 负载而设计。
本地大语言模型 API 的威胁模型
在对比各类方法之前,先来了解一下公开本地推理服务器可能引发的问题:
核心原则在于:本地模型 API 本身并不具备用户管理功能。Ollama、vLLM、llama.cpp 以及 LM Studio 默认均提供无需身份验证的访问端点。身份验证机制必须由前端组件负责实现。
部署方式 1:SSH 隧道技术
SSH 隧道能将本地端口请求经由加密的 SSH 会话进行转发。此方式属于最传统且操作最为繁琐的部署手段。运作原理
8000 转发至本地。在隧道保持开启期间,您可以调用 http://localhost:8000,就像该模型就在本地运行一般。
安全特性
- 加密机制: SSH 能提供强大的加密保护。
- 身份验证: 依靠操作系统级别的凭据,即密码或密钥对。
- 访问权限范围: 任何持有 SSH 密钥的用户均可获得该机器的完整命令行访问权限,而不仅限于访问 API 端口。
用于大语言模型部署时的局限
- SSH 需要稳定的公网 IP 地址或中转主机,而 CGNAT 网络环境则完全无法支持 SSH。
- 网络环境发生变化时隧道会中断,且无法自动重新连接。
- 每位用户都必须自行创建隧道并配备专属 SSH 凭据,系统并不支持限定权限范围的 API 密钥机制。
- 该机制不具备内置的流传输支持功能,客户端必须自行处理连接重连事宜。
适用场景
SSH 隧道适合独立开发者快速测试使用,但无法满足团队协作、自动化代理运行或无人值守部署的需求。方法 2:Tailscale
Tailscale 能在您的各台设备间构建一个零信任网状网络(即“tailnet”)。每台设备都会获得一个稳定的 IP 地址,所有数据传输均通过加密的 WireGuard 协议完成。运作原理
安全特性
- 加密机制: 采用基于各设备专属密钥的 WireGuard 加密技术。
- 身份验证: 设备身份经由 Tailscale 协调服务器验证无误后方可接入网络。
- 访问权限范围: 仅被添加至您 tailnet 中的设备才有权访问该模型。
在大型语言模型部署场景下的局限性
- 所有调用端都必须先加入您的 tailnet 网络。这一要求对您个人使用的设备而言尚可满足,但对于需要调用 API 密钥而非 VPN 服务的团队成员、SaaS 客户或编程智能体而言则难以实现。
- Tailscale Funnel 虽可对外发布相关服务,但仅支持 443、8443 与 10000 这几个端口。此外其带宽存在上限且无法自行配置。
- 该方案缺乏 API 密钥管理机制,您只能管控设备访问权限,而无法实现基于单次请求的身份验证。
- 模型服务器本身亦未配备任何身份验证模块。只要处于 tailnet 网络内,任何用户均可无需任何令牌即可发起调用请求。
何时使用此方案
Tailscale 非常适合个人在多设备间进行安全访问,比如让笔记本电脑顺利连接家中的服务器。若所有设备均由您自行管控且无需分发 API 密钥,该工具便是理想之选。方法 3:Cloudflare Tunnel
Cloudflare Tunnel (cloudflared) 无需开放任何入站端口即可将流量引导至 Cloudflare 的边缘网络,其运作机制类似于反向代理。
运作原理
安全特性
- 加密机制: 客户端与 Cloudflare 边缘节点之间采用 TLS 协议加密,后续通信亦由 Cloudflare 与您的源服务器完成加密传输。
- 身份验证: 您可自定义验证方式,例如借助 Cloudflare Access、API 令牌或自行开发的中间件。
- 访问权限范围: 默认状态下所有流量均可公开路由,您亦可在此基础上添加额外身份验证机制。
用于大语言模型部署时的局限
- 缓冲机制: 除非响应内容携带了
text/event-streamcontent-type 标头,否则 Cloudflare 默认会对响应内容实施缓冲处理,这可能导致 SSE 流传输中断或延迟。 - 代理超时设置: 在免费版服务中,Cloudflare 的代理超时时长约为 100 秒。对于需要处理大量上下文信息或高
max_tokens计算负载的长文本生成任务,响应内容极易在传输中途被截断。 - 无需额外 API 密钥层: 您需要自行添加身份验证机制,比如 Cloudflare Access、中间件或 API 网关。
- 复杂度较高: 需要管理 DNS 记录、Cloudflare Access 策略以及隧道生命周期。
适用场景
若您打算将 Web 应用发布至 Cloudflare 边缘节点且已在使用其生态系统,则 Cloudflare Tunnel 是理想之选。不过对于纯推理 API 而言,其缓冲与超时机制在未经大幅调整的情况下并不适用。方法 4:使用 Tokios 连接器
Tokios 连接器专为单一任务设计:将本地模型端点转化为可从任意位置访问且具备身份验证功能的 API。运作原理
1
在模型服务器上安装该连接器
Windows
macOS
Linux
2
完成部署注册并生成 API 密钥
在 Tokios dashboard 界面中,以公开名称注册您的模型(例如
llama3-tunnel),随后创建仅对该模型有效的 sk-tok-… 令牌。3
从任意位置发起调用
安全特性
- 加密机制: 客户端与
api.tokios.com之间采用 TLS 加密,随后通过出站隧道再次使用 TLS 加密传输至您的机器。 - 身份验证: 每次请求均需携带持有者令牌(
sk-tok-…),还可按需限定特定的模型名称范围。 - 访问权限控制: 每个 API 密钥均可被限定仅能访问指定的部署环境。撤销某个密钥后,相关访问权限即刻失效,且无需改动任何连接器或后端配置。
架构说明
The connector only dials out tohttps://api.tokios.com. No inbound port is opened on your machine. No DNS record, no public IP, no port forwarding.
适用场景
在以下情形下使用 Tokios 最为合适:- 通过为每个用户分配专属 API 密钥的方式,实现模型访问权限的共享。
- 与那些需要对接标准 OpenAI 或 Anthropic 基础 URL 的编程辅助工具(如 Claude Code、Codex、Cline)进行集成。
- 在 CGNAT、企业内网 NAT 或其他无法建立入站连接的网络环境中顺利运作。
- 省去自行开发及维护身份验证模块的繁琐流程。
功能对比表
基于使用场景的推荐方案
这些部署方式互不冲突。您可以在同一台机器上同时运行 Tailscale 以实现个人设备的访问,同时部署 Tokios 供团队成员或代理程序使用。
直接开放端口是否可行呢?
设置OLLAMA_HOST=0.0.0.0、在路由器上转发端口,或者将 vLLM 绑定至 0.0.0.0,均可让模型被外部访问,但完全无需任何身份验证。安全研究人员发现,互联网上约有 175,000 个 Ollama 主机处于公开状态(数据来源:SentinelLABS/Censys,2026)。全网扫描器能在数小时内索引出这些暴露的服务。上述 4 种方式均无需开放入站端口,因此切勿为了图省事而选择直接绑定端口的做法。
您的模型始终保留在本地,而生成的端点则可在任何地方使用
无论选用哪种方式,核心原则始终一致:模型数据绝不会离开您的设备,您可自行决定要暴露的端点。Tokios 正是让您能够安全地向多个用户开放模型访问的最便捷途径。深度解析
下文的各项对比均比前述表格更为详尽,涵盖了架构设计、潜在故障模式以及特定工作负载下的约束条件,从而帮助您判断哪种方案更为合适:Tokios 与 Tailscale 的对比
设备网状网络与 API 网关:何时使用点对点 WireGuard 网络,何时又需要配置受限权限的 API 密钥。
Tokios 与 Cloudflare Tunnel 的对比
SSE 缓冲机制、代理超时问题,以及为何 Cloudflare 的边缘节点可能会悄无声息地破坏流式推理功能。
Tokios 与 LiteLLM 的对比
开源的多提供商代理与托管型隧道服务——以及如何将二者结合使用。
Tokios 与自行搭建的架构方案之比较
这个包含 7 个层面的自托管架构涵盖了运行时环境、连接器、隧道服务、身份验证机制、TLS 加密、DNS 配置以及监控功能;同时也会说明在何种情况下自行搭建该架构才值得投入大量时间。
适合使用 Tokios 的场景
决策参考框架:CGNAT 网络环境、团队规模、代理兼容性以及网络隔离需求——据此可判断哪种工具最适合特定使用条件。
快速入门指南
只需短短 2 分钟即可完成连接器的配对操作并注册首个上游模型。
为何仅支持出站流量
这一架构设计决策及其所带来的优势。
远程访问 vLLM 服务的方法
逐步指导如何将本地的 vLLM 服务器对外公开。
加固检查清单
10 steps to secure a self-hosted LLM deployment.