论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
安全
›
网络安全
›
通过 WireGuard 实现云服务器与家庭 NAS 的安全互联:完 ...
通过 WireGuard 实现云服务器与家庭 NAS 的安全互联:完整教程 ...
石小疯
论坛元老
|
前天 23:15
|
显示全部楼层
|
阅读模式
楼主
主题
1844
|
帖子
1844
|
积分
5532
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一、背景需求
你是否遇到过以下问题?
想在外网安全访问家中 NAS 的 SSH、Web 服务或私有 GitLab?
云服务器有公网 IP,但家庭宽带没有固定公网 IP?
直接暴露 NAS 端口到公网存在安全隐患?
WireGuard 的解决方案
:
通过轻量级 VPN 买通云服务器与家庭 NAS,所有流量加密传输,仅需开放 1 个 UDP 端口即可实现双向通信。
二、环境阐明(其他系统过程相近)
角色
配置
网络信息
云服务器Fedora 40+,公网 IP 1.2.3.4WireGuard 服务端 IP 10.8.0.1家庭 NASFedora 40+,内网 IP 192.168.1.100WireGuard 客户端 IP 10.8.0.2
三、完整配置流程
1. 云服务器(服务端)配置
步骤 1:安装 WireGuard
sudo dnf install wireguard-tools
复制代码
步骤 2:天生密钥对
wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
sudo chmod 600 /etc/wireguard/private.key
复制代码
步骤 3:创建配置文件 /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <云服务器私钥> # 替换为 private.key 内容
[Peer]
PublicKey = <NAS公钥> # 后续从 NAS 获取
AllowedIPs = 10.8.0.2/32
复制代码
步骤 4:启用内核转发与防火墙
# 启用 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p
# 开放 WireGuard 端口
sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --reload
# 启动服务
sudo systemctl enable --now wg-quick@wg0
复制代码
2. 家庭 NAS(客户端)配置
步骤 1:安装 WireGuard
sudo dnf install wireguard-tools
复制代码
步骤 2:天生密钥对
wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
sudo chmod 600 /etc/wireguard/private.key
复制代码
步骤 3:创建配置文件 /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.2/24
PrivateKey = <NAS私钥> # 替换为 private.key 内容
[Peer]
PublicKey = <云服务器公钥> # 替换为云服务器的 public.key 内容
Endpoint = 1.2.3.4:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
复制代码
步骤 4:启动服务
sudo systemctl enable --now wg-quick@wg0
复制代码
3. 验证毗连
查抄隧道状态
# 在云服务器执行
sudo wg show
# 预期输出应包含:
# peer: <NAS公钥>
# latest handshake: 时间戳
# transfer: 有数据流量
复制代码
测试连通性
# 从云服务器 ping NAS
ping 10.8.0.2
# 从 NAS ping 云服务器
ping 10.8.0.1
复制代码
四、通过云服务器访问 NAS 服务
场景 1:SSH 毗连
# 在云服务器上直接访问 NAS 的 VPN IP
ssh your_username@10.8.0.2
# 或通过公网端口转发(将云服务器的 2222 端口映射到 NAS 的 22 端口)
sudo firewall-cmd --permanent --add-forward-port=port=2222:proto=tcp:toaddr=10.8.0.2:toport=22
sudo firewall-cmd --reload
# 外部用户访问命令
ssh -p 2222 your_username@1.2.3.4
复制代码
场景 2:访问 Web 服务
假设 NAS 运行了一个博客在 8080 端口:
# 映射云服务器的 8080 端口到 NAS
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=10.8.0.2:toport=8080
sudo firewall-cmd --reload
# 外部用户访问
curl http://1.2.3.4:8080
复制代码
五、深入解析:WireGuard 配置中的关键差异
在配置 WireGuard 时,仔细的读者大概注意到
云服务器(服务端)
和
家庭 NAS(客户端)
的 wg0.conf 文件中 AllowedIPs 参数存在显着差异。这种“不对称”设计是 WireGuard 实现高效路由和安全通信的核心逻辑,本节将具体解读其原理。
1. 配置对比:服务端 vs 客户端
配置项
云服务器(服务端)
家庭 NAS(客户端)
[Interface]Address = 10.8.0.1/24Address = 10.8.0.2/24[Peer] 段每个客户端独立配置仅需配置服务端信息AllowedIPs10.8.0.2/32(精确 IP)10.8.0.0/24(整个子网)PersistentKeepalive通常无需配置(服务端被动监听)必须配置(穿透 NAT 保持毗连)
2. AllowedIPs 的双重作用
AllowedIPs 参数界说了两种行为:
流量准入规则
答应哪些来源 IP 的流量进入本机(类似白名单)。
路由规则
指定哪些目标 IP 的流量要通过 VPN 隧道发送。
3. 服务端的 /32 设计解析
配置示例
# 云服务器的 wg0.conf
[Peer]
PublicKey = <NAS公钥>
AllowedIPs = 10.8.0.2/32
复制代码
设计逻辑
10.8.0.2/32 的寄义
/32 表示一个
精确的单个 IP
(仅匹配 10.8.0.2)。
服务端声明:“我只接受来自 10.8.0.2 的流量,且所有发送到 10.8.0.2 的流量都通过此隧道”。
扩展性上风
当新增其他客户端(如手机 10.8.0.3)时,只需为每个设备添加独立的 [Peer] 段,每个 AllowedIPs 对应一个 /32 地点,避免路由冲突。
4. 客户端的 /24 设计解析
配置示例
# 家庭 NAS 的 wg0.conf
[Peer]
AllowedIPs = 10.8.0.0/24
复制代码
设计逻辑
10.8.0.0/24 的寄义
/24 表示一个
子网范围
(10.8.0.1 ~ 10.8.0.254)。
客户端声明:“所有目标在 10.8.0.0/24 网段的流量(如服务端或其他客户端),都通过此隧道发送”。
通信机动性
即使当前只有服务端(10.8.0.1),这种设计也答应未来直接与其他客户端(如 10.8.0.3)通信,无需修改配置。
5. 错误配置的后果
错误 1:服务端误用 /24
# 错误的服务端配置
[Peer]
AllowedIPs = 10.8.0.0/24 # 错误!
复制代码
后果
:
服务端会将所有目标为 10.8.0.0/24 的流量转发给该客户端(NAS),导致其他客户端无法正确路由。
错误 2:客户端误用 /32
# 错误的客户端配置
[Peer]
AllowedIPs = 10.8.0.1/32 # 错误!
复制代码
后果
:
客户端只能访问服务端 10.8.0.1,无法与其他 VPN 设备(如未来新增的 10.8.0.3)通信。
6. 进阶场景:多客户端扩展
假设未来添加一个手机客户端(10.8.0.3):
服务端配置更新
# 新增手机客户端配置
[Peer]
PublicKey = <手机公钥>
AllowedIPs = 10.8.0.3/32
复制代码
手机客户端配置
[Peer]
AllowedIPs = 10.8.0.0/24 # 仍需要整个子网
复制代码
通信验证
手机 → NAS
:
10.8.0.3 访问 10.8.0.2,因手机的 AllowedIPs=10.8.0.0/24 包罗该目标,流量经服务端转发。
服务端 → 手机
:
服务端明白知道 10.8.0.3/32 对应手机的隧道。
7. 总结:WireGuard 的设计哲学
最小化路由规则
:通过精确的 AllowedIPs 界说,避免不必要的流量转发。
高扩展性
:服务端通过 /32 隔离客户端,客户端通过 /24 感知整个网络。
安全性
:默认拒绝所有流量,仅答应显式声明的 IP 通信。
通过这种“服务端精确控制 + 客户端全局感知”的设计,WireGuard 在保障安全性的同时,实现了高效机动的内网互通。理解这一原理后,您可以根据实际需求自由扩展 VPN 网络!
六、安全加固发起
限制 SSH 访问源
# 在 NAS 上仅允许来自 VPN IP 的 SSH 连接
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.8.0.1 port port=22 protocol=tcp accept'
sudo firewall-cmd --reload
复制代码
密钥安全管理
将 private.key 设为 600 权限
禁止将私钥上传到版本控制工具
定期更新 WireGuard
sudo dnf update wireguard-tools
复制代码
七、常见问题排查
问题 1:WireGuard 服务未启动
sudo systemctl status wg-quick@wg0
sudo journalctl -u wg-quick@wg0 --since "10 minutes ago"
复制代码
问题 2:防火墙拦截流量
# 检查防火墙规则
sudo firewall-cmd --list-all
# 临时关闭防火墙测试(测试后务必重新启用)
sudo systemctl stop firewalld
复制代码
问题 3:NAT 配置错误
# 检查云服务器的 NAT 规则
sudo iptables -t nat -L POSTROUTING
复制代码
八、总结
通过本文的配置,您实现了:
加密隧道通信
:所有流量通过 WireGuard 的 UDP 加密隧道传输
机动服务暴露
:通过端口转发安全访问内网服务
低延迟高性能
:WireGuard 内核级实现,资源占用极低
扩展大概性
:
添加更多客户端(如手机、条记本)到 10.8.0.0/24 网络
联合 Nginx 反向代理实现域名访问
部署私有 GitLab/Jenkins 等工具并远程管理
注意事项
:
家庭宽带上行带宽大概成为速率瓶颈(国内通常为 10-30 Mbps)
发起为云服务器配置 SSH 密钥登录 + Fail2ban 防护
相干资源
:
WireGuard 官方文档
Fedora FirewallD 指南
原文链接:通过 WireGuard 实现云服务器与家庭 NAS 的安全互联:完整教程 - Lixx Blog - 李晓旭的博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
石小疯
论坛元老
这个人很懒什么都没写!
楼主热帖
解决图片无法设置hover,以设置图片的 ...
SQL的多表查询
C# GDI+ 画心形 跳动动画
解决OpenCV的imread/imwrite在Qt环境不 ...
Hive安装与启动
qrtz表初始化脚本_mysql
几个函数的使用例子:更新VBRK-XBLNR, ...
MySQL基础(DDL、DML、DQL)
堆Pwn:House Of Storm利用手法
OpenHarmonyOs / LiteOs-a 开发环境搭 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
Oracle
SQL-Server
Mysql
快速回复
返回顶部
返回列表