本教程将向您展示如何在 CentOS/RHEL 上设置您自己的 WireGuard VPN 服务器。 WireGuard 是专门为 Linux 内核设计的。 它在 Linux 内核中运行,允许您创建快速、现代且安全的 VPN 隧道。
WireGuard VPN 的特点
- 轻量级和超快的速度,将 OpenVPN 吹出水面。
- 跨平台。 WireGuard 可以在 Linux、BSD、macOS、Windows、Android、iOS 和 OpenWRT 上运行。
- 用户身份验证是通过交换公钥来完成的,类似于 SSH 密钥。
- 它为 VPN 客户端分配静态隧道 IP 地址。 有些人可能不喜欢它,但在某些情况下它可能很有用。
- 移动设备可以在 Wi-Fi 和移动网络之间无缝切换,而不会中断任何连接。
- 它旨在在大多数用例中取代 OpenVPN 和 IPSec。
要求
要学习本教程,您需要一个 VPS(虚拟专用服务器),它可以自由访问被阻止的网站(在您的国家或互联网过滤系统之外)。 我推荐 Kamatera VPS,它具有:
- 30 天免费试用。
- 每月 4 美元起(1GB RAM)
- 基于KVM的高性能VPS
- 全球9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和以色列。
按照下面链接的教程在 Kamatera 创建您的 Linux VPS 服务器。
- 如何在 Kamatera 上创建 Linux VPS 服务器
一旦您拥有运行 CentOS/Alma Linux/Rocky Linux 的 VPS,请按照以下说明进行操作。
本教程假设 VPN 服务器和 VPN 客户端都在运行 CentOS/RHEL 操作系统。
第 1 步:在 CentOS/RHEL 服务器和桌面上安装 WireGuard
登录您的 CentOS/RHEL 服务器,然后运行以下命令安装 WireGuard。
CentOS 8
sudo dnf install elrepo-release epel-release -y sudo dnf install kmod-wireguard wireguard-tools -y
RHEL 8
sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install kmod-wireguard wireguard-tools -y
CentOS/RHEL 7
sudo yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm sudo yum install yum-plugin-elrepo sudo yum install kmod-wireguard wireguard-tools -y
然后使用相同的命令在本地 CentOS/RHEL 计算机(VPN 客户端)上安装 WireGuard。
第 2 步:生成公共/私人密钥对
服务器
为 WireGuard 创建一个目录。
sudo mkdir -p /etc/wireguard/
在 CentOS/RHEL 服务器上运行以下命令,创建公私钥对,保存在 /etc/wireguard/
目录。
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
客户
为 WireGuard 创建一个目录。
sudo mkdir -p /etc/wireguard/
运行以下命令在本地 CentOS/RHEL 计算机(VPN 客户端)上创建公钥/私钥对。
wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key
步骤 3:创建 WireGuard 配置文件
服务器
使用 Nano 等命令行文本编辑器在 CentOS/RHEL 服务器上创建 WireGuard 配置文件。 wg0
将是网络接口名称。
sudo dnf install nano sudo nano /etc/wireguard/wg0.conf
复制以下文本并将其粘贴到您的配置文件中。 您需要使用自己的服务器私钥和客户端公钥。
[Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc= [Peer] PublicKey = AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4= AllowedIPs = 10.10.10.2/32