准备工作
服务器
一个有公网IP的服务器,我这里使用的是腾讯云轻量应用服务器,系统是Ubuntu 20.04 LTS,单核2G,5M带宽500G流量。这个配置做derp服务基本是够用的,因为我的设备之间基本都能正常建立p2p连接所以流量方面也不会消耗太多。
域名
一个解析到上述服务器公网IP的域名,这个域名是用来访问derp中转服务的。
安装derper server
首先要安装golang 如果系统已经有go环境则跳过
# 直接下载go官网最新的包 wget https://go.dev/dl/go1.20.4.linux-amd64.tar.gz # 解压到/usr/local目录下 tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz # 配置环境变量 export PATH=$PATH:/usr/local/go/bin # 检查是否安装成功 go version # 回显 go version go1.20.4 linux/amd64 则表示安装成功
|
安装derper server
这里要注意它会默认安装到 $HOME/go/bin
目录下,比如我的就是在 /root/go/bin
目录
# 安装 go install tailscale.com/cmd/derper@main # 加入到PATH export PATH=$PATH:/root/go/bin # 验证一下 derper -h # 回显帮助信息则表示安装成功
|
使用derper server
简单点可以直接运行
# -a 设置端口(如果不用https则使用非443端口且不设置-certmode manual) # -hostname 指定域名 # stun端口不建议修改 derper -a :8080 -hostname derper.eber.vip
|
搞复杂点可以使用systemd管理或者用pm2等工具管理
# 创建derper.service文件 vim /etc/systemd/system/derper.service # 写入以下内容 [Unit] Description=derper service After=network.target StartLimitIntervalSec=0
[Service] Type=simple Restart=always RestartSec=1 User=root ExecStart=/root/go/bin/derper -a :8080 -hostname derper.eber.vip
[Install] WantedBy=multi-user.target
|
配置tailscale或headscale使用自建derp
我之前是使用的headscale自建的服务端,但是用了一段时间有个版本升级不兼容旧的数据库结构,所以直接就换回tailscale了。官方免费的tailscale套餐已经足够我使用了,感觉没必要再用headscale了。
先说官方版tailscale的配置
登录到tailscal控制台后,点击Access Controls,直接在配置文件末尾大括号前一行加入如下配置
"derpMap": { // 这个是设置不使用官方默认的derp节点 "OmitDefaultRegions": true, "Regions": { "900": { "RegionID": 900, "RegionCode": "CN", "RegionName": "Shanghai", "Nodes": [ { "Name": "腾讯云上海", "RegionID": 900, "HostName": "derper.eber.vip", "DERPPort": 8080, }, ], }, }, },
|
配置完成后点击Save保存,然后在客户端设备上执行 tailscale netcheck,会有类似如下输出。
root@oc-au1:~# tailscale netcheck
Report: * UDP: true * IPv4: yes, 152.67.99.59:59810 * IPv6: no, but OS has support * MappingVariesByDestIP: false * HairPinning: true * PortMapping: * Nearest DERP: Shanghai * DERP latency: - CN: 295ms (Shanghai) # 显示你配置的节点RegionCode和RegionName则为成功,然后可以两个客户端互ping进一步确认是否能正常中转流量。
|
再说headscale的配置
# 直接修改 /etc/headscale/config.yaml 文件 # 先注释掉官方的默认derp urls配置 #urls: # - https://controlplane.tailscale.com/derpmap/default # 然后加入自己的derp配置 paths: - /etc/headscale/derp.yaml
|
# 创建 /etc/headscale/derp.yaml 文件 vim /etc/headscale/derp.yaml # 写入以下内容 regions: 900: regionid: 900 regioncode: CN regionname: Shanghai nodes: - name: 腾讯云上海 regionid: 900 hostname: derper.eber.vip derpport: 8080 stunport: 3478 stunonly: false
|
OK!结束🔚,还想再说一句 官方版的用着确实省心。个人用途的话免费版基本足够了不建议用headscale 太折腾了!