LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

10分钟搞定WireGuard异地组网:快速搭建安全高效的私有VPN网络

admin
2025年9月7日 23:20 本文热度 60

前言

笔者在现在工作中经常需要下发一些比较占用网络带宽的脚本任务,一时间搞得家里的网络异常拥堵。正在发愁之际突然想起老家的千兆宽带一直都是半闲置状态,除了爸妈刷短视频的那点流量外,其余时间都是空闲着,那有没有办法将任务下发到老家设备,将这千兆宽带给利用上呢?

构想了一下,其实只需要在老家放置一台服务器,通过远程登录下发任务指令,等待任务处理完毕再取回任务结果就完事了,这样整个任务执行期间所占用的带宽都是通过老家千兆宽带出去,笔者这边只需要下发指令和获取结果,极大地缓解笔者所在网络的带宽压力。

这里面最大的问题就是:要怎么才能方便地登录老家服务器呢?笔者这里的网络和老家的网络都是经过NAT的地址,没有公网IP。经过一番搜索,最终选定使用WireGuard进行异地组网,在老家网络环境放置一台服务器(树莓派),使用一台云服务器作为中转节点(有公网IP地址),笔者所在网络使用一服务器(用于连接中转节点),将三台设备进行组网,笔者所在网络服务器经中转服务器就可以访问老家环境服务器,整个拓扑如下:

其实进行异地组网的方式有很多,这里说下为啥要使用WireGuard,最主要的原因就是:简洁。网上有很多使用OpenVPN进行组网的教程,各种证书,配置文件,看得人实在头大,据说WireGuard只有4000行代码,Linux之父Linus Torvalds都对其赞不绝口,那还不得试一试嘛。(虽然笔者在使用WireGuard搭建时也费了很大气力,其中最主要的原因就是网上一些关于WireGuard文章介绍配置信息并不准确,可能那些文章作者自己根本就没有跑通,这也是笔者写本文的目的,相信读者看了本文,按文中配置操作10分钟就能搞定。)

另在此特别声明,本教程仅为了办公方便进行异地组网使用,勿作其他非法用途,由此带来的问题需要由使用者本人承担,与笔者无关。

安装

要求内核版本5.6及以上,如果不符合要求,请升级内核版本或更换操作系统

#查看内核版本xiaobaogua@raspberrypi:~ uname  -r6.12.34+rpt-rpi-v8#安装WireGuardxiaobaogua@raspberrypi:~ sudo apt-get install wireguard#执行命令确认是否安装成功xiaobaogua@raspberrypi:~ wg versionwireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/


网络规划

在配置前我们需要提前规划好网络,组网的IP地址不要与本机原有地址重复,笔者这里规划如下:

  • 云服务器,作用中继节点,代号为:Server1,使用IP地址:10.0.0.1

  • 笔者所在网络服务器,作用本地接入节点,代号为:Client1,使用IP地址:10.0.0.2

  • 老家服务器,使用远程接入节点,代号为:Client2,使用IP地址:10.0.0.3

如下图:

中继节点配置

最先配置中继节点Server1,这里先生成所需要的密钥

#生成通信私钥wg genkey |tee /etc/wireguard/privatekey#通过私钥生成公钥cat /etc/wireguard/privatekey |wg pubkey |tee /etc/wireguard/publickey


编辑配置文件

#配置文件放在/etc/wireguard/目录下,命名为wg0.confxiaobaogua@Server1:sudo vim /etc/wireguard/wg0.conf[Interface]#规划地址Address = 10.0.0.1/24#监听公网端口,Client1和Client2要连接的端口,根据自己需要设置。#记得在防墙放开这里配置的端口ListenPort = 1234#中继服务器私钥,填写刚才生成的私钥PrivateKey = xxxxxx# 启用IP转发PostUp = sysctl -w net.ipv4.ip_forward=1PostUp = iptables -A FORWARD -i wg0 -j ACCEPTPostDown = iptables -D FORWARD -i wg0  -j ACCEPT#配置Client1,只有配置了终端才能接入进来[Peer]#这里填写Client1上生成的公钥信息,这个时候因为没有在Client1上生成密钥,可以先留空,待生成后再修改PublicKey = xxxxxx#Client1规划的IP地址,注意要写掩码AllowedIPs = 10.0.0.2/32#配置Client2,同上[Peer]PublicKey = xxxxxxAllowedIPs = 10.0.0.3/32


接入节点配置

同样参照中继节点的命令,生成该节点的私钥和公钥,记得将生成的公钥信息填写到中继节点的配置信息中。

生成密钥后,对接入节点进行配置(Client1和Client2除了IP地址和密钥不同外,其他地方都类似,下面只演示Client1配置)

xiaobaogua@Client1:sudo vim /etc/wireguard/wg0.conf#Client1配置[Interface]##Client1本机私钥PrivateKey = xxxxxx#Client1规划的IP地址Address = 10.0.0.2/32#中继服务器[Peer]#中继服务器公钥PublicKey = xxxxxx#中继服务器地址,填写IP:端口号Endpoint = xxxxxx:1234#这里类似路由规则,指定哪些ip走这个节点#注意:有很多文章关于这个参数的介绍是错误的,这里应该填写你希望哪些流量走中继节点。#而不是大多数文章介绍填写0.0.0.0/24,如果填写0.0.0.0/24表示所有的流量都会走中继节点。AllowedIPs = 10.0.0.0/24#保持NAT连接活跃PersistentKeepalive = 25


启动服务

完成上面的配置后,就可以启动服务啦。

注意Server1、Client1和Client2的配置文件公钥私钥都要配置正确。

以下操作需要在中继节点和接入节点上操作:

#设置开机自启systemctl enable wg-quick@wg0#启动服务wg-quick up wg0[#] ip link add wg0 type wireguard[#] wg setconf wg0 /dev/fd/63[#] ip -4 address add 10.0.0.2/32 dev wg0[#] ip link set mtu 1420 up dev wg0[#] ip -4 route add 10.0.0.0/24 dev wg0#查看状态wginterface: wg0  public key: xxxxxx  private key: (hidden)  listening port: 46620peer: xxxxxx  endpoint: xxxxxx:1234  allowed ips: 10.0.0.0/24  transfer: 0 B received, 1.45 KiB sent  persistent keepalive: every 25 seconds


测试连接状态

完成上面操作后就可以使用10.0.0.0网段IP进行相互访问啦。

#可以在依次登录各个节点相互ping一下ping 10.0.0.2PING 10.0.0.2 (10.0.0.256(84) bytes of data.64 bytes from 10.0.0.2: icmp_seq=1 ttl=63 time=40.9 ms64 bytes from 10.0.0.2: icmp_seq=2 ttl=63 time=41.8 ms64 bytes from 10.0.0.2: icmp_seq=3 ttl=63 time=43.2 ms#如果需要修改配置,使用wg-quick down命令先停止端口wg-quick down wg0#修改完配置后,重新启动端口wg-quick up wg0


常见错误

以下是常见的错误,如果按上面配置发现仍然无法访问,可以按下面清单依次检查:

  1. 检查接入节点到中继节点端口网络是否可达,云服务器除了需要在操作系统上添加防火墙策略外,还需要修改安全组策略。

  2. 检查接入节点、中继节点的私钥和公钥配置是否正确,在本机节点上配置自己的私钥和远端节点的公钥,不要配置反了。

  3. 检查端口是否启动,修改完配置后需要重新启动端口。


结语

经过上面配置后,现在已经成功实现通过云服务器的中继节点,将两个异地的内网组合在一块了。但又遇到一个问题,Client1与Client2进行通信时,所有的流量都需要经过云服务器Server1,但是笔者的云服务器恰好是按使用流量进行收费,如果遇到任务结果数据量巨大,那从Client2传输到Client1的流量费用是任务数据量的两倍,这样就太心疼了。

通过一段时间的摸索,笔者发现可以通过网盘实现任务结果文件的传输,即Client1到Client2的任务指令通过云服务器的中继节点下发,而Client2的结果数据通过中间网盘进行传输。这样就不会受到云服务的流量费用或者是带宽限制。如下图:

好啦,本文到此就结束了,祝大家组网一遍通过!对于使用网盘传输文件感兴趣的同学可以看看这篇文章。


阅读原文:原文链接


该文章在 2025/9/8 9:05:07 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved