自建 RustDesk 与 WireGuard 服务:从踩坑到可用
这篇记录一下家里这台 NAS 上跑起来的两个外网入口:远程桌面(RustDesk)和组网 VPN(WireGuard)。
为什么自建
第三方远程桌面免费版限制多、连接质量不可控。自建 RustDesk 之后,所有流量走自己的服务器,速度取决于家宽上行,而且设备列表、授权控制都在自己手里。
RustDesk 服务端
用的是一体化镜像 lejianwen/rustdesk-server-s6,一个容器里打包了 hbbs(ID/信令)、hbbr(中继)和网页后台。
services:
rustdesk:
image: lejianwen/rustdesk-server-s6:latest
ports:
- 21114:21114
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21117:21117
关键的一个坑:RELAY 变量必须填公网可达的域名,不能填内网 IP。
# 错误:内网客户端能用,手机流量连不上
- RELAY=192.168.0.150:21117
# 正确
- RELAY=rd.example.com:21117
因为 hbbs 会把这个地址下发到每个客户端。填内网 IP 时,内网设备能通,外部设备打洞失败后走中继就必然失败。
WireGuard
Debian 虚拟机上跑 wg-easy,带网页后台,手机扫码导入配置:
environment:
- WG_HOST=vpn.example.com
- WG_DEFAULT_DNS=223.5.5.5,119.29.29.29
- WG_ALLOWED_IPS=192.168.0.0/24,10.8.1.0/24
- INSECURE=true # 内网 HTTP 登录必需(v15+)
WG_ALLOWED_IPS 设成分流模式,只有访问家里内网和 VPN 网段的流量走隧道,刷视频不受影响。
两个容易忽略的点
- 下载客户端时的 DNS 污染:
download.wireguard.com在国内常见被解析到无关 IP,用 DoH 或海外节点查真实 IP 后加--resolve直连即可。 - 80/443 被封:很多家宽封了这两个端口,所有对外 Web 服务要么换端口,要么走 Cloudflare Tunnel(家里主动外连,不需要开放入站)。