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

a5bfae0d77e7dece90fc05f339c95239.gif

正文共:3562 字 11 图,预估阅读时间:9 分钟

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

6608c410bc3a1cdbd564dd09b077c422.png

WireGuard利用先进的加密技术,并且覆盖了几乎所有的常见的操作系统,可以广泛部署。据说目前被认为是业内最安全、最容易使用和最简单的 VPN 解决方案。

之前讲IPsecIPsec系列的时候就有小伙伴让介绍一下WireGuard,终于安排上了。

官网用了一段2分25秒的无剪辑、无倍速的视频介绍了如何快速部署WireGuard,乍一看是很简单,但他它所使用的两台主机是同一网段的,我们对环境做一下简单升级,使用3台不用网段的主机来测试一下。

25b5d838521a032ab184fb30000ec22e.png

组网需求

0ce76fb6a6c1796455d9f487b6079e0c.png

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

ee5225aab90720777b8d62dae6e7ca9c.png

组网图

e08b01529dcc7dd404be298e232576de.png

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

89e65cc552181ef6f40754a6b181a774.png

2a62c9b5627f85099b651e22a7bf1aa2.png

实验环境

2474bfa9baada2397085120a81a47065.png

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内存)

fea15657fccafbd706aaf8790a6b914a.png

配置步骤

9177297c2a1b6dbdceefa6b0f176b39a.png

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

255761f3596100e9ccdf34e9e45b3166.png

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

6f471059471971bdef34f16a7aa27605.png

PCB

如果希望使用标准内核,可以使用 ELRepo 的预构建模块进行安装。

yum install -y epel-release elrepo-release
yum install -y yum-plugin-elrepo
yum install -y kmod-wireguard wireguard-tools

a8ba985aef65a40b14d72d0a971ab630.png

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

edf05601776a183344bc08afe4c58107.png

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为例,可以通过命令查看本地信息。

72f3febaa43eff31277bf73314fcc629.png

然后在PCA上进行配置。

wg set wg0 peer ZTwqy6eA2exFjIp4Gqll57FFu99ND97wRCkPv0ZNGVU= allowed-ips 10.1.1.2/32 endpoint 12.1.1.2:53109

同样的,在PCB上配置PCA的相关信息。

670a4287460652286dc91e72fde30768.png

wg set wg0 peer spLWYU+3fL0kkaT0BO/D0gO2B+xY/hhZbQx3B3a+WRw= allowed-ips 10.1.1.1/32 endpoint 11.1.1.2:40846

配置完成之后可以看到VPN建立状态。

4c31527fed821ee53c9a925e28c472c7.png

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

cf495286ccf57818bf41e9a416985403.png

到这里,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

dbc6c968d444c14d409d44cbad1a3916.png

对应的,在PCA上添加一下到PCC的信息。

wg set wg0 peer g4wJRsQFR8w8sEjRIfgVMbThxJyapVg3o2UfaDs1SCM= allowed-ips 10.1.1.3/32 endpoint 13.1.1.2:10086

测试一下,访问正常。

2029cd4a71dcef35d0170da52ee3f7ff.png

6ef5fde80dcf7a0fb105540c75248546.png

验证配置

9e53616007484d602a93434ba010cc6a.png

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

ce8d6a5ce0791e186669191b6367bb74.png

可以看到,虽然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

此时网络结构就是全互联的了。

72b4c916ff543a5c2660ca2dfc4a3845.png

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

e1df83e002bcd0845ed327a9b36b1c9a.gif

长按二维码
关注我们吧

16f05d6cca316771a601bc97cef729c3.jpeg

d864c51f3802fff99b967e5c7571c203.png

Wireshark如何解密IPSec报文?

虚拟专用网络 (VPN) 术语

避免路由泄露,VPN实例流量怎么互通?

VRF + 子接口 + NAT,改进大不大?

使用以太网 VPN (EVPN) 的网络虚拟化Overlay解决方案

千呼万唤始出来:EVE-NG终于来了!

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值