使用8条命令即可完成的VPN配置!CentOS快速配置WireGuard全互联组网

之前也听说过WireGuard,身边也有不少亲戚朋友在用,听说是一种极其简单但快速且现代的 VPN。它的目标是比IPsec更快、更简单、更精简、更有用,比 OpenVPN 性能更高。

图片

WireGuard利用先进的加密技术,并且覆盖了几乎所有的常见的操作系统,可以广泛部署。据说目前被认为是业内最安全、最容易使用和最简单的 VPN 解决方案。
之前讲IPsec(IPsec系列)的时候就有小伙伴让介绍一下WireGuard,终于安排上了。
官网用了一段2分25秒的无剪辑、无倍速的视频介绍了如何快速部署WireGuard,乍一看是很简单,但他它所使用的两台主机是同一网段的,我们对环境做一下简单升级,使用3台不用网段的主机来测试一下。

组网需求

3台主机分别位于网关路由器下的3个不同网段,PCA和PCB、PCC之间分别建立IPsec隧道,对PCA和PCB、PCA和PCC之间的数据流进行安全保护。

组网图

CentOS快速配置WireGuard实验组网图。

实验环境

VMWare ESXi 6.7.0(ProLiant DL360 Gen9,48核心,128G内存)
H3C VSR1000(Version 7.1.064, Release 0621P18,4核心,8G内存)
CentOS Linux release 7.9.2009 (Core,8核心,16G内存)

配置步骤

首先按照组网图所示配置各接口的IP地址,然后我们需要先安装WireGuard软件。官网共介绍了3种安装方式,正好我们用3台主机分别测试一下。

PCA
使用CentOS的kernel-plus内已签名的模块进行安装。
yum install -y yum-utils epel-release
yum-config-manager –setopt=centosplus.includepkgs=kernel-plus –enablerepo=centosplus –save
sed -e ‘s/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/’ -i /etc/sysconfig/kernel
yum install -y kernel-plus wireguard-tools

PCB
如果希望使用标准内核,可以使用 ELRepo 的预构建模块进行安装。
yum install -y epel-release elrepo-release
yum install -y yum-plugin-elrepo
yum install -y kmod-wireguard wireguard-tools

PCC
如果您运行的是非标准内核,可以使用 DKMS 包。我是标准内核,试试能不能用。
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum install -y wireguard-dkms wireguard-tools
接下来开始配置WireGuard,好在配置是通过命令行界面配置的,后续要二次加工会方便得多。
首先给PCB添加一个新接口,然后给接口配置一个IP地址。
ip link add dev wg0 type wireguard
ip address add dev wg0 10.1.1.2/24

WireGuard需要base64编码的公钥和私钥,可以使用程序自动生成:
umask 777
wg genkey > privatekey
[root@localhost ~]# cat privatekey
yJM/v1Oy/ddwniziHokR3A9ILQneqwtNIpA8A53s4Uo=
wg pubkey < privatekey > publickey
[root@localhost ~]# cat publickey
ZTwqy6eA2exFjIp4Gqll57FFu99ND97wRCkPv0ZNGVU=
设置WireGuard使用的私钥。
wg set wg0 private-key privatekey
使能接口wg0。
ip link set up dev wg0
在PCA上重复上述操作。
ip link add dev wg0 type wireguard
ip address add dev wg0 10.1.1.1/24
umask 777
wg genkey > privatekey
wg pubkey < privatekey > publickey
wg set wg0 private-key privatekey
ip link set up dev wg0
接下来要在两台设备上配置对等体和密钥信息,endpoint配置对端可访问的IP地址,allowed-ips配置wg0的IP地址,密钥使用对端的公钥信息。
以PCB为例,可以通过命令查看本地信息。

然后在PCA上进行配置。
wg set wg0 peer ZTwqy6eA2exFjIp4Gqll57FFu99ND97wRCkPv0ZNGVU= allowed-ips 10.1.1.2/32 endpoint 12.1.1.2:53109
同样的,在PCB上配置PCA的相关信息。

wg set wg0 peer spLWYU+3fL0kkaT0BO/D0gO2B+xY/hhZbQx3B3a+WRw= allowed-ips 10.1.1.1/32 endpoint 11.1.1.2:40846
配置完成之后可以看到VPN建立状态。

进行PING测试,可以看到,跳数减1,隧道建立正常。

到这里,PCA和PCB的隧道就建立完了。我们还有一台PCC可以用,也和PCA建立一条隧道。但是我们发现,密钥复杂可以理解,但是这个端口也不规则,那就调整一下吧。
在PCC上操作配置如下:
ip link add dev wg0 type wireguard
ip address add dev wg0 10.1.1.3/24
umask 777
wg genkey > privatekey
wg pubkey < privatekey > publickey
wg set wg0 private-key privatekey
ip link set up dev wg0
wg set wg0 listen-port 10086 peer spLWYU+3fL0kkaT0BO/D0gO2B+xY/hhZbQx3B3a+WRw= allowed-ips 10.1.1.1/32 endpoint 11.1.1.2:40846
wg

对应的,在PCA上添加一下到PCC的信息。
wg set wg0 peer g4wJRsQFR8w8sEjRIfgVMbThxJyapVg3o2UfaDs1SCM= allowed-ips 10.1.1.3/32 endpoint 13.1.1.2:10086
测试一下,访问正常。

验证配置

现在通过简单的配置,我们已经实现PCA-PCB和PCA-PCC之间的互通,并且配置的wg0接口地址都在同一网段,那么PCB和PCC能不能通信呢?

可以看到,虽然PCB、PCC都和PCA建立了隧道,并且在同一网段,但是还是不能直接通信,那如果想通信要怎么办呢?
其实这时就成了Full-Mesh的网络结构,变更也很简单,对应的再增加两条互联配置就可以了。
在PCB上添加一下到PCC的信息。
wg set wg0 peer g4wJRsQFR8w8sEjRIfgVMbThxJyapVg3o2UfaDs1SCM= allowed-ips 10.1.1.3/32 endpoint 12.1.1.2:10086
在PCC上添加一下到PCB的信息。
wg set wg0 peer ZTwqy6eA2exFjIp4Gqll57FFu99ND97wRCkPv0ZNGVU= allowed-ips 10.1.1.2/32 endpoint 12.1.1.2:53109
此时网络结构就是全互联的了。

好像使用起来确实很简单,安装的时候如果没有特殊需求,推荐使用方法二,仅需3条命令即可完成安装;然后仅需8条命令即可完成互联配置,一共只需要11条命令,怪不得2分25秒的视频就能讲明白,确实简单!

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/412406.html

联系我们
联系我们
分享本页
返回顶部