docs
Tailscale

TailScale

介绍

TailScale

Tailscale 是一款基于 WireGuard 协议的、易于使用的、安全的网络连接工具,它允许用户快速创建自己的虚拟私人网络,实现设备间的安全连接和访问控制。

HeadScale

私有的 Tailscale 控制平台,可以用来管理 Tailscale 的用户、节点、ACL 等信息。

如何配置

HeadScale

  1. 下载安装包参考 (opens in a new tab)
wget --output-document=headscale.deb \
  https://github.com/juanfont/headscale/releases/download/v<HEADSCALE VERSION>/headscale_<HEADSCALE VERSION>_linux_<ARCH>.deb
  1. 安装
sudo dpkg --install headscale.deb
  1. 启动
sudo systemctl enable headscale
  1. 创建一个 namsespace
headscale namespaces create default
  1. 重启: 长时间运行,会导致延迟变高

systemctl restart headscale

Tailscale

  1. 下载安装包参考 (opens in a new tab),更多安装包参考 (opens in a new tab)

    Mac 用户额外配置一下,方便使用命令行
    > alias tailscale="/Applications/Tailscale.app/Contents/MacOS/Tailscale"

  2. 登录:tailscale login --login-server http://x.x.x.x:8080 (opens in a new tab)
  3. 记得修改UserNamespacedefault

配置 Nginx 用于给 derp 加载 url 配置

docker run -d -p 8081:80 -v ~/.derp-configs:/usr/share/nginx/html --name mynginx nginx

配置 derp(可以和 HeadScale 在同一台机器上)

  1. 使用第三方封装的允许 ip 的镜像
docker run --restart always -p 12345:12345 -p 3478:3478/udp -e DERP_ADDR=:12345 --name derper -d ghcr.io/yangchuansheng/ip_derper@sha256:56541aeb1631a126588c1ca04f7a7505db2bc4878b3934150bfa5846f7c14bfa

添加 derp 到 Headscale 中

  1. ~/.derp-configs/derp.json
{
  "Regions": {
    "901": {
      "RegionID": 901,
      "RegionCode": "ali-sh",
      "RegionName": "Aliyun Shanghai",
      "Nodes": [
        {
          "Name": "901a",
          "RegionID": 901,
          "DERPPort": 12345,
          "stunport": 3478,
          # 服务器ip地址
          "HostName": "xxxx",
          # 同上
          "IPv4": "xxxx",
          "InsecureForTests": true
        }
      ]
    },
      // 下面配置,只有配置ddns的时候,需要加
     "902": {
      "RegionID": 902,
      "RegionCode": "ddns",
      "RegionName": "Over DDNS",
      "Nodes": [
        {
          "Name": "902b",
          "RegionID": 902,
          "DERPPort": 8443,
          "HostName": "xxxx.tpddns.cn",
          "InsecureForTests": true
        }
      ]
    }
  }
}
  1. 修改 HeadScale 配置文件/etc/headscale/config.yaml,添加到derp.urls中:http://xxxx/derp.json

  2. 重启 HeadScale

systemctl restart headscale
  1. 在客户端查看 derp 节点是否生效
tailscale netcheck

其他

  1. 重命名节点
headscale node rename <NODE ID> <NEW NAME>

教程参考

  1. Tailscale 基础教程:Headscale 的部署方法和使用教程 (opens in a new tab)
  2. 自建 tailscale 服务接入 headscale 服务器实现异地组网 (opens in a new tab)
  3. headscale 服务自建 derp 服务器,加速双端连接效率 (opens in a new tab)
  4. HeadScale 文档 (opens in a new tab)

遇到的问题

  1. Cannot register machine: failed to find user in register machine from auth callback, User not found

    修改 USERNAME 为 default

  2. 新版本的 derp 好像不能用,目前用的这个版本的ghcr.io/yangchuansheng/ip_derper@sha256:56541aeb1631a126588c1ca04f7a7505db2bc4878b3934150bfa5846f7c14bfa