2024/11/14 测了下,STUN不配置好像也没问题
前情提要
之前在两个hk服务器部署了derper, 但是两台机器线路都不大行
刚买来差不多 150ms, 现在测了下要 300ms+
于是准备在另一台线路较好的机器上部署
不过这台机器部署了其它网站, 80和443端口都占用
相关链接
Github fredliang44/derper-docker
Docker fredliang/derper
部署环境
公网机器
境外
443端口占用, 部署了其它服务
使用1Panel面板
内网机器
内地
使用frp
443端口占用, 部署了其它服务
使用1Panel面板
部署步骤
公网机器
先启动derper
version: '3.8'
services:
derper:
image: fredliang/derper
container_name: derper
restart: always
environment:
- DERP_CERT_MODE=letsencrypt # 手动设置证书 (好像没啥用, 懒得删)
- DERP_ADDR=:30001 # 中转端口
- DERP_HTTP_PORT=-1 # 用不到也可以填入 -1 关闭 HTTP 服务
- DERP_STUN_PORT=30002 # STUN 打洞端口
- DERP_DOMAIN=pc1.example.com # 服务器域名
- DERP_VERIFY_CLIENTS=true # 验证客户端身份,防止白嫖
ports:
- "30001:30001"
- "30002:30002/udp"
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock # tailscale 客户端进程,用于验证客户端身份
cloudflare解析IP
把 pc1.example.com
解析到公网IP
1Panel创建网站
域名绑定pc1.example.com
, 反向代理 http://127.0.0.1:30001
申请证书
申请pc1.example.com
的证书, 然后部署在1Panel部署的网站上
tailscale配置
在 https://login.tailscale.com/admin/acls/file 进行配置
详细配置前往 https://tailscale.com/kb/1018/acls
我的配置如下
DERPPort要设置成443 (也许不需要设置), 因为流量实际由nginx代理, 并且证书也是部署在上面的
{
"derpMap": {
"OmitDefaultRegions": true, # 是否禁用公共derper
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "eya46-hk",
"RegionName": "Hong Kong",
"Nodes": [
{
"Name": "名称",
"RegionID": 900,
"HostName": "pc1.example.com",
"DERPPort": 443,
"STUNPort": 30002,
"STUNOnly": false,
},
],
},
},
},
}
内网机器
跟公网机器基本相同, 不过直接用frp进行代理
先启动derper
version: '3.8'
services:
derper:
image: fredliang/derper
container_name: derper
restart: always
environment:
- DERP_CERT_MODE=letsencrypt # 手动设置证书 (好像没啥用, 懒得删)
- DERP_ADDR=:30001 # 中转端口
- DERP_HTTP_PORT=-1 # 用不到也可以填入 -1 关闭 HTTP 服务
- DERP_STUN_PORT=30002 # STUN 打洞端口
- DERP_DOMAIN=pc2.example.com # 服务器域名
- DERP_VERIFY_CLIENTS=true # 验证客户端身份,防止白嫖
ports:
- "30001:30001"
- "30002:30002/udp"
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock # tailscale 客户端进程,用于验证客户端身份
申请证书
申请pc2.example.com
的证书, 并且勾选 推送到本地目录
目录可任意选择, 我设置的是 /opt/frp/derper
创建FRP隧道
frp服务端用的是
passnat
https://dashboard.passnat.com/reg?aff=admin
HTTPS证书路径填写:
Crt 证书路径
填 /opt/frp/derper/fullchain.pem
Key 密钥路径
填 /opt/frp/derper/privkey.pem
协议 | 本机IP | 本地端口 | 远程端口 | 域名 |
---|---|---|---|---|
HTTPS | 127.0.0.1 | 30001 | 443 | pc2.example.com |
UDP | 127.0.0.1 | 30002 | 30002 | 无 |
注意frp服务商是否允许udp, 不然连不上
创建完隧道后, 复制配置到内网机器启动
cloudflare解析IP
把 pc2.example.com
解析到 frp
服务的IP (frp服务商通常会显示为 远程IP
)
tailscale配置
在 https://login.tailscale.com/admin/acls/file 进行配置
详细配置前往 https://tailscale.com/kb/1018/acls
我的配置如下
DERPPort要设置成443 (也许不需要设置)
{
"derpMap": {
"OmitDefaultRegions": true, # 是否禁用公共derper
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "eya46-cn",
"RegionName": "CN",
"Nodes": [
{
"Name": "名称",
"RegionID": 901,
"HostName": "pc2.example.com",
"DERPPort": 443,
"STUNPort": 30002,
"STUNOnly": false,
},
],
},
},
},
}
其它
测试连接
使用浏览器访问域名, 显示下面的内容则正常
当然最重要的是能正常中继
STUN不知道怎么测
OmitDefaultRegions
还是推荐开启, 免得中继挂了连不上
关掉方便测试连接