
[!NOTE] 很多做微信小程序开发、Web 前端联调或者自己折腾私有云的小伙伴,都遇到过需要把本地服务“临时暴露”给外网用户的需求。以往我们需要公网 IP 并在路由器上做复杂的端口映射。今天老周手把手教大家使用 Tailscale Funnel(沙漏服务),无需任何公网 IP 和端口映射,也不需要自己申请和配置 SSL 证书,一键就能安全地把本地网页端口安全地映射到公网,并自动获得安全的 HTTPS 链接!本教程仅用于个人多设备互联与合规的远程办公场景。
亲爱的读者,欢迎回到 老周的AI进化实验室!
在前面的文章中,老周分享了许多关于自建自连虚拟网络的实战。但很多小伙伴给老周留言:“老周,自建组网固然好用,但前提是我的设备必须安装 Tailscale 客户端。如果我要写个小程序测试接口,需要微信官方的服务器来回调我本地的网页;或者要临时把写好的前端 Demo 网页发给客户审查,对方根本没装客户端,这该怎么破?”
答案很简单:使用 Tailscale Funnel。
这是 Tailscale 官方提供的一个极其优雅的网络沙漏(Funnel)暴露功能。它允许您无需在公网配置任何防火墙端口映射,就可以直接将本地运行的某个端口(如 8080),安全地对外暴露成一个具有 Let's Encrypt 证书保护的公网 HTTPS 链接(如 https://your-node.tailnet-xxxx.ts.net)。
今天,老周就手把手带大家玩转这个开发调试与合规办公的神器。
对比传统的端口映射或自建穿透,Tailscale Funnel 有以下几个无法抗拒的优势:
⚠️ 法律与安全合规提示: 根据国内网络安全法律规范,面向公众的长期商业网站和 Web 业务必须在云服务商处进行 ICP 备案。因此,老周在这里严肃提醒:Tailscale Funnel 仅适用于开发调试、接口临时联调、以及合规的远程个人办公协作。请勿将其用于搭建任何长期的、非法的公共商业网站或分发未经授权的内容。
出于安全考虑,Tailscale 默认是不允许任何节点直接开启 Funnel 暴露服务的。我们需要先在管理员控制台授予相关权限。
nodeAttrs 属性以允许您的设备(或带特定标签的设备)启用 funnel。例如(默认配置中通常已包含这一段,如果没有,请手动补齐):
"nodeAttrs":[{"target":["member"],"attr":["funnel"],},]点击 Save 保存配置。
tailscale serve 绑定本地服务在开启 Funnel 暴露到公网前,我们首先需要配置本地的 tailscale serve。
tailscale serve 的作用是将您本地设备上运行的服务(例如运行在 127.0.0.1:8080 上的 Web 前端测试网页),映射到 Tailscale 客户端的本地虚拟域名接口上。
我们以本地运行在 8080 端口的网页服务为例,在终端中运行以下命令:
tailscaleservehttps:443/http://127.0.0.1:8080 命令原理解析: 这条命令告诉本地的 Tailscale 客户端,在本地的 Tailscale 虚拟网段里监听 HTTPS 443 端口,并将收到的请求转发给本地回环地址运行在
8080端口上的 Web 服务。由于 Tailscale 自动处理了证书,您在本机直接访问输出的虚拟域名即可实现本地 HTTPS 加密访问。
当本地 serve 配置成功,且能够通过 Tailscale 内网访问后,我们就可以执行最核心的命令,将其推送到公网了!
在终端运行以下命令:
tailscalefunnel443on 执行后,客户端会输出一段您的公网访问域名,例如:
https://my-macbook.tailnet-xxxx.ts.net/ 此时,任何人在任何互联网网络下(无需安装 Tailscale 客户端),在浏览器中直接打开这个链接,就能安全地访问到您本地正在开发调试的 8080 端口服务了!
您可以随时通过以下命令查看当前本地的映射以及 Funnel 状态:
tailscalefunnelstatus 作为极客,我们必须保证最小化暴露原则。当我们完成微信小程序接口调试,或者客户看完了前端 Demo 网页之后,务必第一时间关闭 Funnel 通道:
仅关闭 Funnel 公网暴露(依然保留内网 Tailscale 访问): bash tailscale funnel 443 off
彻底关闭本地 serve 映射: bash tailscale serve reset
Tailscale Funnel 是一项极具生产力的网络工具。它避开了繁琐的公网映射与证书申请流程,为开发工程师、设计师和远程办公人群提供了一条极度安全、随开随关、防线清晰的“网络临时通道”。
如果在配置 Funnel 权限或命令执行中遇到阻碍,欢迎在留言区给老周留言,我们一起探讨解决!
[!TIP] 觉得本期教程实用?别忘了点击“关注”老周的AI进化实验室,并把文章分享给身边同样饱受远控限速折扰的极客朋友们!