Derp节点放在国内可以显著提升连接效果,但没有域名或者不想占用443端口,可以部署基于IP的Derp节点,进一步如果还要阻止滥用,提升Derp安全性,则需要额外使用一个本地tailscale为derper提供鉴权检测。
原理都是清楚的,但是网络上面给出的配置存在各种问题,这里给出一个可用的配置。
docker compose配置文件:
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper:latest
container_name: derper
restart: always
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
- ./data/tailscale/tmp:/var/run/tailscale
ports:
- "10043:443"
- "10078:3478/udp"
environment:
DERP_VERIFY_CLIENTS: "true" #使用tailscale客户端鉴权
depends_on:
- tailscale
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
restart: always
hostname: XXX
network_mode: host #注释本行可使VPS主机不可通过tailscale网络访问
environment:
TS_STATE_DIR: /var/lib/tailscale
TS_USERSPACE: false
volumes:
- /dev/net/tun:/dev/net/tun
- ./data/tailscale/state:/var/lib/tailscale
- ./data/tailscale/tmp:/tmp
cap_add:
- net_admin
- sys_module
tailscale控制台Access controls配置:
"derpMap": {
"OmitDefaultRegions": false, // 设置为 true不下发官方derp节点
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "XXX",
"RegionName": "XXX_Beijing",
"Nodes": [
{
"Name": "900",
"RegionID": 900,
"HostName": "0.0.0.0", // 你的公网IP地址
"IPv4": "0.0.0.0", // 你的公网IP地址
"DERPPort": 10043,
"InsecureForTests": true, // 客户端不做校验
"STUNPort": 10078,
},
],
},
},
},
容器启动后使用docker logs tailscale查看tailscale容器的启动日志,找到https://login.tailscale.com/a/xxxxxxxxxxxxxx样式的链接,拷贝粘贴到浏览器完成授权添加节点。
节点添加后可以在控制台disable key expiry并备份docker-compose.yml、 ./data/tailscale/state里面的tailscaled.state和tailscaled.log.conf文件,这样后面迁移起来就方便啦。