配置 Headscale
官方教程:https://headscale.net/setup/install/official/
- 下载 deb 包并安装
- 编辑配置文件
- 首先下载官方最新的配置文件模板:https://headscale.net/ref/configuration/
- 然后进行编辑:
- server_url: 将ip更改为服务器的公网ip
- listen_addr: 0.0.0.0:8080
- grpc_listen_addr: 0.0.0.0:50443
- dns.nameservers.global: 更改为国内的公共dns(如223.5.5.5)
- (可选)randomize_client_port: true
- 其余配置不变,复制到
/etc/headscale/config.yaml
- 创建相关目录及修改权限
mkdir -p /var/lib/headscale touch /var/lib/headscale/db.sqlite chown -R headscale:headscale /var/lib/headscale
- 启动:
systemctl enable --now headscale
- 检查运行状态:
systemctl status headscale ss -tulnp|grep headscale
- 在云服务管理中开启tcp 50443和8080端口
- 创建用户,方便客户端接入
headscale user create default
客户端连接
参照官网 https://headscale.net/usage/connect/android/ ,在tailscale客户端配置服务器地址后,在服务器中运行提示的指令。
配置DERP中继
如果有域名,可以https签名后直接配置headscale内置的derp(参见config-example.yaml的注释),如果没有域名,则按以下方法配置:
安装Golang
- 如果安装过旧版本,需要先卸载
- 从 golang 官网 https://go.dev/dl/ 复制最新linux版go下载链接,使用wget等下载
- 也可以在本地下载后用xftp等上传到云服务器
- 运行
sudo tar -C /usr/local -xzf <文件路径>
sudo mkdir -p /usr/local/gopath/bin
- 编辑文件,配置环境变量
sudo vim /etc/profile
- 在最后一行插入:
export GOROOT=/usr/local/go export GOPATH=/usr/local/gopath export GOBIN=$GOPATH/bin export PATH=$PATH:$GOROOT/bin export PATH=$PATH:$GOPATH/bin
source /etc/profile
- 完成安装,运行
go version
检查是否成功 - 配置代理:
go env -w GOPROXY=https://goproxy.cn,direct
安装derper
go install tailscale.com/cmd/derper@main
- 进入
/usr/local/gopath/pkg/mod/tailscale.com@xxx/cmd/derper
,其中xxx会根据版本变化,可以用tab补全 - 编辑 cert.go,注释掉下面三行并保存:
- 同路径下执行
go build -o /etc/derp/derper
cd /etc/derp
,查看是否成功- 自签一个假的域名,用来启动derper服务(其中derp.myself.com为假域名,可以替换):
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.myself.com.key -out /etc/derp/derp.myself.com.crt -subj "/CN=derp.myself.com" -addext "subjectAltName=DNS:derp.myself.com"
- 创建derp服务:
cat > /etc/systemd/system/derper.service <<EOF
[Unit]
Description=TS Derper
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/derper -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp --verify-clients
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF
- 启动服务
systemctl start derper
systemctl enable derper
- 在云服务管理中开启 udp 3478 端口,以及tcp 33445端口
- 在本地浏览器打开 https://<ip地址>:33445/ ,查看是否成功
在headscale 中配置derp节点
- 从headscale官网下载derp-example.yaml并编辑,存在
/etc/headscale/derp-example.yaml
中:
regions:
900:
regionid: 900
regioncode: custom #自定
regionname: My Region #自定
nodes:
- name: 900a
regionid: 900
hostname: 123.123.123.123 #填公网ip
ipv4: 123.123.123.123 #同上
ipv6: "2604:a880:400:d1::828:b001" #公网ip,可不填
stunport: 3478
stunonly: false
derpport: 33445
-
编辑
/etc/headscale/config.yaml
,将derp.path改为上面yaml的路径:
-
重启headscale:
systemctl restart headscale
-
在客户端运行
tailscale netcheck
,查看derp信息中有刚才配的这个就成功了