Tailscale 搭建derp中继节点,不需要域名,不需要备案,不需要申请证书(最新)

  既然tailscale官方derp源代码支持了IP作为HostName,当然需要测试一番。经过一番摸索,终于在阿里云,华为云成功部署。其中阿里云装的debian 12,华为云装的ubuntu 22.04.下边简单说一下步骤。

首先,第一个问题就是debian/ubuntu的仓库里的golang版本是不够的。都是1.18、1.19这样的版本。需要安装最新的golang版本。golang官方最新的版本是1.23.4,tailscale需要1.23(真够激进的)所以第一件事,就是安装最新的golang。

好在Debian有backport机制,ubuntu有最新的snap包,安装都很简单:

apt search go-1.23
Sorting... Done
Full Text Search... Done
golang-1.23/stable-backports,now 1.23.3-2~bpo12+1 all [installed]
  Go programming language compiler - metapackage

golang-1.23-go/stable-backports,now 1.23.3-2~bpo12+1 amd64 [installed,automatic]
  Go programming language compiler, linker, compiled stdlib

所以直接安装

apt install golang-1.23

安装后需要设置一下环境变量:

export PATH=$PATH:/usr/lib/go-1.23/bin

推荐写到.bashrc,以后每次登录都会加载这个环境变量。检查一下环境变量:

 echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/go-1.23/bin

ubuntu的snap包自带最新版的golang,用下边命令安装:

 snap install go --classic

ubuntu的snap包安装后不用任何设置就可以使用了。安装完成后运行go version看看版本号:

go version
go version go1.23.4 linux/amd64

这时候如果直接用go install会不成功,还是众所周知的原因,所以先配个代理:

go env -w GOPROXY=https://goproxy.cn,direct

然后运行tailscale的官方安装命令:

go install tailscale.com/cmd/derper@latest

安装就完成了。现在derper命令在~/go/bin下,可以直接拷到任意目录,例如/usr/bin下

 sudo cp ~/go/bin/derper /usr/bin/

 

接下来就是配置,首先生成证书,证书是必须的,因为tailscale走的SSL加密。但是不是网上那种只有3个月的免费证书或者花钱买的证书,而是自己做的证书,可以是10年,因为这个证书只是用来加密数据的(等同于密码),所以不存在什么

安全问题,但是这个证书需要包含IP信息:

DERP_IP="12.12.12.12"
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout ${DERP_IP}.key -out ${DERP_IP}.crt -subj "/CN=${DERP_IP}" -addext "subjectAltName=IP:${DERP_IP}"

把上边的DERT_IP后边的IP地址改成自己VPS的地址。屏幕上输出一段乱码后,会在当前目录下生成两个文件,一个key文件,一个crt文件,可以复制到任何目录。这里因为是测试就复制了,现在启动derper服务器:

derper --hostname="12.12.12.12" -certmode manual -certdir ./

hostname一定要是改成你的IP,因为只有用IP他才不判断证书,否则他会说证书不匹配。

现在配置就完成了。可以在浏览器打开这个网址看看,如果不行说明VPS没设置对,需要打开TCP的80、443端口,UDP的3478端口(UDP!UDP!UDP!别问我为什么强调这个)正常是这样子的:

至于上边的不安全之类,无视就行了,因为不是正规机构发的证书,浏览器肯定叫唤。

 

然后再Tailscale的控制台加入我们节点的信息:

    "derpMap": {
        //"OmitDefaultRegions": true,  //加入这个会只用自己的节点
        "Regions": {
            "901": {
                "RegionID":   901,
                "RegionCode": "song",
                "RegionName": "HW Cloud",
                "Nodes": [
                    {
                        "Name":     "901a",
                        "RegionID": 901,
                        "HostName":         "eksoft", //这个随便写
                        "IPv4":             "12.12.12.12", //改成自己的IP
                        "InsecureForTests": true,
                    },
                ],
            },
        },
    },

测试下延时,只有36ms。

来回66ms,加速还是很明显的。

 

posted on 2024-12-06 17:48  yafeng  阅读(137)  评论(0编辑  收藏  举报

导航