Contents
前段时间无意中了解到了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)
发表回复/Leave a Reply