使用Tailscale组网




前段时间无意中了解到了Tailscale这个产品。Tailscale是一个基于WireGuard的Mesh组网工具,可以将所有设备连接起来,组成一个大内网。Tailscale是商业软件,免费版最多支持20个设备和一个子网路由,对大多数家用需求来说应该够用了。

我的需求主要有如下几点:

外出时访问NAS

家里的Spectrum网络虽然有公网IP,但是我并没有将NAS的文件服务暴露到公网。我目前使用的是通过端口转发暴露的群晖上自带的OpenVPN,能用但是体验并不好。

安全访问

在不安全的网络(如酒店/机场)中加密通讯以保证安全。

地理位置

用于访问一些有地域限制的网络服务,比如网易云或B站。

特性

Tailscale最大的优势是开箱即用,下面的所有功能均可通过Web界面配置,不需要写一行代码或配置文件。

Mesh组网

当在设备上安装并登录Tailscale之后,该设备会被分配一个100.x.x.x的IP地址。

WireGuard中并没有服务器/客户端的区分,每个客户端都是一个Peer。Peer之间会首先尝试通过NAT穿透建立点对点连接。如果失败(比如设备位于无状态防火墙和Hard NAT背后)则会通过Tailscale提供的Relay进行中继。

如果你想了解NAT穿透的原理,可以参考这篇Tailscale的博客及其译文

DNS

Tailscale网络中内置了DNS服务器,开启后默认使用设备名作为DNS Name。

子网路由(Subnet Routes)

Tailscale只能让我们访问安装了Tailscale客户端的设备,那么能否通过安装了Tailscale的设备访问同一物理网络中的其他设备?

这种情况下可以将某个安装了Tailscale的Linux客户端配置为Subnet Router。这会让这台设备广播一条路由,比如192.168.0.1/24,这样从Tailscale网络即可访问物理网络中的设备[1]

出口节点(Exit Node)

网络中的任意节点(iOS设备除外)都可以被配置为出口节点,连接到Tailscale时可以选择任意的出口节点作为出口。

自建

Tailscale在全球范围内提供了数十个Relay服务器,但是全部位于中国境外。如果你网络要求比较高,也可以自建Relay服务器

如果你不想使用商用软件,则可以选择Tailscale的开源实现HeadScale,但是目前iOS客户端暂不支持自定义服务器。

References

How NAT traversal works · Tailscale

[译] NAT 穿透是如何工作的:技术原理及企业级实践(Tailscale, 2020)

Custom DERP Servers · Tailscale

[1] Subnet routers and traffic relay nodes · Tailscale


One response to “使用Tailscale组网”

Leave a Reply

Your email address will not be published.