更新日期: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/32 | 10.77.0.2/32 |
| 对端 AllowedIPs | 10.77.0.2/32 | 10.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。删除配置和密钥之前,先确认没有其他服务依赖这条隧道。
完成重启验收和应用访问验证后,再把备份任务接入隧道。备份是否可用仍要通过恢复演练证明,网络加密不会替代数据一致性与恢复测试。

