当前位置:   article > 正文

Wireguard配置文件详解

Wireguard配置文件详解

faf30f8bbb3e16ec9fbd741adcce4ac4.gif

正文共:1888 字 10 图,预估阅读时间:2 分钟

我们前面在介绍Wireguard使用8条命令即可完成的VPN配置!CentOS快速配置WireGuard全互联组网,Linux系统下是通过命令配置的,格式如下:

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

然后在Windows下配置Wireguard时简单测试一下Windows和Linux之间WireGuard的对接情况,我们发现它竟然需要使用配置文件,因为没有配置指导手册,所以摸索了半天才搞了一个大概的格式出来,像下图这样:

7150ed98f6026cf06a5d1afbbe6a1a2f.png

其实如果从正常使用的角度来看,绝对是配置文件更方便一些。那完整的配置文件长啥样呢?

活人还能让尿憋死了?没有配置指导,那就自己手攒一个!

从Windows的配置文件中,我们大概可以发现,配置文件分为[Interface]和[Peer]两个部分。通过配置过程来看,[Interface]指的是Wireguard的虚拟接口,也就是标识本地身份的,一般只有一个;但是可以和多个邻居建立关系,所以[Peer]部分可以配置多个。

23128600ed4ca0413ba99407679e6394.png

[Interface]配置

2b069cdb2927ac962e61c92e6bef3276.png

[Interface]即本地的接口配置,一般是手工创建的虚拟接口,推荐的接口名称为“wg0”或“wgvpn0”。[Interface]部分可能包含以下内容:

PrivateKey:必配项,一般是通过wg-genkey生成的base64私钥。

PrivateKey = yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=

ListenPort:可选项,用于指定建立Wireguard隧道时本地所侦听的端口,配置范围为0-65535,建议配置10000以上的端口。默认是没有指定的,此时程序会随机选择一个端口,所以程序启动时大家会看到有一个默认端口,建立连接时需要匹配到对应的端口,不算方便,建议指定。

ListenPort = 10086

295722d6aed338307d00a3fd7c11dae9.png

Address:可选项,用于指定分配给Wireguard 接口的IP地址,支持配置CIDR掩码,就像Windows中配置的那样。

Address = 10.1.1.8/24

DNS:可选项,用于指定分配给Wireguard 接口的DNS服务器的IP地址,可以通过逗号“,”进行分隔来配置多个DNS服务器。

DNS = 114.114.114.114,8.8.8.8

MTU:可选项,用于指定接口的最大传输单元MTU。默认情况下,MTU会根据端点地址或系统默认路由自动确定。如果有特殊需求,可以手工指定MTU的值,一般用于减少报文在传输过程中被分片。

MTU = 1350

Table:可选项,当系统中有多个路由表时,用于控制要添加路由的路由表。默认未配置,即默认配置为“auto”,表示将路由添加到默认表中,并启用[Peer]默认路由的特殊处理;如果配置为“off”,表示完全禁用添加路由的功能。

Table = 1234

PreUp、PostUp、PreDown、PostDown:可选项,用于配置在使能/去使能接口之前/之后需要执行的脚本。常用于配置自定义DNS选项或防火墙规则,如果指定了多条命令,这些命令将按照配置顺序依次执行。

  1. PostUp = ip rule add ipproto tcp dport 22
  2. PreDown = ip rule delete ipproto tcp dport 22

SaveConfig:可选项,用于设置在关闭Wireguard接口时,是否将当前状态保存到配置文件中。默认未配置,如果需要启用此功能,需要设置为“true”。

SaveConfig = true

71439c2f9d1f0f0336119d2260b68b5a.png

[Peer]配置

6a96959143ed45e10e9b0014c153ef62.png

[Peer]部分就是指定Wireguard邻居的相关信息,可能包含以下内容:

PublicKey:必配项,一般是通过wg pubkey从私钥计算的base64公钥,用于验证邻居身份信息。

PublicKey = GtL7fZc/bLnqZldpVofMCD6hDjrK28SsdLxevJ+qtKU=

PresharedKey:可选项,一般是通过wg-genpsk生成的base64预共享密钥。此选项添加了一个额外的对称密钥加密层,以混合到现有的公钥加密中,以实现后量子抗性。

PresharedKey = /UwcSPg38hW/D9Y3tcS1FOV0K1wuURMbS0sesJEP5ak=

AllowedIPs:必配项,用于配置允许邻居的传入流量,以及本地要发送给对端的发送流量。格式为以逗号分隔的包含CIDR掩码的IP地址列表,也可以配置为默认路由,匹配所有IPv4地址指定为0.0.0.0/0,匹配所有IPv6地址指定为::/0。

AllowedIPs = 10.192.172.0/24,192.168.0.0/16

Endpoint:可选项,用于指定对端邻居的IP地址或主机名,后跟冒号“:”,然后是端口号。

Endpoint = 100.1.2.34:1234

PersistentKeepalive:可选项,用于配置和对端邻居的保活报文的发送间隔,配置范围为1-65535。当端点位于有状态防火墙或NAT设备后方时,为了保持会话的持续连接,可以通过配置保活报文向对端发送经过身份验证的空数据包来实现。默认处于关闭状态,即值为“0”或“off”,如果要使用,请配置为1-65535之间的值。

PersistentKeepalive = 30

2f5623fd4d66a7d10457a3c4db9d5e49.png

配置举例

846261ad3b10958ebd0824f45c90b538.png

掌握了前面的配置精髓之后,我们来尝试配置一下两台设备之间的互联。

首先,作为前提条件,我们需要为Linux主机增加一个虚拟网卡,并配置一个IP地址。

  1. ip link add dev wg0 type wireguard
  2. ip address add dev wg0 10.1.1.2/24
  3. ip link set up dev wg0

8dedcbf0dfc125c13f698e45f3b29da6.png

WireGuard需要base64编码的公钥和私钥,可以使用wg程序自动生成:

  1. umask 777
  2. wg genkey > privatekey
  3. wg pubkey < privatekey > publickey

f9aedf7aa8c0824ada949822266c600a.png

拿到公钥和私钥,我们需要记录这两个信息,私钥是配置在本端的[Interface]配置中的,公钥是配置在对端的[Peer]配置中的。

接下来我们想让两台主机分别通过10.1.1.0/24网段进行互通,端口号使用10086。那我们可以将配置文件简单配置成如下所示:

  1. [Interface]
  2. PrivateKey = uMTJJ6LZKwHGfdUUtQdGt5d/qCey5xRZi2MFG27HQ0E=
  3. ListenPort = 10086
  4. [Peer]
  5. PublicKey = reMkRBC1wrBqPOrqDRYVNGx4RBLwM2iYCKYzvC7lbCg=
  6. Endpoint = 192.168.1.141:10086
  7. AllowedIPs = 10.1.1.0/24

271ae30e6a4bc9085d208518843fbba9.png

对应的,对端的Wireguard配置如下:

  1. [Interface]
  2. PrivateKey = 2DOnuYIGbLMplHdd3TjwUjbZGQfPC6kxbp+XE+Z1FlM=
  3. ListenPort = 10086
  4. [Peer]
  5. PublicKey = Qldp06YMySdq77rT+JboZAAicv0JZtuMxCl2Eb79yj8=
  6. Endpoint = 192.168.1.142:10086
  7. AllowedIPs = 10.1.1.0/24

两端都配置完成之后,就可以配置调用生效了。

wg setconf wg0 wg0.conf

ec4f85a3920775431a78bd8b309f81e5.png

可以看到,配置前后的显示存在明显差异;再配置好另一台终端,就可以测试访问了。

ee7c557cebbdac47ed5d5c1c3f04b99c.png

此时,我们查看一下设备的路由表信息。

d22befcd5ef743c53d24e348619d9cc7.png

可以看到,只有10.1.1.0/24这一条路由,但是,这条路由是在创建好网卡之后就存在的。那我们测试一下能不能通过手工添加路由的方式来访问对端主机的其他地址。

eee8f37f970f8dea7d2d6d284c1f6243.png

可以看到,回应的有报错信息,那我们把路由写到配置文件里面。

3242a75da64ec5fafe5b2064f237477f.png

可以看到,现在就可以访问了,所以不能通过手工添加路由的方式来互访,需要写入到配置文件中。

a2e59f81c264c376e9b19eef66e33a0b.gif

长按二维码
关注我们吧

c4c869c3d456c7c74d690fec35306571.jpeg

b9aadafa3ec1b424a2e5d34cc0dc2490.png

Netmaker服务器端快速搭建WireGuard网络

不使用脚本,如何快速部署自定义Netmaker服务?

SD-WAN设备的串接透明部署怎么实现?

如何用SD-WAN路由器实现串接透明部署?

仅需一个公网IP地址,就能在互联网搞一张大二层网络

EVPN 中的虚拟专线服务支持

KVM部署初体验

openVPN服务器配置的31个关键点

openVPN + VPP = openVPP

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/384479
推荐阅读
相关标签
  

闽ICP备14008679号