
























Tailscale Serve 和 Funnel 是一对用于网络共享的核心功能,它们由零信任网络服务提供商 Tailscale 开发。简单来说,Serve 用于内部安全共享,而 Funnel 用于安全地公开服务。
为了能快速理解并选择合适的功能,它们的核心区别总结如下:
| 特性 | Tailscale Serve | Tailscale Funnel |
|---|---|---|
| 核心用途 | 在 Tailscale 内部网络(Tailnet)中安全共享本地服务。 | 将本地服务安全地公开到整个互联网。 |
| 访问范围 | 仅限于你的 Tailnet 内的设备或用户(包括已接受共享的外部用户)。 | 对互联网上的任何人开放(需在 ACL 中明确允许)。 |
| 典型场景 | 内部协作、开发测试预览、私有文件共享。 | 公开演示、临时分享给无 Tailscale 账户的客户。 |
| 身份验证 | 自动且强认证。通过 Tailscale 网络加密,并可为后端服务提供用户身份头信息。 | 依赖 Tailscale 的网络层安全,公开访问时不附带用户身份头信息。 |
| URL 格式 | https://<设备名>.<你的tailnet>.ts.net。 |
https://<设备名>.<你的tailnet>.ts.net:端口 (需显式指定端口)。 |
| HTTPS 证书 | 由 Tailscale 自动签发和管理,使用你的 Tailnet 专属域名。 | 由 Tailscale 自动签发和管理,使用你的 Tailnet 专属域名。 |
Tailscale Serve 的主要作用是将运行在你设备上的服务变成你整个Tailnet内可访问的“内部网站”。其常见用途包括:
localhost:3000 的开发网页应用分享给同事预览。demo-server.your-tailnet.ts.net),供多人轮流共享其上的服务,保持URL不变。Tailscale Funnel 则是在 Serve 的基础上,在 Tailnet ACL 策略允许的前提下,为指定的服务开启一个面向公网的“漏斗”,使其能被互联网上的任何人访问。这是一个让你能随时、可控地将内部服务公开的理想工具。
两者的基本命令格式都非常直接。
Serve 的基础命令:tailscale serve <目标>。其中<目标>可以是端口号(如 3000)、本地文件路径或静态文本。
Funnel 的基础命令:tailscale funnel <端口号>。该命令会将指定端口对应的 Serve 服务开放到公网。
一个重要且方便的特性是,无论是 Serve 还是 Funnel,Tailscale 都会为你的设备自动生成一个唯一的、基于 TLS 的 HTTPS 域名(格式如 your-device.your-tailnet.ts.net),你无需自己配置 SSL 证书。
在安全方面,Serve 在为内网流量转发请求时,会向后端服务添加包含请求者身份(如登录邮箱、显示名)的 HTTP 头信息(如 Tailscale-User-Login),方便后端进行精细的权限控制。
在使用时,有几个重要的限制需要了解:
serve 使端口完全私有,funnel 使端口完全公开)。总的来说,Tailscale Serve 和 Funnel 让你能以前所未有的简便和安全方式分享网络服务:
它们的结合覆盖了从私有到公开的完整服务暴露需求,核心优势在于 自动化(HTTPS证书、域名) 和 安全性(基于零信任网络)。
# 检查本主机 tailscale 服务是否正常(可以访问 https://login.tailscale.com/admin/machines 登录查看已经加入网络的主机)
sudo tailscale status
# 主机启动 Serve
sudo tailscale serve --bg http://127.0.0.1:3000
# 启动完毕后会返回一个https访问地址,将这个地址在另外一台主机上打开即可(两台主机必须是同一个tailscale网络,否则打不开)
https://xxx.tailxxx.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:3000
# 查看所有已配置的 Serve 服务
sudo tailscale serve status
# 停止共享服务
sudo tailscale serve reset
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。