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