Skip to main content

WireGuard 组网实战:让家里的 NAS 与云服务器安全互通

October 17, 2026
以 NAT 后的 NAS 主动连接云服务器为例,建立 WireGuard 点对点隧道,讲解独立密钥、AllowedIPs、保活、路由和防火墙边界,以及握手验证、故障定位与 systemd 回退。
WireGuard 组网实战:让家里的 NAS 与云服务器安全互通

更新日期:2026-10-18

家里的 NAS 位于 NAT 后面,云服务器有公网地址。要让云端备份程序访问 NAS,不一定需要把 NAS 管理端口直接映射到公网,可以让 NAS 主动连接云服务器,在两端之间建立 WireGuard 隧道。

本文先完成两台主机之间的点对点通信:云端使用 10.77.0.1,NAS 使用 10.77.0.2。只互通这两个隧道地址,不接管默认路由,也不自动开放整个家庭局域网。示例适用于安装 wireguard-tools 的 Linux;品牌 NAS 应通过其支持的管理方式部署,避免手工配置被管理界面覆盖。

先检查网络与地址规划

要求云服务器拥有可达公网地址,并允许所选 UDP 端口入站;NAS 能向它发起 UDP 流量。隧道网段不能与家庭网络、云私网或已有 VPN 重叠。

项目云服务器NAS
隧道地址10.77.0.1/3210.77.0.2/32
对端 AllowedIPs10.77.0.2/3210.77.0.1/32
公网监听UDP 51820不要求公网入站
Endpoint通常由收到的数据学习云服务器真实公网地址与端口
保活通常不需要NAT 场景按需设置 25 秒

在两端先查看现有路由:

ip address
ip route

若 10.77.0.0 所在地址范围已被使用,换一组无冲突地址。云安全组和主机防火墙是两层规则,都要允许必要流量;仅开放 TCP 51820 不会让 UDP 隧道工作。

分别生成两套密钥

每台机器各生成自己的私钥和公钥,不要让两端共用一套。以下命令在各自新建的私有目录运行;目录名已存在时先检查,不要覆盖旧密钥。

mkdir -m 700 wg-mf8-keys
cd wg-mf8-keys
umask 077
wg genkey > privatekey
wg pubkey < privatekey > publickey

交换的是公钥。私钥留在对应机器,不进入聊天、截图、版本库或公共日志。配置文件同样包含私钥,应限制为管理员可读。

示例后面的中文字段是必须替换的说明,不是有效密钥。使用刚生成的内容填写,但不要把真实私钥发给其他人协助配置。

配置云端与 NAS

确认接口名 wg-mf8 未被使用后,在云端建立 /etc/wireguard/wg-mf8.conf:

[Interface]
Address = 10.77.0.1/32
ListenPort = 51820
PrivateKey = 云服务器私钥

[Peer]
PublicKey = NAS公钥
AllowedIPs = 10.77.0.2/32

NAS 上的同名配置:

[Interface]
Address = 10.77.0.2/32
PrivateKey = NAS私钥

[Peer]
PublicKey = 云服务器公钥
Endpoint = 云服务器真实公网IP:51820
AllowedIPs = 10.77.0.1/32
PersistentKeepalive = 25

Endpoint 必须换成真实地址;如果用 IPv6 地址,按工具要求使用带方括号的地址形式。保活用于维持 NAT 映射,不负责修复错误端口、密钥或路由。WireGuard 官方快速入门

本例的 AllowedIPs 同时参与对端选择和接收流量的源地址约束,wg-quick 还会据此建立路由。它不等同于完整应用防火墙:即使对端地址允许,仍需限制对方能够访问哪些服务。

启动并验证

先确保配置中的说明字段已替换,并设置文件权限。保留原管理通道,然后在两端执行:

sudo chmod 600 /etc/wireguard/wg-mf8.conf
sudo wg-quick up wg-mf8
sudo wg show wg-mf8
ip route

从 NAS 发起到云端隧道地址的流量,例如在允许 ICMP 的测试环境中:

ping -c 3 10.77.0.1

观察 wg show 的最近握手和收发计数。接口存在不代表握手成功;握手成功也不代表应用端口已经放行。若 ICMP 被策略阻止,可改测已经明确允许的应用端口,不要为了 ping 成功清空防火墙。

在云端访问 NAS 时,应使用 10.77.0.2,并确认 NAS 服务监听该地址或允许的接口。为这个对端开放的应是必要应用端口,而非整个管理面。

点对点与整网路由的区别

本例两端访问的都是本机隧道地址,所以不需要为了它开启全局 IP 转发或添加 NAT。

如果目标变为“云服务器访问 NAS 后面的其他局域网机器”,就增加了路由器角色:需要在正确对端加入局域网路由,开启受控转发,配置 FORWARD 规则,并让局域网设备知道返回路径。使用 NAT 则会改变来源可见性,也要单独设计。

不要在没有这些需求时直接把 AllowedIPs 改为 0.0.0.0/0。这会改变默认路由相关行为,可能把本来正常的远程管理和公网访问一起带进隧道。

按症状排查

现象先检查
没有握手Endpoint、UDP 放行、公钥配对、出口网络
握手有,应用不通AllowedIPs、路由、应用监听、主机防火墙
小请求正常,大传输卡住路径 MTU、分片与 ICMP 可达性
用 IP 正常,用域名失败DNS 解析结果与可达路径
空闲后无法被云端访问NAT 映射与 NAS 侧保活

MTU 不应靠固定“万能值”解决。先确认问题只发生于大包或大传输,再在两端受控调整并复测,记录修改前后的结果。DNS 同样是单独一层:隧道建立不会自动让两台机器知道彼此的主机名。

开机启动与回退

手动启动验证通过后,在两端使用 systemd 管理。先关闭手动创建的接口,再启动服务,避免重复创建同一接口:

sudo wg-quick down wg-mf8
sudo systemctl enable --now wg-quick@wg-mf8
sudo systemctl status wg-quick@wg-mf8 --no-pager

回退本例配置时:

sudo systemctl disable --now wg-quick@wg-mf8

随后只撤销为本次新增的安全组和防火墙规则,不清空原规则集。若仍是手动启动模式,则使用 wg-quick down wg-mf8。删除配置和密钥之前,先确认没有其他服务依赖这条隧道。

完成重启验收和应用访问验证后,再把备份任务接入隧道。备份是否可用仍要通过恢复演练证明,网络加密不会替代数据一致性与恢复测试。

官方资料与继续阅读