编辑
2023-03-13
灌水
00
请注意,本文编写于 960 天前,最后修改于 665 天前,其中某些信息可能已经过时。

目录

Tailsacle简介
Tailsacle使用
Headscale搭建
1.准备工作
2.启动Headscale
3.客户端连接
Windows
Linux
Android
4.额外的功能

img.jpg

Tailsacle简介

Tailscale是一种基于WireGuard的虚拟组网工具,可以轻松管理对私有资源的访问,快速通过SSH连接到网络上的设备,并在任何地方安全地工作。Tailscale能够实现将多地主机,都聚合在一个虚拟的局域网中,让这些设备之间能够相互访问。

相较于WireGuard,Tailscale在其基础上提供了更加友好的用户体验,包括虚拟路由,虚拟子网等。可以通过Tailscale的网页管理界面,轻松地管理虚拟局域网中的设备,以及对设备的访问权限进行管理,使得整体功能更加易用完善。(WireGuard相关的内容可参考 基于WireGuard实现内网穿透


Tailsacle使用

可以在Tailsacle官网上注册账号,然后下载对应平台的客户端,安装后登录即可使用。不同平台的配置可以参考官网给出的文档。

Tailscale的个人用户在接入设备不超过20台的情况下可以免费使用(存在有一些限制,比如子网网段无法自定义,无法设置多个子网,只能配置一个虚拟路由)。对于大部份用户来说,Tailscale免费版已经足够日常使用了,相比于Zerotier,Tailscale更容易添加虚拟路由,任何一个节点就都可以被设置为路由,从而让所在内网被其他节点访问到。


Headscale搭建

Tailscale的免费版可以满足大部分用户的需求,已经足够日常使用了,但是免费用户仍然存在一些限制,为了解除这些限制,有开源项目重新把Tailscale实现了一遍,项目名称叫Headscale。自建开源版Tailscale,也就是Headscale,好处是突破Tailscale免费版的限制,自定义子网网段,设置多个子网与命名空间等,而且无论是打洞还是使用服务器直接中转连接,都可以直接使用自建的服务器来进行,速度也会更快。

1.准备工作

可以在Headscale获取源码与说明

bash
wget --output-document=/usr/local/bin/headscale headscale_release版本路径 #设置执行权限 chmod +x /usr/local/bin/headscale

创建配置

bash
#创建配置目录 mkdir -p 指定目录/headscale #创建数据库文件 touch 指定目录/headscale/db.sqlite #创建配置文件: wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O 指定目录/headscale/config.yaml

配置文件需要修改的内容:

  • server_url: 替换为服务端ip地址加指定端口
  • ip_prefixes: 替换为自定义的子网网段
  • 指定路径相关的配置,如db_path,unix_socket,private_key_path等,需要替换为刚才创建配置的目录。

2.启动Headscale

创建headscale.service:vim /etc/systemd/system/headscale.service

bash
[Unit] Description=headscale After=syslog.target After=network.target [Service] Type=simple ExecStart=/usr/local/bin/headscale serve Restart=always RestartSec=5 NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/var/lib/headscale /var/run/headscale AmbientCapabilities=CAP_NET_BIND_SERVICE RuntimeDirectory=headscale [Install] WantedBy=multi-user.target

启动Headscale并创建namespace

bash
systemctl daemon-reload #启动服务,设置开机自启: systemctl enable --now headscale #查看运行状态: systemctl status headscale #创建namespace: headscale namespaces create default #查看namespace headscale namespaces list

3.客户端连接

Headscale.png 注意,Headscale并没有重新去实现Tailscale的客户端,所以仍然使用Tailscale的原生客户端修改配置后进行连接,理所应当,IOS端不支持,Android端需要重新编译过的客户端。


Windows

打开server_url/windows,server_url替换成Headscale的配置,可以下载一个注册表修改工具,执行后安装Tailscale Windows客户端,登陆的时候就会去搭建Headscale的服务器进行认证,认证成功即可加入网络。


Linux

下载Tailscale Linux客户端,并启动。

bash
#启动服务,server_url替换成Headscale的配置,advertise-routes替换成内网网段(需要打开转发) tailscale up --login-server=server_url --accept-routes=true --accept-dns=false --advertise-routes=192.168.1.0/24

执行完后,终端会出现一行网址,打开网址后,会出现一行指令,需要将指令复制到Headscale服务器执行

bash
#需要将namespace替换为服务器创建的,uuid为网址上出现的uid headscale -n namespace nodes register --key uuid #查看加入的节点: headscale nodes list #允许网段 headscale routes enable -i 1 -r "192.168.1.0/24"

Android

需要修改Android客户端的源码,提供指定服务器地址的功能,然后重新生成release版本安装。(嫌麻烦的话可以在网上找已经重新编译好的版本)


4.额外的功能

  • Headscale-ui:可以在Headscale-ui处下载可视化界面,通过docker部署,可以通过浏览器可视化访问Headscale的管理界面。

  • route:添加advertise-routes并打开转发,可以通过网关接入Headscale,使得局域网内的所有设备都可以通过Headscale访问到。

  • exit-node:使用tailscale up --advertise-exit-node可以指定一个服务器为exit-node节点,使得流量通过该节点进行中转。

  • derp:中转服务器,节点与节点进行连接时,会首先通过derp服务进行中转连接。


搭建开源版Tailscale——Headscale