我退掉了 100 块/月的公网 IP,因为发现了 Tailscale
先说结论:Tailscale 让我把所有设备组成了一个虚拟局域网,公网 IP 不需要了,每月省 100 块。
我的场景只有一个:人在外面时,访问家里那台跑着 AI 助手「龙虾」的机器。就这一个需求,我之前每月付 100 块。
但“虚拟局域网”这五个字,对没接触过网络的人来说,跟天书差不多。
这篇文章的目标很简单:让你看懂 Tailscale 到底干了什么,以及它为什么能替代公网 IP。 不需要任何网络基础,我会用生活里的类比把每一步讲清楚。
先搞懂一个问题:为什么在外面访问不到家里的机器?

你家里那台机器的地址长这样:192.168.1.10。这叫内网地址。
内网地址就像小区里的门牌号——“3 栋 2 单元 501”。在小区内部很好用。但注意:这套号码是全世界重复使用的。你家有 501,我家也有 501,你公司里可能还有个 501。
所以你在公司敲 ssh 192.168.1.10,这个包会去哪?不知道。 这个地址没写是哪个小区、哪个城市,互联网也根本不转发内网地址。包要么在公司网络里直接迷路,要么被送到公司里某个恰好同号码的机器上。
总之,它从头到尾就没往你家走。不是被拦在门口,是信封上根本没写你家的位置。
那用公网地址——你家的“街道门牌”呢?
如果你家有公网 IP,包确实能跑到你家路由器门口。但还有第二道锁:路由器这个门卫。
门卫的规矩:里面的人出去?随便。外面的人主动进来?没人预约,一律拒了。
门卫这套行为,有个正式名字:NAT(Network Address Translation,网络地址转换)。
门卫干的不只是看门。家里机器发包出去时,门卫会把信封上的内网地址撕掉,换成你家的公网地址,同时记一笔账:“这包是龙虾发的,回信记得送还给他。”对方回包回来时,门卫查账、把地址换回来,送进家里。
所以“里面的人出去随便”,不是门不设防,而是门卫手里有本账,回程的路是记下来的。而外面主动进来的包,账上没这一条,门卫不知道该送给哪台机器,干脆拒了。从外面主动发起的连接默认被拒,就是这么来的。
两道锁:内网地址路由不到你家;公网地址到了门口也进不去。 这就是你在外面访问不到家里机器的根本原因。
老办法:买公网门牌,再开洞
为了解开这两道锁,运营商有个套餐:公网 IP + 端口转发。
公网 IP 解开第一道锁:你家门牌从“3 栋 501”变成“XX 路 88 号”,全球唯一,包终于能找到你家。
端口转发解开第二道锁:嘱咐门卫,“从 22 号门来的客人,直接带去 501”。
能用。但有两个问题:
- 贵。 运营商的公网 IP 不是白给的,每月 100 块。
- 危险。 你在临街大门上凿了个洞,全世界都能看到。扫描器、爆破工具天天来敲你的门。
我用了大半年,每月 100 块,就为了在外面能连回「龙虾」。总觉得不值,但又没别的办法。
直到我发现了 Tailscale。
Tailscale 的思路:建一个「虚拟局域网」

Tailscale 换了一个角度思考这个问题。
既然"从外面进来"会被门卫拦,那如果所有设备都主动往外走呢?
门卫的规矩是"外人不让进",但"自己人出去"从来不拦。
Tailscale 做的事情分三步:
第一步:装客户端,登录同一个账号。
在家里的 PC、公司的笔记本、手机上,各装一个 Tailscale 客户端,用同一个账号登录。
第二步:控制平面分配虚拟门牌。
Tailscale 的服务器(官方叫"控制平面")会给每台设备发一个 100.x.x.x 的虚拟地址。这个地址不属于任何物理网络,是 Tailscale 自己编的——就像给每个人发了一张"虚拟小区"的门牌。
第三步:组成 tailnet。
所有登录同一个账号的设备,自动组成一个叫 tailnet 的虚拟局域网。在这个虚拟局域网里,不管你的设备物理上在北京、上海还是东京,它们都觉得自己"插在同一个路由器上"。
在家里连「龙虾」用 100.86.14.3,在公司连同一台机器还是 100.86.14.3。地址不变,体验跟在同一个房间一样。
控制平面只负责"介绍"——告诉 A "B 的公网地址和端口是什么"。数据本身不经过它。 这就像一个介绍人,牵完线就撤了,不会坐在你们中间监听聊天。
核心技术:NAT 打洞

上面说的"所有设备主动往外走",听起来简单,做起来有一个技术难点:NAT 打洞(学名:UDP hole punching)。
用一个场景来解释。
A 和 B 分别住在两个小区里,各自有一个门卫(NAT)。A 想直接找 B 聊天。
直接上门?不行。 A 走到 B 的小区门口,B 的门卫拦住了:"你不是我们小区的,不让进。"
那怎么办?
Tailscale 的控制平面(介绍人)先分别告诉 A 和 B:"对方的公网地址和端口是这个。"
然后关键一步来了:A 和 B 同时从自己家门往外走。
A 走出自己小区的门,A 的门卫记了一笔:"A 出去了,目的地是 B 的地址,回来的时候放行。"
同一时刻,B 也走出自己小区的门,B 的门卫也记了一笔:"B 出去了,目的地是 A 的地址,回来的时候放行。"
因为两边是同时往外发的包,所以当 A 的包到达 B 的门卫时,B 的门卫一查记录:"哦,B 刚出去找的就是这个地址,放行。" 反过来也一样。
两个门卫各自在自己的墙上临时开了一个洞——这就是“打洞”。 用刚才的话说:两个 NAT 的账本上,同时多了一条对方的记录。
洞一旦打好,A 和 B 就能直接通信了,数据包直来直往,不再经过介绍人。
如果打洞失败(有些运营商的 NAT 特别严格),Tailscale 会自动回退到"中继模式"——让控制平面帮忙转发数据。速度慢一点,但至少能通。大多数情况下,打洞是成功的。
为什么公网 IP 可以退掉了?

把两种方案放在一起看,区别一目了然。
以前(公网 IP + 端口转发):
你家路由器在临街的墙上凿了一个洞。全世界都能看到你家有个洞,扫描器天天来敲。你每月付 100 块,买的就是这个"洞"。
现在(Tailscale):
你家路由器的墙完好无损,没有开任何洞。所有连接都是从你家主动往外发的——而"自己人出去"是路由器默认允许的,不需要任何特殊配置。
不需要公网 IP。不需要端口转发。不需要在防火墙上开洞。
你可能会问:没有公网 IP,两台设备怎么互相找到?还记得介绍人吗——它把双方当前的公网出口告诉彼此,解决了“找不到家”;两边又都是自己人主动出门,门卫放行,解决了“门卫不放外人”。两道锁,一分不花就解开了。
安全性反而更高了。 以前是被动等人来敲,现在是主动出去找人。攻击面从"全网可见"变成了"零暴露"。
我的实际体验
我的场景只有一个。
家里那台机器上跑着我的 AI 助手,我管它叫「龙虾」。人在外面时,我想随时连回去用它。就这一个需求。
之前为了它,我每月付 100 块买公网 IP,配端口转发。端口暴露在公网,路由器日志里隔三差五就是来自俄罗斯、巴西的爆破记录——密码够强没被攻破,但看着闹心。
装了 Tailscale 之后:
- 「龙虾」、公司笔记本、手机,登录同一个账号,组成一个 tailnet。
- 在外面打开手机或笔记本,直接访问
100.86.14.x,跟在家里一模一样。 - 公网 IP 退掉了,端口转发删了,路由器日志清净了。
- 每月省 100 块。
整个过程 10 分钟。每台设备装个客户端、登录账号,完事。不用懂网络,不用配路由器。
一些你可能关心的问题
Q:Tailscale 免费吗?
个人使用免费,最多 100 台设备。对大多数人来说完全够用。
Q:速度怎么样?
打洞成功后是 P2P 直连,速度取决于两端的上行带宽,跟公网 IP 方案没有区别。打洞失败走中继会慢一些,但日常 ssh、访问网页完全够用。
Q:数据安全吗?
所有流量走 WireGuard 加密隧道,端到端加密。控制平面看不到你的数据内容,只看到"谁连了谁"。
Q:跟 frp / ngrok 有什么区别?
frp 和 ngrok 需要你自己有一台公网服务器做中转,所有流量都经过它。Tailscale 打洞成功后是直连,不经过任何中转服务器。而且 Tailscale 不需要你维护任何服务器——装客户端就行。
Q:国内网络环境能用吗?
能用。Tailscale 的控制平面服务器在海外,但只是登录时连一下,打洞和通信都是 P2P 直连。如果控制平面连不上,可以试试开代理登录一次,之后就不需要了。
写在最后
公网 IP 解决的是"让外面的人能找到你家"。
Tailscale 解决的是"让你家的人能主动出去找朋友"。
思路一换,问题就变了。不需要在墙上凿洞,不需要每月付 100 块,不需要担心谁来敲门。
10 分钟装好,每月省 100,安全性还更高。 这种好事,不多了。
如果觉得有用,点个在看,转发给你身边还在花冤枉钱买公网 IP 的朋友——省下来的钱,够喝好几杯咖啡了 ☕
有什么想法,欢迎在评论区聊聊——每一个留言我都会看。