Contents

tailscale官方支持纯ip部署derp中继服务器

#网络/tailscale

前言

tailscale提供了官方的derp服务器,但是在国内没有部署,如果家庭内网穿透无法成功的话,有必要自己建立一个中继服务器来保证传输速度和质量。之前很长一段时间tailscale要求使用域名和证书进行部署(现在也没有提供用ip部署的官方文档),域名在国内需要备案,证书还要设置续期,都比较麻烦。网上提供了魔改的版本可以使用纯ip进行docker部署,由于不是官方版本,不知道会不会有什么bug。好在最近官方进行修改,可以直接使用ip和自签名进行部署,无需域名和申请证书,将部署方式记录一下,操作系统为ubuntu 18.04.6。

安装步骤
  • 安装go-lang,版本要求1.23以上。

    snap install go --classic
  • 安装derper。

    go install tailscale.com/cmd/derper@latest
    sudo cp ~/go/bin/derper /usr/bin/
  • 安装tailscale并运行后台程序tailscaled, 无需执行tailscale up和登陆验证。

    sudo systemctl enable tailscaled
    sudo systemctl start tailscaled
  • 启动derper,ip88.88.88.88替换为自己的vps公网ip。修改derp和stun的默认端口,需要在vps的防火墙放行9003(TCP)和9004(UDP)端口。 执行后自动在当前目录下生成证书。

    derper --hostname="88.88.88.88" -certmode manual -certdir ./  -http-port -1 -a :9003 -stun-port 9004   -verify-clients

    这个命令会生成一系列信息,用于下一步填入Access controls。

  • 在tailscale的控制界面->Access controls添加如下脚本:

        "derpMap": {        
            "OmitDefaultRegions": true, //true表示只用自己的节点不用官方节点。      
            "Regions": {        
            "900": {        
            "RegionID": 900,        
            "RegionCode": "hongkong",       
            "RegionName": "TX Cloud",       
            "Nodes": [
            {
                "Name": "custom", //复制自derper的输出信息
                "RegionID": 900, //复制自derper的输出信息
                "HostName": "88.88.88.88", //复制自derper的输出信息
                "DERPPort": 9003,
                "STUNPort": 9004,
                "CertName": "sha256-raw:****", //复制自derper的输出信息
                "IPv4": "88.88.88.88", //改成自己的IP
            },],},},
        },
  • 使用tailscale netcheck查看derp服务器延时。

  • 从家里电脑ping使用移动信号的手机。tailscale ping,可以看出连接采用的是我们部署的derp服务器进行的中转。

其他说明
  • derper运行时候加入了-verify-clients,这样可以保证只有自己tailscale内网的设备可以使用derp服务器,避免被其他人白嫖。
  • 本次部署使用的是香港的VPS,国内VPS没有尝试过,不知道会不会遇到什么问题,这里有一些讨论。