Menu Close

WireGuard服务器和客户端的安装与配置

WireGuard VPN 是一个完全免费的软件应用程序,它将使我们能够建立VPN隧道。 该完整的软件结合了所有必要的通信和加密协议,以在多个客户端和服务器之间建立虚拟专用网络。 线卫 提供比IPsec协议和OpenVPN更好的性能 (在连接速度和连接延迟方面),今天我们将说明其主要功能以及如何轻松安装和配置它。

WireGuard 功能

wireguard VPN 是一个软件 创建虚拟专用网(VPN) 非常 易于配置 , 非常快 (比IPsec和OpenVPN更快),并且使用 默认情况下最现代的加密 ,而无需在不同的对称加密算法(非对称和哈希)之间进行选择。 WireGuard VPN的目标是成为一种标准,并让更多的家庭用户和企业开始使用它,而不是使用IPsec或较难配置且速度较慢的流行OpenVPN。 该软件旨在供家庭用户和超级计算机的所有受众使用。

使用WireGuard VPN 无需管理连接 与IPsec一样,您也可以担心虚拟专用网络本身的状态,管理进程或了解软件在其下的功能以使其正常工作,因此通常需要查看日志并调查正在发生的事情。 另一个优点是配置非常基础,但是功能非常强大。

这本 该软件是L3 VPN , 这就对了 仅使用隧道 ,这不是OpenVPN,因为我们可以在传输模式或隧道模式下工作。 在这种情况下,我们将始终使用隧道模式,此外,它与两种模式都兼容 IPv4网络和IPv6网络 ,此外,它还可以将IPv4数据包封装在IPv6中,反之亦然。 WireGuard使用的传输层协议是 UDP ,因此我们必须在执行NAT的路由器中打开某个端口(以选择可以更改的端口)。

作业系统相容性

这款新的VPN软件最初是为 Linux的 内核,但是 跨平台 ,因为它与 Windows,Linux,MacOS,FreeBSD, Android系统 并且 iOS系统 操作系统 。 该软件的优势之一是,客户端和服务器的配置在不同的操作系统中使用相同的语法完全相同,因此您可以在Linux中配置服务器和客户端,然后通过以下方式将配置“传递”到其他设备:内部的其他操作系统。

使用的密码学

使用IPsec和OpenVPN协议,客户端和服务器都必须“同意”在IPsec的第1阶段和第2阶段以及(OpenVPN的)控制和数据通道中使用的加密协议),否则将无法正确建立连接。 线卫 提供了一个完整的密码“包” ,无需任何选择即可确保连通性。 如果在某一时刻认为此VPN使用的一种加密协议不安全,则与使用没有安全漏洞的新协议启动第二版WireGuard一样容易,并且在客户端和服务器之间将表示使用“版本2”,对我们完全透明。

另一个非常重要的细节是该VPN使用 很小的源代码 。 与StrongSwan或OpenVPN相比,代码行很少,因此审核可以在很短的时间内执行,也很容易发现可能的漏洞或安全漏洞。 使用更少的代码行,对VPN编程的可能攻击的面也较小。

WireGuard VPN当前使用 ChaCha20 用于对称加密,通过 Poly1305 ,使用AEAD构造。 它也使用 Curve25519 对于ECDH, 布莱克2 对于哈希, SipHash24 提供 哈希表 键和 香港民主促进会 对于密钥派生,这意味着我们正在使用最现代的密码算法,目的是提供最大的安全性和性能。

漫游和终止开关支持

该软件旨在能够 轻松快速地漫游 ,如果我们的设备更改了网络,并在逻辑上更改了公共IP(例如,当我们从运营商的Wi-Fi网络和4G / LTE网络经过时),VPN连接将保持解除状态,因为它们将快速重新对VPN进行身份验证服务器,以便我们将始终连接到VPN。

我们也可以 在设备上启用Kill-Switch ,这样,如果VPN连接被中断,则软件本身也将负责中断所有网络流量,直到VPN连接重新建立为止,以便让我们在没有该VPN提供的保护的情况下导航。

WireGuard 安装

该软件的安装非常简单,我们只需要 转到WireGuard的官方网站 ,然后下载适用于Windows或MacOS操作系统的可执行文件。 如果您使用具有相应存储库的基于Linux的操作系统,则可能必须添加特定的WireGuard存储库,因为默认情况下它当前不在“稳定”分支中。

例如,我们已经以 Debian 最新版本安装了 VPN 服务器,为了安装它,我们已经遵循官方网站上指示的步骤。 需要超级用户权限才能正确执行安装。
sudo echo“ deb http://deb.debian.org/debian/ stable main”> /etc/apt/sources.list.d/unstable.list sudo printf’软件包:* / nPin:发布a =不稳定/ nPin-优先级:90 / n’> /etc/apt/preferences.d/limit-unstable sudo apt update sudo apt install wireguard
我们不要忘记,该VPN也与FreeBSD,OpenBSD甚至与路由器的OpenWRT等操作系统兼容,因为通常只需通过“ opkg”安装它即可,因为通常会安装所有其他软件。

如果您要在装有Android或iOS的智能手机上安装VPN客户端,则我们目前拥有官方应用程序,因此您可以在没有问题的情况下进行安装 Google Play 以及 App Store 分别:

WireGuard配置:公钥,私钥和配置文件

一旦我们在充当服务器的计算机以及我们要连接的所有客户端上正确安装了WireGuard,就必须对其进行配置。 我们必须做的第一件事是在服务器和我们要连接的所有客户端上创建公私钥对。 我们已经使用Debian操作系统生成密钥并配置服务器,但是,我们也可以直接在Windows软件中进行操作。

在Debian上运行WireGuard服务器的路径是/ etc / wireguard /,因此我们将使用以下命令转到该路径:

cd /etc/wireguard/

服务器的偶-公-私密钥生成

要在此位置生成公钥和私钥对,我们只需要输入:

wg genkey | tee claveprivadaservidor | wg pubkey > clavepublicaservidor

现在,我们将拥有两个文件,一个具有公钥,一个具有私钥:

  • 私钥:6JcquylvtJsHNCdWrYMj28XsLIFJUVjlr2y5o27rO2c =
  • 公钥:xeTkJjjBUyp8paxTgajwDa + qWjrD2RpXlJRSHMwcGDQ =

这些密钥是我们将用于WireGuard VPN«服务器»的密钥。

客户端的公私钥生成

要生成将在客户端中使用的另一对公钥和私钥,我们可以在新文件夹中创建它们,或者在同一位置使用其他名称创建它们。

wg genkey | tee claveprivadacliente1 | wg pubkey > clavepublicacliente1

现在,我们将拥有两个文件,一个具有公钥,一个具有私钥:

  • 私钥:yPMpP2raY4FoCEJkmzQMlxzm / 6RBIW9HkjY6pVFIOnI =
  • 公钥:6c12jLkKzgU9len1kQ / 6Fc61xm + LL98TPPlLsri8klE =

这些密钥是我们将用于WireGuard VPN客户端的密钥。

服务器配置文件

与IPsec或OpenVPN服务器相比,WireGuard服务器的配置非常简单,但是,我们必须考虑以下几点。

在服务器中,我们将必须有一个“ 接口 ”部分,在此部分中,我们可以指出 专用IP地址 在客户端连接时标识服务器的服务器。 我们必须记住该VPN是L3,因此我们可以放置任何给定时间未使用的任何私有IP地址。 例如,在OpenVPN中,默认子网是10.8.0.0/24,在这里我们还可以放置相同或任何其他子网192.168.2.0/24(而192.168.2.1是服务器本身,而其他IP是客户端) 。 使用«的语法 地址 »我们将放置所需的VPN子网。

在« PrivateKey »我们将必须输入先前为服务器生成的私钥。 在« 监听端口 »我们将放置要用于服务器的UDP端口,如果我们在具有NAT的路由器后面,则此端口是以后我们必须在NAT中“打开”的端口。

最后,在《接口》的这一部分中,我们还可以定义在使用《 PostUp》提起虚拟接口之后以及在使用《 PostDown》引发虚拟接口之后执行的命令。 如您所见,由于我们不想对此接口进行NAT,所以我们目前对此进行了评论,但是可以完美地完成它。

在“ 窥视 ”是我们必须放置允许连接的客户端列表的位置。 在这种情况下,我们将仅连接一个“对等”,因此我们将用«定义您的公钥。 公钥 »我们先前创建的(或客户端已经提供给我们的,因为它可能是由他生成的),并且我们还可以指示是否允许该客户端使用特定的IP地址进行连接。 与« 允许的IP »指令,我们可以过滤源IP地址,如果输入0.0.0.0/0,则表示我们允许任何IP地址。

该配置文件可以称为«wg0.conf»,因为WireGuard会使用该名称创建虚拟接口,因此非常适合区分它们。 要运行此配置文件,只需运行:

root@debian-vm:/etc/wireguard# wg-quick up wg0

当您启动它时,WireGuard将负责创建虚拟接口,将IP地址,MTU放入,甚至在路由表中创建相应的路由:

 root@debian-vm:/etc/wireguard# wg-quick up wg0
 [#] ip link add wg0 type wireguard
 [#] wg setconf wg0 /dev/fd/63
 [#] ip -4 address add 192.168.2.1 dev wg0
 [#] ip link set mtu 1420 up dev wg0
 [#] wg set wg0 fwmark 51820
 [#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
 [#] ip -4 rule add not fwmark 51820 table 51820
 [#] ip -4 rule add table main suppress_prefixlength 0
 [#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
 [#] iptables-restore -n

客户端的配置文件

与IPsec或OpenVPN服务器相比,WireGuard客户端配置非常简单,但是,我们必须考虑以下几点。

在客户中,我们必须有一个“ 接口 ”部分,在此部分中,我们可以指出 专用IP地址 在我们连接时识别客户端。 我们必须记住该VPN是L3,因此我们可以放置任何给定时间未使用的任何私有IP地址。 例如,在OpenVPN中,默认子网是10.8.0.0/24,在这里我们还可以放置相同或任何其他子网192.168.2.0/24(而192.168.2.1是服务器本身,而地址192.168.2.2从现在开始,成为客户,语法为“ 地址 ”,我们将放置所需的VPN子网。

在« PrivateKey »我们将必须输入先前为客户端生成的私钥。

在“ 窥视 “我们将必须在其中放置公钥” 公钥 我们要连接的WireGuard服务器”,也就是说,该服务器必须向我们提供此公钥。 在这种情况下,我们还可以使用“ 允许的IP ”指令,但操作有所不同,在这种情况下,我们可以定义是只想通过VPN到达某个子网(或几个子网),还是要通过虚拟专用网转发所有Internet流量。 如果将子网用逗号分隔,则可以访问服务器上的多个子网,如果要转发所有流量,只需将0.0.0.0/0放入IPsec中即可。

最后, 端点 »指令,我们将定义运行WireGuard VPN的服务器的公共IP地址,然后是所用UDP端口的两点(:)。 我们必须记住,WireGuard使用UDP,因此我们不应在防火墙上对其进行过滤。

如果未使用与WireGuard的软件和通信,则它会尽可能不引起注意,即,它不会通过VPN连续发送数据以保持隧道活动状态,非常适合在智能手机上节省电池和移动数据。 在大多数通常的配置中,这很完美,但是如果我们在NAT或防火墙,有可能由于没有数据传输而导致通信中断,因此有必要配置“保持活动”。 要配置“保持活动”,只需指示“ PersistentKeepAlive”指令,然后输入一个整数即可表示保持活动的秒数。 根据官方文档,对于大多数防火墙和NAT系统,设置25秒就足够了,如果设置为0,则禁用此功能。 如果我们在NAT或防火墙后面,并且想要在很长一段时间没有流量的情况下接收传入的连接,则此指令将是必需的,否则我们可能不会使用它。

在Windows操作系统中,我们可以导入相同的配置,并且可以进行连接,尽管我们可以从头开始连接客户端,但是必须将生成的公共密钥“传递”到WireGuard服务器。

查看WireGuard日志以验证VPN连接已正确建立也非常重要。 我们无法在“接口/地址”部分中放置Windows客户端中已在使用的私有IP地址,因为连接会出错。

如您所见,WireGuard VPN的配置非常简单快捷

与L2TP / IPsec和OpenVPN相比,WireGuard VPN性能

在RedesZon​​e中,我们检查了WireGuard VPN与L2TP / IPsec和OpenVPN相比的性能,测试是在本地网络中进行的,以避免运营商出现问题,因此我们可以测量能够为我们提供最大价值的实际最大性能。特定于硬件。

我们使用的VPN服务器配置(对于L2TP / IPsec,OpenVPN和WireGuard)如下:

  • 威联通TS-1277:AMD锐龙7 2700处理器; 内存:64GB RAM DDR4; 网络连接:QNAP QXG-10G2T-107,10 Gbps,带Cat7电缆, D-Link DXS-1210-10TS开关 .
  • 用于L2TP / IPsec和OpenVPN(使用UDP)的VPN软件是QNAP的QVPN 2
  • 在使用OpenVPN(使用UDP)和AES-256-GCM的第二次测试中,我们将Virtualization Station与Debian一起使用。
  • iperf3手动安装在QTS和虚拟化的Debian中。

我们使用的VPN客户端配置(对于L2TP / IPsec,OpenVPN和WireGuard)如下:

  • 装有AMD Ryzen 7 3800x处理器的PC; RAM内存:32GB RAM DDR4 3200MHz; 网络连接: 华硕XG-C100C CAT10电缆以7Gbps的速率连接 D-Link DXS-1210-10TS开关 用于两者的连接 设备 。 测试中使用的操作系统:Windows 10 1909。
  • Windows 10 L2TP / IPsec客户端
  • 最新版本的OpenVPN(2.4.8)
  • Windows 3中的iperf 10。

测试中获得的性能如下:

如您所见,WireGuard的实际速度是L2TP / IPsec或OpenVPN的两倍,因此我们可以说此VPN确实非常快。

我们希望本设置教程对您有所帮助,并且您可以轻松地部署WireGuard服务器和客户端,以安全的方式从任何地方安全地连接到我们的家庭,企业或Internet。

发表回复

您的电子邮箱地址不会被公开。