
协商设备,帮助设备建立直接连接
当设备无法建立直接连接的时候,充当中继服务器
本文介绍如何不使用域名,直接使用 IP 搭建自己的 derp 服务。
此处使用 docker 和 docker-compose 来安装,docker-compose.yml 文件内容如下:
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper
container_name: derper
restart: unless-stopped
ports:
- 13477:13477
- 13478:3478/udp
environment:
- DERP_ADDR=:13477
- DERP_VERIFY_CLIENTS=true
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock对外暴露了 13477 和 13478 两个端口
DERP_VERIFY_CLIENTS 用于客户端验证,也可以选择关闭,但是如果别人知道你的服务器 IP 和端口,就可以白嫖,所以最好还是加上。
然后启动容器,命令如下:
docker-compose up -d
# 检查服务是否启动成功
docker logs derper
这一步也是在 vps 主机上进行。
先执行命令安装 tailscale: `curl -fsSL https://tailscale.com/install.sh | sh
然后再执行命令登录 tailscale:tailscale login
将上一个命令输出的链接粘贴到浏览器并使用自己的 tailscale 账号登录,并连接设备。
对于 VPS,需要开启防火墙端口,具体开启规则如下,端口要和前面 docker-compose.yml 文件里面的一一对应起来。
登录 tailscale 的网页端, 然后进入 Access controls, 再点击 JSON Editor, 切换为 json 编辑模式,在 json 文件中加入 derpMap 这一项,最后保存。加入的内容如下(只需要加入 derpMap):
{
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "tyxy",
"RegionName": "China",
"Nodes": [
{
"Name": "myderper",
"RegionID": 900,
"HostName": "XX.XX.XX.XX",
"DERPPort": 13477,
"STUNPort": 13478,
"CanPort80": false,
"InsecureForTests": true,
},
],
},
},
},
}对其中几项进行说明:
900: 这个是 ID, 只要数字大于等于 900 即可
RegionCode 和 RegionName:地区代码和地区名称,可以随便填,表示你这个节点的名称。节点列表中显示的就是这儿的名称
HostName:你的 VPS 服务器的 IP
DERPPort 和 STUNPort:需要和 docker-compose 里面暴露的主机端口一一对应
设置成功之后将之前已经连接的所有客户端断开再重新连接一下,以便收到新的配置下发,从而使用新的 derp 节点。