关键词
- Tailscale
- Subnet routes
- Exit node
引言
使用Tailscale配置好虚拟组网生态后,我个人沉浸式使用了半年时间,非常好用,非常优雅的满足了我的各种使用需求,忍不住要向大伙儿分享
先说句题外话,之前分享自建Tailscale节点教程的时候,很多佬友在评论区留言说觉得Tailscale用起来太复杂了,还是Zerotier更简单上手。
从我个人的使用体验来说,Zerotier的优势在于节点认证十分简单,设备只需要一串代码就能入网,而基于官方认证系统的Tailscale就需要良好的网络环境,仅从认证这一环节来看,Tailscale确实没有优势(Headscale自建认证系统虽然能解决这个问题,但是对我来说又太麻烦了)
那我为什么最后还是选择使用Tailscale作为我的个人家庭虚拟组网套件呢?
正文
设备情况
首先介绍我的个人设备网络情况,两个局域网不在一个城市:
局域网A下部署一个主路由,该网关下有我的NAS、Ubuntu和软路由;
在另一个局域网B中部署一个副路由,该网关下有我的PC、iPad、手机。
我的需求就是能够随时随地、便捷地访问和配置A网下的所有设备。
graph TD
subgraph "局域网A"
A_GW[主路由] --> NAS[NAS]
A_GW --> Ubuntu[Ubuntu 主机]
A_GW --> SoftRouter[软路由]
end
subgraph "局域网B"
B_GW[副路由] --> PC[PC]
B_GW --> iPad[iPad]
B_GW --> Phone[手机]
end
A_GW <-->|虚拟组网| B_GW
style A_GW fill:#cde4ff,stroke:#333
style B_GW fill:#ffe4cd,stroke:#333
Subnet routes(子网路由器)
这时就要使用到Tailscale的Subnet routes(子网路由器)功能,这也是最吸引我的功能。
虚拟组网会给子网设备分配虚拟的IP地址,这个地址可以自定义。
但是这就有一个不方便的地方,比如说我在局域网环境下访问NAS上的站点服务(如emby、群晖主页)时,已经保存有cookie和历史记录,很多站点服务的端口、账号、密码,我都完全依赖chrome的联想和自动补全,如果在虚拟局域网环境下NAS的IP改变了,就意味着我需要重新输一遍,这对我来说太麻烦了。
而 Subnet routes(子网路由器)可以实现将局域网的某个子网设备作为路由器将一个网段共享,什么意思呢,就是我在虚拟组网环境下,依然可以直接通过访问局域网IP来直接访问设备,不需要做任何调整。
这是一种极大便利,因为我会在手机、平板、电脑上访问局域网下的多个设备,这涉及到十几个应用或窗口,如果都需要一一调整IP,我会裂开的。
而且这个功能的优势在于,你只需要将局域网中一台设备设置为Subnet routes(子网路由器),就可以在虚拟网络环境下访问整个局域网中同网关下的任意设备,甚至可以远程使用打印机(连WIFI的那种),对于局域网设备多的用户来说,减少了太多配置成本。
特别是当你的设备回到局域网环境中时,一切配置都不需要调整的感觉,你想象那种爽感吗?
Exit node(出口节点)
接下来这个功能,我用的不多,但是对于某些场景,实用性是相当高的。
Exit node(出口节点)就是可以将任意一个虚拟组网设备a配置为流量出口节点,如果你在另一个虚拟组网设备b中将设备a选中为出口节点,那么此时你的设备b的所有流量都会通过a中转。
是不是很像VPN?
已经有了clash,这个功能有什么意义呢?
举例子:
-
在手机上同时只能启动一个VPN,如果你使用了Tailscale,你就不能同时使用clash。但如果此时你刚好有一个组网设备实现了科学上网,那么将它作为Exit node(出口节点),在手机上选择它,你就能同时实现虚拟组网+科学上网。
-
又或者有一些设备突然需要科学上网,但是不方便配置clash,或者懒得折腾,直接使用Exit node(出口节点)功能,就能瞬间解决这个难题。
-
再或者在一些业务场景中,某些APP或网站不允许异地登录或者频繁更换IP,你也可以将一个固定家宽设备作为Exit node(出口节点),其他登录设备都将其选择它作为流量出口。
这个功能虽然对我来说使用频率并不高,但是用起来几乎没有任何成本,偶尔用上了就会感到爽的不行。
STUN内网穿透强行实现P2P
接下来这个玩法,我怀疑全网估计都没人说过,虽然原理并不复杂。
Tailscale之所以需要自建derp,一个是增加NAT打洞概率,一个是为了设备NAT打洞失败情况下,也能回退到中继保持联通
但是现实的网络环境并不总受自己掌控,特别是在外租房,那网络环境更是一个比一个逆天,一个比一个复杂,所以NAT打洞几乎是不可能的。
如果我只能使用中继节点的3Mbps“大”水管看emby,那真不如看在线资源
所以之前我在主路由部署了lucky,使用STUN内网穿透随便给一个端口打了一个洞
没想到无心插柳柳成荫,这个穿透出来的地址就相当于我的局域网的公网IP,此时在Tailscale虚拟组网环境中ping我的局域网设备,都自动从STUN穿透地址实现了直连。
总结
实际上我在使用Tailscale时,并没有进行很复杂的配置,也没有仔细研究它的功能,我就是在使用过程中慢慢解锁了上面这些能力,然后才发现它帮我省了多少时间和精力,我非常乐意向你推荐这个宝藏虚拟组网套件。
这篇文章并不是教程,如果有佬友需要更具体的配置,可以留言说一下,我觉得使用起来还是很符合逻辑的。
优点小结
优点1:设备支持
我的个人设备几乎涵盖了所有主流操作系统:Windows、Ubuntu、OpenWrt、群晖、Mac OS、iPad OS、Android,而Tailscale支持以上所有设备,且你很方便的就能实现安装(应用商城、命令行、安装包)。
优点2:支持局域网IP
不管在什么网络环境下,都使用一个固定局域网IP访问设备,使用体验极好。
优点3:自选流量出口
将子网设备作为出口节点,实现流量转发功能。
题外话
说到STUN内网穿透,之前我也分享了一个内网穿透的使用手册,但是现在cloudflare调整了Free计划,好像已经用不了了。
而且之前的域名跳转也很不优雅,我最近想做一个STUN内网穿透2.0教程,并且开发了一个支持动态更新域名的轻量导航站,不知道有没有佬友觉得有意思的,对于导航站的建议可以随时提。




