24 / 08 / 13

搭建 tailscale 的 Derp 节点教程

介绍 DERP

DERP(Distributed Exit Relay Protocol)是Tailscale提供的一种协议,它允许远程用户安全地访问内部网络资源。DERP服务器扮演着中继站的角色,将远程用户的请求转发到内部网络中的目标服务,同时确保通信过程中的安全性和隐私性。

我的使用场景

主要是我所有的设备进行异地组网,把散落在各个地方的各种设备组合到一个局域网中实现互相访问。

(ps:其实一开始我只是在内网里面使用,记各个设备的 ip 太麻烦,干脆就组网了没想到远比想象的要方便,😂😂😂)

他解决了我什么问题

主要解决在无法直连时的流量中转服务(相当于内网穿透的服务),虽然官方也有公用的中转服务,但是在国内实在是卡的无法接受,完全不能支撑我对服务器里的 windows 进行远程桌面。

搭建教程

为了保证我们 DERP 节点的安全,我们需要在主机上安装 tailscale ,并且将节点所在的主机添加成为一个节点。

# 安装 curl -fsSL https://tailscale.com/install.sh | sh # 注册节点 tailscale up --login-server=https://example.com --accept-dns=false

由于我是使用 docker 来运行的 headscale 作为服务端,所以需要在 docker 中执行命令

# docker exec headscale headscale nodes register --user 自定义的用户名,类似于命名空间 --key mkey:运行注册节点命令后看到的 mkey 替换这段文字

同样,DERP 节点我们也使用 docker 来运行,新建一个 docker-compose.yaml ,然后将下方内容写到文件中。

version: '3.5' services: derper: container_name: derper image: fredliang/derper restart: always volumes: - /root/derp-docker/container-cert:/cert - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock ports: - 3478:3478/udp - 23479:23479 environment: DERP_DOMAIN: derp-xxxxxxx.example.com DERP_ADDR: ":23479" DERP_CERT_MODE: manual DERP_CERT_DIR: /cert DERP_VERIFY_CLIENTS: "true"

注意:证书的名称必须于你使用的域名进行命名,名称应为:derp-xxxxxxx.example.com.crtderp-xxxxxxx.example.com.key

接着启动 docker 容器

docker-compose up -d

接着再去防火墙把 23479/TCP3478/UDP 打开就搭建好了。(_注意一下两个端口的协议,不要配置错了_)

添加 Derp 节点到 Headscale

先找到 Headscale 的配置配置文件存放的目录,默认情况下会在 /etc/headscale,由于我使用的是 docker 所以我将这个目录映射到了 /root/headscale-docker/container-config

接下来在配置文件目录下面新建一个 derp.yaml (_名称无所谓,位置不要放错就好了_),文件内容如下:

regions: 901: regionid: 901 regioncode: hy regionname: AliCloud HeYuan nodes: - name: 901a regionid: 901 hostname: 'derp-xxxxxxx.example.com' stunport: 3478 stunonly: false derpport: 23479

接着,我们在配置文件下来找到 Headscale 的配置文件(config.yaml),然后将我们上一步写好的 Derp 节点配置文件加载到 Headscale。

注意⚠️:下方的配置文件隐藏了不需要修改的内容,请找到对应位置的如果按下方例子填写,将 paths 修改为你真正的配置文件所在的地址。

derp: # Locally available DERP map files encoded in YAML # # This option is mostly interesting for people hosting # their own DERP servers: # https://tailscale.com/kb/1118/custom-derp-servers/ # # paths: # - /etc/headscale/derp-example.yaml paths: - /etc/headscale/derp.yaml

最后,重启 Headscale 容器使修改后的配置文件生效。

docker container restart headscale

感谢网友的探索的资料

以下内容没有顺序之分,感谢网友指路。