1. 前期准备

DDNS 解析:解析一个域名到你的公网 IP。

客户端准备:手机/PC 端下载安装 WireGuard。

密码处理(关键):

  • 准备好你的明文密码。
  • 访问 bcrypt.online 生成 Hash 串。
  • 转义处理:在 Docker Compose 中 $ 是变量符,必须将 Hash 串中所有的 $ 替换为 $$

2. Docker 部署

在NAS中新建目录 /vol1/1000/app/wireguard,创建 docker-compose.yml。

配置要点:

替换 WG_HOST 为你的域名。

替换 PASSWORD_HASH 为刚才生成的 Hash。

WG_DEFAULT_ADDRESS 建议修改为非家庭常用网段(如 10.8.0.x),避免路由冲突。

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    environment:
      - WG_HOST=你的公网域名或公网IP
      - PASSWORD_HASH=管理后台密码 (Bcrypt Hash),注意 Docker Compose 中 $ 需写成 $$
      
      # 网络配置
      - WG_PORT=51820
      - WG_DEFAULT_ADDRESS=10.8.0.x
      - WG_DEFAULT_DNS=223.5.5.5, 223.6.6.6
      - WG_ALLOWED_IPS=0.0.0.0/0, ::/0
      - WG_MTU=1420
      
    volumes:
      - ./config:/etc/wireguard
    ports:
      - "51820:51820/udp" # 隧道通信
      - "51821:51821/tcp" # Web 管理面板
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

启动容器后,访问 http://NAS_IP:51821/ 进入后台(密码为 Hash 前的明文)。

3. 端口转发

进入主路由后台,添加端口映射:

外部端口:51820
内部端口:51820
协议:UDP (注意:WireGuard 仅使用 UDP)

4. 客户端连接

在 Web 后台点击 New Client,命名(如 iPhone)。
打开手机 WireGuard App,扫描屏幕上的二维码。
断开手机 WiFi,使用 5G 流量测试。开启连接,尝试访问 NAS 内网 IP。

5. 为什么选择 WireGuard?

  1. 安全性:隐形防御
    端口映射 (5666):像家门临街,虽然有锁,但小偷知道门在哪,随时能尝试撬锁或利用漏洞(如 fnOS 事件)。
    WireGuard (51820):在攻击者眼中是“丢包”的黑洞。没有正确的私钥,服务器对任何扫描都不予回应。坏人连门都找不到,无从下手。
  2. 功能性:全屋互联
    端口映射:要在墙上凿无数个洞。想用 NAS 凿一个,想看监控又凿一个。想用局域网打印机?没映射就无法访问。
    WireGuard:直接把你要到了客厅。连上 VPN 等同于设备物理接入了家庭 WiFi。NAS、路由器后台、PC 远程桌面、打印机,想连谁连谁。
  3. 维护性:收敛入口
    传统方式:维护多个端口,需确保每个服务的 Auth 都足够强壮。

WireGuard:只需守住这唯一的入口。只要隧道安全,内网所有弱密码设备皆安全。