通过Tailscale组建虚拟局域网实现内网穿透、异地客户端组网(以群晖和openwrt为例)
Tailscale是一种基于Wireguard的多地组网的软件,能够实现将多地主机,都聚合在一个虚拟的局域网中,让这些设备之间能够相互访问,而且所有的节点都直接使用p2p连接。tailscale实现远程访问的形式和netbird类似,netbird组网参考这里。
一、TailScale注册
首先找到Tailscale官网进入。点击try for free按钮,支持google,microsoft,github,apple等账号登录(免费用户不支持直接email注册),登录成功后,会来到Machines机器列表界面,初次登录,界面是空的。
登录后,就可以在需要的机器上安装客户端。点此进入官方客户端下载列表。可以看到,支持的平台非常多,如Windows、ios、android,linux、mac等等都可以,按相应的说明安装即可。
linux下终端里使用以下命令
把安装了tailscale客户端的机器加入虚拟局域网,步骤都大同小异。如windows下,运行tailscale程序,在右下角的tailscale图标,点击"log in",会弹出登录页面,授权,即可在机器列表页面查看IP等相关信息。linux系统下,运行命令tailscale up,会生成一个登录链接,将链接复制到浏览器打开,登录、授权即可(如没有弹出页面,或没有生成登录链接,需要打开VPN等科学上网工具)。
二、群晖安装Tailscale
在此处找到你群晖的对应的版本,下载后在群晖package center手动安装
安装完成后,点击Tailscale图标的open,会跳转到登录界面,按提示登录账号,点击Connect就可以了,群晖安装就完成了,非常简单。
进入tailscale机器列表界面,就会发现前面连接并加入组网的设备。可以看到,在加入的设备列表中,每台设备都会给你分配一个IP,如果你要访问群晖,找到这台群晖的设备,并复制这个IP。然后在一台同样安装tailscale并加入组网的电脑上打开浏览器,在地址栏处粘贴这个IP地址加你机器的端口号,如群晖是默认5000端口,就可以远程访问已经加入组网的群晖了。
如果这台设备是常用的,可以找到设备后的3个点图标,展开,点击disable key expiry,这样就是长期授权。
三、TailScale子网路由配置,参考这里
如果群晖已经安装了tailscale ,与群晖同在一个局域网的设备,如路由器、或者其它不能安装tailscale客户端的设备,就可以借助这台安装了tailscale的群晖实现流量转发。
比如路由器所在局域网的地址是192.168.8.1,同一局域网中的群晖设置子网路由后,那么所有加入tailscale组网的机器就可以直接通过192.168.8.1直接远程访问这台路由器。也就是说,这个内网地址既可以在局域网中使用,也可以在加入tailscale组网的机器中远程直接访问,非常方便,甚至连IP地址都不用更改。
首先打开群晖的SSH功能,使用相关SSH软件登录,运行以下命令
注意,其中的192.168.8.0替换成你自己的真实网段,如果你群晖内网IP地址是192.168.1.6,那么就将192.168.8.0更改为192.168.1.0即可。
然后返回机器列表,找到这台群晖,点后面的3个点,打开Edit route settings,把这个网段打开就行了。
从其他安装了tailscale的电脑客户端启用访问subnet routers功能,windows的如下
linux则需运行以下命令
子网路由就设置成功了。在电脑上,确保已经开启tailscale客户端,在电脑上浏览器访问192.168.8.1,应该就可以访问路由器了。
如果想取消子网路由功能,运行以下命令
SSH登录openwrt后台运行以下命令(测试环境openwrt23.05)
然后运行以下命令
复制生成的链接到浏览器,打开,登录并授权即可
以下命令可查看tailscale状态
重启openwrt,在浏览器访问tailscale 页面分配的IP,应该就可以访问openwrt的管理页面了。
五、TailScale Exit Node 出口节点配置
TailScale Exit Node功能可以实现将安装了tailscale客户端的机器流量导向指定的出口节点,通过此节点访问所有网站。应用场景如:如家里的openwrt搭建了科学上网环境,就可以在openwrt上配置tailscale exit node,其他安装tailscale客户端的机器就可将其所有流量导向openwrt,实现科学上网了,显示的IP也是openwrt所在网络的IP。
SSH登录openwrt,运行以下命令
然后打开机器列表,找到openwrt,点后面的3个点,打开Edit route settings,启用use as exit node即可。
客户端也要设置,windows,ios,andorid等图形客户端,只需在菜单中找到exit node,选择相应的客户端名称
linux下,运行以下命令
100.100.99.88为出口节点的tailscale IP 。
若想取消出口节点功能,运行以下命令
或简单点
Tailscale 的控制服务器是不开源的,而且对免费用户有诸多限制,有一个开源项目headscale实现了 Tailscale 控制服务器的所有主要功能,可以部署在企业内部,没有任何设备数量的限制,且所有的网络流量都由自己控制。
六、部署自己的 DERP 中继服务器
Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国。这就导致了一旦流量通过 DERP 服务器进行中继,延时就会非常高。为了实现低延迟、高安全性,我们可以参考 Tailscale 官方文档自建私有的 DERP 服务器。有两种部署模式,一种是基于域名,另外一种不需要域名,可以直接使用 IP。下面是简单的不使用域名的方案。
登录官网,修改ACL文件 为以下内容
保存后,在安装了tailscale的客户端运行以下命令检查是否使用的是自建的derp
七、Tailscale 推出了全新的 Peer Relay 功能,让内网穿透更加简单而稳定。参考这里
Peer Relay 的特点:无需域名、证书和备案,免费用户也可以配置 2 个中继节点。
需要一台具有公网 IP 的服务器作为中继节点,已经安装了tailscale客户端。这台服务器可以是:云服务商的 VPS(最好是国内的如阿里云、腾讯云等);或有公网 IP 的家庭宽带设备;或Full Cone NAT 环境下的设备。
在作为中继的服务器上执行以下命令
端口号 40000 可以改为任意开放的 UDP 端口,确保服务器防火墙和云服务商安全组都放行了该 UDP 端口。
然后登录 Tailscale 管理后台,配置 ACL 规则,添加以下字段
保存后验证,在任意客户端设备上执行
如果配置成功,你会看到类似的输出
Peer Relay 只负责中继流量,无法替代 DERP 的 NAT 打洞(STUN)功能。建议保留 DERP 。

评论
发表评论