22

使用TailScale组网

 2 years ago
source link: https://nyan.im/p/tailscale
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用TailScale组网

Frank

May 4, 2022

前段时间无意中了解到了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的博客及其译文

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK