自建 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 网段的流量走隧道,刷视频不受影响。

两个容易忽略的点

  1. 下载客户端时的 DNS 污染:download.wireguard.com 在国内常见被解析到无关 IP,用 DoH 或海外节点查真实 IP 后加 --resolve 直连即可。
  2. 80/443 被封:很多家宽封了这两个端口,所有对外 Web 服务要么换端口,要么走 Cloudflare Tunnel(家里主动外连,不需要开放入站)。
← 返回文章列表