wireguard研究

WireGuard测试报告

wireguard简介
WireGuard 是由 Jason Donenfeld 等人用 C 语言编写的一个开源 VPN 协议,被视为下一代 VPN 协议,旨在解决许多困扰 IPSec/IKEv2、OpenVPN 或 L2TP 等其他 VPN 协议的问题。它与 Tinc 和 MeshBird 等现代 VPN 产品有一些相似之处,即加密技术先进、配置简单。从 2020 年 1 月开始,它已经并入了 Linux 内核的 5.6 版本,这意味着大多数 Linux 发行版的用户将拥有一个开箱即用的 WireGuard。

一、测试环境
环境说明
在这里插入图片描述

1 R2跟R3之间通过R1(用武汉办华为交换机替代)跨网段互联互通,R1交换机缺省指定到武汉办出口设备NetMizer模拟运营商线路。

interface Vlanif66
ip address 192.168.66.1 255.255.255.0
ip address 22.22.22.1 255.255.255.252 sub

interface Vlanif77
ip address 22.22.23.1 255.255.255.252
ip address 192.168.77.1 255.255.255.0 sub

interface GigabitEthernet0/0/3
description LINK_TO_GEN8_SERVICE
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 66 77

ip route-static 0.0.0.0 0.0.0.0 192.168.0.254

2 PC将各自的缺省路由指定到对应的汇聚路由。

3 R4、R5缺省给R2,R6、R7缺省给R3。

4 R2 R3上面安装wireguard

Sudo apt install wireguard

5 R2 R3指定各自PC网段路由。

二、测试目的
1 测试wirguard路由能否通过脚本或配置文件自动生成。

2 测试客户路由能否通过wirguard隧道实现三层的互通。

3 测试wirguard之间能否建立双隧道。

4 测试wirguard能否实现双隧道之间的三层互通。

三、测试结论
1 路由生成

1 R2 R3之间建立wirguard隧道,R2-wg0使用隧道地址10.10.10.1/30,R3-wg0使用隧道地址10.10.10.2/30
1 生成key
Cd/etc/wireguard
wg genkey | tee privatekey | wg pubkey > publickey

2 wirguard配置
R2
root@pengxiao-virtual-machine:/etc/wireguard# cat wg0.conf
[Interface]
PrivateKey = EDUMmc9hXfLJ05Cod6XgaFaKFD6TTHb2u7xILjFaC1k=
ListenPort = 56560
Address = 10.10.10.1/32

[Peer]
PublicKey = HUCKOLKXBV53bpiqGCtY61RbNrvbotYCCKcWifjjb2c=
AllowedIPs = 10.10.10.2/32
Endpoint = 22.22.23.2:56560
root@pengxiao-virtual-machine:/etc/wireguard#

R3

[Interface]
PrivateKey = eFvJdS8Tz5h05HqJLcb1mo/EKenoblEMM/BUqkL0t1k=
ListenPort = 56560
Address = 10.10.10.2/32

[Peer]
PublicKey = 94JDbWR6sj8jzZlLkWFt1bgqTn8I2Guyzbj/k01Pv20=
AllowedIPs = 10.10.10.1/32
Endpoint = 22.22.22.2:56560

3 R3 通过wg-quick的方式起隧道。

可以看见10.10.10.2 被写入系统路由

4 通过wg setconf起路由

可以看见10.10.10.2 没有被写入系统路由

结论:原生wg setconf wg0方式不会写入系统路由,wg-quick会根据脚本自动读取生成AllowedIPs里面ip段的路由,并加入系统路由。

2 路由三层互通

1 在R2上面指定目标为172.16.18.0/24网段走wirguard隧道wg0, 在R3上指定目标为172.16.16.0/24网段走wirguard隧道wg0。

R2

[Interface]
PrivateKey = EDUMmc9hXfLJ05Cod6XgaFaKFD6TTHb2u7xILjFaC1k=
ListenPort = 56560
#Address = 10.10.10.1/32

[Peer]
PublicKey = HUCKOLKXBV53bpiqGCtY61RbNrvbotYCCKcWifjjb2c=
AllowedIPs = 10.10.10.2/32,172.16.18.0/24
Endpoint = 22.22.23.2:56560

R3

[Interface]
PrivateKey = eFvJdS8Tz5h05HqJLcb1mo/EKenoblEMM/BUqkL0t1k=
ListenPort = 56560
Address = 10.10.10.2/32

[Peer]
PublicKey = 94JDbWR6sj8jzZlLkWFt1bgqTn8I2Guyzbj/k01Pv20=
AllowedIPs = 10.10.10.1/32,172.16.16.0/24
Endpoint = 22.22.22.2:56560

2 测试172.16.18.0/24网段的pc能否穿越wirguard隧道wg0 ping通172.16.16.0/24网段的pc。

PC 5 PING PC1

PING 172.16.16.2 (172.16.16.2) 56(84) bytes of data.
64 bytes from 172.16.16.2: icmp_seq=1 ttl=60 time=5.05 ms

PC5:tracepach PC1

1?: [LOCALHOST] pmtu 1500
1: _gateway 0.138ms
1: _gateway 0.111ms
2: 11.11.13.1 0.194ms
3: 11.11.13.1 0.313ms pmtu 1420
3: 10.10.10.1 0.778ms
4: no reply
5: 172.16.16.2 17.521ms reached

结论:172.16.18.0/24网段的client能够穿越wirguard隧道wg0 ping通172.16.16.0/24网段的pc。

3 双隧道建立

1 R2、R3 复制wg0配置文件,命名为wg1修改wg1 AllowedIPs,以及ListenPort。

R2-wg1

[Interface]
PrivateKey = EDUMmc9hXfLJ05Cod6XgaFaKFD6TTHb2u7xILjFaC1k=
ListenPort = 56561
Address = 10.10.11.1/32

[Peer]
PublicKey = HUCKOLKXBV53bpiqGCtY61RbNrvbotYCCKcWifjjb2c=
AllowedIPs = 10.10.11.2/32
Endpoint = 22.22.23.2:56561

R3-wg1

[Interface]
PrivateKey = eFvJdS8Tz5h05HqJLcb1mo/EKenoblEMM/BUqkL0t1k=
ListenPort = 56561
Address = 10.10.11.2/32

[Peer]
PublicKey = 94JDbWR6sj8jzZlLkWFt1bgqTn8I2Guyzbj/k01Pv20=
AllowedIPs = 10.10.11.1/32
Endpoint = 22.22.22.2:56561

2 R2 R3分别通过wg-quick建立wireguird隧道

3 测试wg1隧道地址互通性,同时确保wg0未受影响。

R3->R2 wg0

PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=1 ttl=64 time=0.467 ms

R3-R2 wg1

PING 10.10.11.2 (10.10.11.2) 56(84) bytes of data.
64 bytes from 10.10.11.2: icmp_seq=1 ttl=64 time=0.018 ms

结论:wg1互通性正常,wg0也没受影响。

4 双隧道三层路由

1 在R2上面指定目标为172.16.19.0/24网段走wirguard隧道wg1, 在R3上指定目标为172.16.17.0/24网段走wirguard隧道wg1。
R2

172.16.19.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1

R3

172.16.17.0 0.0.0.0 255.255.255.0 U 0 0 0 wg1

2 测试172.16.19.0/24网段的PC7能否穿越wirguard隧道wg1 ping通172.16.17.0/24网段的PC3,同时在PC5上查看之前走wg0隧道的业务是否受到影响。

PC 7-PC3-ping

PING 172.16.17.2 (172.16.17.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值