WireGuard 是一种简单而现代的 VPN(虚拟专用网络),具有最先进的加密技术。它与其他类似解决方案(如 IPsec 和 OpenVPN)更快、更容易配置,性能也更强。
WireGuard 是跨平台的,几乎可以在任何地方运行,包括 Linux、Windows、Android 和 macOS。卫士是点对点VPN;它不是基于客户端-服务器模型。根据其配置,对等体可以充当传统服务器或客户端。
WireGuard的工作原理是在每个作为隧道运行的对等设备上创建一个网络接口。对等体通过交换和验证公钥(模拟 SSH 模型)相互验证。公钥使用隧道中允许的 IP 地址列表映射。VPN 流量封装在 UDP 中。
本教程介绍如何在 CentOS 8 计算机上设置线卫士,该计算机将充当 VPN 服务器。我们还将向您展示如何将 WireGuard 配置为客户端。客户端的流量将通过 CentOS 8 服务器路由。此设置可用作针对中间人攻击、匿名浏览网页、绕过地理限制内容或允许在家工作的同事安全地连接到公司网络的保护。
您将需要一个 CentOS 8 服务器,您可以访问为 root 或帐户与sudo 权限。
我们将从在 CentOS 计算机上安装 WireGuard 开始,并将其设置为充当服务器。我们还将配置系统以路由客户端的流量通过它。
WireGuard 工具和内核模块可用于从 Epel 和 Elrepo 存储库进行安装。要将存储库添加到系统,请运行以下命令:
sudo dnf install epel-release elrepo-release
完成后,安装 WireGuard 软件包:
sudo dnf install kmod-wireguard wireguard-tools
系统可能会要求您导入存储库 GPG 密钥。出现提示时键入。y
该包包括两个名为的命令行工具,允许您配置和管理 WireGuard 接口。wireguard-toolswgwg-quick
我们将将 VPN 服务器配置存储在目录中。在 CentOS 上,在安装过程中不会创建此目录。运行以下命令以创建目录:/etc/wireguard
sudo mkdir /etc/wireguard
在目录中生成公钥和私钥。/etc/wireguard
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
您可以查看与猫或更少的文件。私钥绝不应与任何人共享。
现在生成密钥,下一步是配置将路由 VPN 流量的隧道设备。
可以使用ip和 或使用文本编辑器创建配置文件,从命令行设置设备。wg
创建一个名为并添加以下内容的新文件:wg0.conf
sudo nano /etc/wireguard/wg0.conf
/etc/线护/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade
复制
该接口可以命名为任何您想要的,但建议使用类似 包括 或 等内容。接口部分中的设置具有以下含义:wg0wgvpn0
wg0wg genkeysudo cat /etc/wireguard/privatekey)firewall-cmd和 文件不应对普通用户进行可读。使用chmod将权限设置为 :wg0.confprivatekey600
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}
完成后,使用配置文件中指定的属性启动接口:wg0
sudo wg-quick up wg0
该命令将输出类似以下操作:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
若要查看接口状态和配置,请运行:
sudo wg show wg0
interface: wg0
public key: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
private key: (hidden)
listening port: 51820
还可以使用 命令验证接口状态:ip
ip a show wg0
4: wg0: mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
若要在启动时启动接口,请运行以下命令:wg0
sudo systemctl enable wg-quick@wg0
要使 NAT 正常工作,我们需要启用 IP 转发。创建新文件 并添加以下行:/etc/sysctl.d/99-custom.conf
sudo nano /etc/sysctl.d/99-custom.conf
/etc/sysctl.d/99-自定义.conf
net.ipv4.ip_forward=1
复制
保存文件并使用sysctl 应用更改:
sudo sysctl -p /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
就是这样。将充当服务器的 CentOS 对等体已设置。
所有受支持平台的安装说明可在https://wireguard.com/install/。在 Linux 系统上,可以使用分发包管理器安装包,并使用 在 macOS 上安装。安装 WireGuard 后,请按照以下步骤配置客户端设备。brew
设置 Linux 和 macOS 客户端的过程与服务器的过程大致相同。首先生成公钥和私钥:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
创建文件并添加以下内容:wg0.conf
sudo nano /etc/wireguard/wg0.conf
/etc/线护/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
复制
接口部分中的设置与设置服务器时的含义相同:
wg0sudo cat /etc/wireguard/privatekey对等部分包含以下字段:
/etc/wireguard/publickey如果需要配置其他客户端,只需使用不同的专用 IP 地址重复相同的步骤。
从有线卫士网站下载并安装Windows msi包。
安装后打开 WireGuard 应用程序,然后单击\”添加隧道\” – > \”添加空隧道…\”如下图所示:


将自动创建公共密钥对并在屏幕上显示。


输入隧道的名称并编辑配置,如下所示:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
复制
在接口部分中添加新行以定义客户端隧道地址。
在对等部分中添加以下字段:
/etc/wireguard/publickey完成后,单击\”保存\”按钮。
最后一步是将客户端公钥和 IP 地址添加到服务器:
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
请确保使用在客户端计算机上生成的公钥 () 更改 ,如果客户端 IP 地址不同,请调整该地址。Windows 用户可以从 WireGuard 应用程序复制公钥。CLIENT_PUBLIC_KEYsudo cat /etc/wireguard/publickey
完成后,返回客户端计算机并打开隧道接口。
在 Linux 客户端上运行以下命令,打开接口:
sudo wg-quick up wg0
现在,您应该连接到 CentOS 服务器,并且客户端计算机的流量应该通过它路由。您可以检查以下连接:
sudo wg
interface: wg0
public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
private key: (hidden)
listening port: 60351
fwmark: 0xca6c
peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 41 seconds ago
transfer: 213.25 KiB received, 106.68 KiB sent
您也可以打开浏览器,键入\”什么是我的IP\”,你应该看到你的 CentOS 服务器IP地址。
要停止隧道,请关闭接口:wg0
sudo wg-quick down wg0
如果您在 Windows 上安装了 WireGuard,请单击\”激活\”按钮。连接对等体后,隧道状态将更改为\”活动\”:

