WireGuard 公网服务器与家庭服务器组网 + NFS 安全远程挂载
简单来说,这套方案就像给你的远程文件访问装上了"安全快递专线":
- 防盗保险箱
用WireGuard建立加密隧道,所有传输数据全程上锁,比普通网络传输安全得多。 - 跨境网络提速
通过中转服务器自动选择最优路径,解决国内外直连卡顿问题,传输速度提升明显。 - 仓库直通车
NFS文件共享就像给你的电脑接上了远程硬盘,处理大文件时和本地操作一样流畅。 - 智能路线切换
设备间既能直连(如办公室和家里电脑),又能自动走中转(如跨境访问),网络掉线率大大降低。
整个过程像搭积木一样配置,一次设置好后基本不用维护,特别适合需要频繁远程处理文件的企业或个人。
一、方案概述
1.1 拓扑结构
公网服务器 中转服务器 内网设备
A(10.0.0.1) <----> C(10.0.0.100) <----> D(10.0.0.3)
B(10.0.0.2) ▲ ▲
↘ │ │
└───────────┴───────E(10.0.0.4)
1.2 组件说明
- WireGuard:建立加密隧道(UDP 51820端口)
- NFS:基于加密隧道的高性能文件共享
- 中转服务器C:优化跨境网络质量
1.3 注意事项
- WireGuard特征明显,不建议用于特殊网络环境
- UDP可能被部分ISP限速,建议选择支持UDP的云服务商
- NAT设备需设置不同ListenPort避免冲突
- 所有节点需保持时钟同步(建议安装ntp服务)
二、WireGuard 部署流程
2.1 基础安装
# 所有节点执行
apt update && apt install -y wireguard resolvconf
sysctl -w net.ipv4.ip_forward=1
2.2 密钥生成
umask 077
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
2.3 中转服务器C配置
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = <C_PrivateKey>
Address = 10.0.0.100/16
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
# 直连节点配置
[Peer] # A节点
PublicKey = <A_PublicKey>
AllowedIPs = 10.0.0.1/32
[Peer] # B节点
PublicKey = <B_PublicKey>
AllowedIPs = 10.0.0.2/32
[Peer] # D节点
PublicKey = <D_PublicKey>
AllowedIPs = 10.0.0.3/32
[Peer] # E节点
PublicKey = <E_PublicKey>
AllowedIPs = 10.0.0.4/32
2.4 公网节点配置(以A为例)
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = <A_PrivateKey>
Address = 10.0.0.1/16
ListenPort = 51820 # 公网节点可统一端口
[Peer] # 连接中转
PublicKey = <C_PublicKey>
Endpoint = X.X.X.C:51820
AllowedIPs = 10.0.0.0/16
PersistentKeepalive = 25 # 维持NAT连接
[Peer] # 直连B节点
PublicKey = <B_PublicKey>
Endpoint = X.X.X.B:51820
AllowedIPs = 10.0.0.2/32
2.5 NAT设备配置(以D为例)
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = <D_PrivateKey>
Address = 10.0.0.3/16
ListenPort = 51821 # 需唯一端口
[Peer] # 连接中转
PublicKey = <C_PublicKey>
Endpoint = X.X.X.C:51820
AllowedIPs = 10.0.0.0/16
PersistentKeepalive = 25 # 必须开启
[Peer] # 直连E节点
PublicKey = <E_PublicKey>
Endpoint = X.X.X.E:51821 # 需对应E的实际端口
AllowedIPs = 10.0.0.4/32
2.6 服务管理
# 启动服务
wg-quick up wg0
# 设置开机启动
systemctl enable wg-quick@wg0
# 查看连接状态
watch -n 1 wg
2.7 防火墙配置
# 所有节点执行
ufw allow 51820:51830/udp # 包含NAT设备的端口范围
ufw allow from 10.0.0.0/16
三、NFS 服务部署
3.1 服务端配置(以E节点为例)
apt install -y nfs-kernel-server
mkdir -p /storage
# 配置访问白名单
echo "/storage 10.0.0.0/16(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
# 应用配置
exportfs -rav
systemctl restart nfs-server
3.2 客户端挂载(以B节点为例)
apt install -y nfs-common
mkdir -p /mnt/storage
# 临时挂载
mount -t nfs -o proto=tcp,vers=3 10.0.0.4:/storage /mnt/storage
# 永久挂载
echo "10.0.0.4:/storage /mnt/storage nfs _netdev,proto=tcp,vers=3 0 0" >> /etc/fstab
四、连接验证
4.1 WireGuard 连通性测试
# 跨节点连通性
ping 10.0.0.100 # 测试中转服务器
traceroute 10.0.0.3 # 观察路由路径
# 带宽测试(使用iperf3)
# 服务端:iperf3 -s
# 客户端:iperf3 -c 10.0.0.4 -p 5201 -P 8
4.2 NFS 性能测试
# 顺序写入测试
dd if=/dev/zero of=/mnt/storage/testfile bs=1G count=2 oflag=direct
# 随机读写测试
fio --name=randrw --rw=randrw --bs=4k --direct=1 --size=1G --runtime=60
五、高级优化
5.1 WireGuard 性能调优
# /etc/wireguard/wg0.conf
MTU = 1300 # 适应跨境线路
PreUp = ethtool -K %i tx off rx off # 禁用大流量校验
5.2 NFS 参数优化
# 客户端挂载参数追加:
nconnect=8,rsize=1048576,wsize=1048576,hard,intr,timeo=600
5.3 监控方案
# 实时流量监控
nload -u M wg0
# 连接状态监控
watch -n 1 "wg show wg0 transfer | sort -k2 -nr"
故障排查指南
连接超时
- 检查
wg show
的latest handshake时间 - 验证中转服务器端口映射
- 检查
NFS挂载失败
rpcinfo -p 10.0.0.4 # 验证端口映射 showmount -e 10.0.0.4 # 检查共享列表
性能瓶颈
ethtool -S wg0 # 查看丢包统计 tc -s qdisc # 检查流量控制
本方案通过分层架构设计,既保证了跨境传输的安全性,又通过NFS实现了高性能文件共享。实际部署时建议先完成WireGuard全网互通验证,再逐步添加NFS服务。