在 Rocky Linux 上安装 WireGuard VPN 服务器

脸书推特PinterestWhatsApp

    按照本教程学习如何在 Rocky Linux 上安装 WireGuard VPN 服务器。 根据wireguard.com 的说法,WireGuard® 是一种极其简单但快速且现代的 VPN,它利用了最先进的加密技术。 它旨在比 IPsec 更快、更简单、更精简、更有用,同时避免大量头痛。 它打算比 OpenVPN 性能更高。 它目前正在大力开发中,但它可能已经被认为是业内最安全、最容易使用和最简单的 VPN 解决方案。

    在 Rocky Linux 上安装 WireGuard VPN 服务器

    安装 EPEL 存储库

    WireGuard 软件包在默认的 Rocky Linux 存储库中不可用。 要安装它们,您需要 EPEL 存储库。

    dnf install epel-release -y

    安装 ELRepo RPM 存储库

    ELRepo RPM 存储库提供了一些必需的 WireGuard 模块。 您可以通过运行以下命令来安装 ELRepo rpm 存储库;

    dnf install elrepo-release -y

    在 Rocky Linux 上安装 WireGuard VPN 服务器

    要安装 WireGuard 和所需的模块,请运行以下命令;

    yum install kmod-wireguard wireguard-tools

    样本输出;

    Dependencies resolved. ============================================================================================================================================================================  Package                                   Architecture                     Version                                                  Repository                        Size ============================================================================================================================================================================ Installing:  kmod-wireguard                            x86_64                           4:1.0.20210606-1.el8_4.elrepo                            elrepo                           110 k  wireguard-tools                           x86_64                           1.0.20210424-1.el8                                       epel                             125 k  Transaction Summary ============================================================================================================================================================================ Install  2 Packages  Total download size: 235 k Installed size: 641 k Is this ok [y/N]: y 

    该命令会安装两个 WireGuard VPN 实用程序:

    • 经过: 是用于获取和设置 WireGuard 隧道接口配置的配置实用程序。
    • wg-quick:用于设置 WireGuard 接口。 参考 man wg-quick.

    在 Rocky Linux 8 上配置 WireGuard VPN 服务器

    安装完成后,您现在可以继续在 Rocky Linux 8 上配置 WireGuard VPN 服务器。

    创建 WireGuard 配置目录

    WireGuard 默认不创建任何配置文件。 所以首先,创建 WireGuard 配置目录;

    mkdir /etc/wireguard

    生成 WireGuard 私钥/公钥

    接下来,您需要生成基于 WireGuard 的 64 位编码的私钥和公钥。

    生成 WireGuard 私钥

    可以使用生成私钥 wg genkey 命令如下:

    umask 077
    wg genkey

    该命令会将私钥打印到标准输出。 要写入文件,只需运行;

    wg genkey > /etc/wireguard/wireguard.key

    生成 WireGuard 公钥

    可以使用私钥从私钥生成公钥 wg pubkey 命令。 该命令类似地将密钥打印到标准输出;

    wg pubkey < /etc/wireguard/wireguard.key

    写入文件;

    wg pubkey < /etc/wireguard/wireguard.key > /etc/wireguard/wireguard.pub.key

    同时生成私钥和公钥

    您可以运行以下命令同时生成WireGuard私钥和公钥;

    wg genkey | tee /etc/wireguard/wireguard.key | wg pubkey > /etc/wireguard/wireguard.pub.key

    以下是我的私钥和公钥的内容;

    cat /etc/wireguard/wireguard.key
    cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U=
    cat /etc/wireguard/wireguard.pub.key
    60UScq0EQ7ZHXIdHcOnjFYK6N/TLtmtPGTBqLwLd0WY=

    生成 WireGuard 服务器配置文件

    完成后,您现在可以生成 WireGuard 配置文件, /etc/wireguard/INTERFACE.conf.

    受到推崇的 界面 名称包括“wg0”或“wgvpn0”甚至“wgmgmtlan0”。 但是,末尾的数字实际上是可选的,并且实际上是任何自由格式的字符串 [a-zA-Z0-9_=+.-]{1,15} 会起作用。 因此,即使是与地理位置相对应的接口名称也足够了,例如“cincinnati”、“nyc”或“paris”,如果这在某种程度上是可取的。

    你可以简单地运行下面的命令来创建一个配置文件,命名为, /etc/wireguard/wg0.conf.

    一定要更换私钥 因此。

    cat > /etc/wireguard/wg0.conf << 'EOL' [Interface] Address = 10.8.0.1/24 SaveConfig = true ListenPort = 51820 DNS	   = 8.8.8.8,10.8.0.1 PrivateKey = cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U= PostUp = firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE PostDown = firewall-cmd --remove-port=51820/udp; firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE EOL 

    您可以从 man wg-quick.

    • 地址:要分配给接口的 IP(v4 或 v6)地址(可选择使用 CIDR 掩码)的逗号分隔列表。 可以指定多个
      次。
    • 监听端口: WireGuard 开始于 51820/UDP 默认情况下。 但是,您可以选择任何免费的更高范围的端口。
    • 域名系统 :要设置为接口的 DNS 服务器的 IP(v4 或 v6)地址的逗号分隔列表,或要设置为接口的 DNS 搜索域的非 IP 主机名。 可以多次指定。
    • 私钥:从上面创建的私钥文件中提取的密钥,/etc/wireguard/wireguard.key
    • PostUp, PostDown:将在设置/拆除界面之前/之后执行的脚本片段,最常用于配置自定义 DNS 选项或防火墙规则。
    • 保存配置: 如果设置为“true”,则在关闭时从接口的当前状态保存配置。 因此,在移除接口之前对配置文件所做的任何更改都将被覆盖。

    在 WireGuard VPN 服务器上启用 IP 转发

    要在 VPN 客户端之间路由数据包,您只需运行以下命令即可启用内核 IP 转发:

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

    重新加载 sysctl 设置

    sysctl -p

    运行 WireGuard VPN 服务器

    您可以通过使用 WireGuard VPN 服务器界面来运行 WireGuard wg-quick 命令或使用 systemd 服务。

    使用 wg-quick 命令调出界面。

    wg-quick up wg0

    示例命令输出;

    [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.8.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE success success success success 

    检查 wg0 接口详细信息:

    ip add show wg0
    5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000     link/none      inet 10.8.0.1/24 scope global wg0        valid_lft forever preferred_lft forever

    在活动接口上列出防火墙规则;

    firewall-cmd --list-all
    public   target: default   icmp-block-inversion: no   interfaces:    sources:    services: dhcpv6-client ssh   ports: 51820/udp   protocols:    masquerade: yes   forward-ports:    source-ports:    icmp-blocks:    rich rules:  

    要使用 systemd 服务管理 WireGuard,只需运行以下命令即可启动它。

    systemctl start [email protected]

    检查状态;

    systemctl status [email protected]
    ● [email protected] - WireGuard via wg-quick(8) for wg0    Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)    Active: active (exited) since Sat 2021-07-03 21:24:49 EAT; 1h 5min ago      Docs: man:wg-quick(8)            man:wg(8)            https://www.wireguard.com/            https://www.wireguard.com/quickstart/            https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8            https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8   Process: 5304 ExecStop=/usr/bin/wg-quick down wg0 (code=exited, status=0/SUCCESS)   Process: 5337 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)  Main PID: 5337 (code=exited, status=0/SUCCESS)  Jul 03 21:24:47 elk.kifarunix-demo.com systemd[1]: Starting WireGuard via wg-quick(8) for wg0... Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip link add wg0 type wireguard Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] wg setconf wg0 /dev/fd/63 Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip -4 address add 10.8.0.1/24 dev wg0 Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip link set mtu 1420 up dev wg0 Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] firewall-cmd --zone=public --add-port 51820/udp --permanent;firewall-cmd --zone=public --add-masquerade --perman> Jul 03 21:24:48 elk.kifarunix-demo.com wg-quick[5337]: success Jul 03 21:24:48 elk.kifarunix-demo.com wg-quick[5337]: success Jul 03 21:24:49 elk.kifarunix-demo.com wg-quick[5337]: success Jul 03 21:24:49 elk.kifarunix-demo.com systemd[1]: Started WireGuard via wg-quick(8) for wg0. 

    使其能够在启动时运行;

    systemctl enable [email protected]

    要停止 WireGuard VPN,请运行;

    wg-quick down wg0

    或者

    systemctl stop [email protected]

    配置 WireGuard VPN 客户端

    设置服务器后,您现在可以继续配置 WireGuard VPN 客户端。

    生成 WireGuard VPN 客户端私钥/公钥

    首先,您需要生成客户端密钥。 您可以在为服务器生成密钥时使用与上面相同的命令。

    下面的命令为我们的三个测试服务器生成密钥。

    for i in ubuntu debian rocky8; do wg genkey | tee /etc/wireguard/$i.key | wg pubkey > /etc/wireguard/$i.pub.key
    ls -1 /etc/wireguard
    debian.key debian.pub.key rocky8.key rocky8.pub.key ubuntu.key ubuntu.pub.key wg0.conf wireguard.key wireguard.pub.key 

    检查每个键的内容;

    cat /etc/wireguard/debian.key /etc/wireguard/debian.pub.key
    UMXEH1lTn7OF+fgBswsdDJU6NAu7N5or43FPWP1EyWY= YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw=
    cat /etc/wireguard/ubuntu.key /etc/wireguard/ubuntu.pub.key
    qJ2Sczxh8QWO5ZHlN+zZ4IaaMzmnMtgITLfQ0cam82M= CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4=
    cat /etc/wireguard/rocky8.key /etc/wireguard/rocky8.pub.key
    kIn6rA7W9MbGdZxRtziFN1DCJsqCi/hAdwhyH76cyU4= 0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs=

    接下来,您需要在 WireGuard VPN Server 配置文件中添加客户端对等设置,如下所示。 请务必相应地替换相应客户端的公钥。

    cat >> /etc/wireguard/wg0.conf << 'EOL'  [Peer] PublicKey = CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4= AllowedIPs = 10.8.0.10  [Peer] PublicKey = YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw= AllowedIPs = 10.8.0.20  [Peer] PublicKey = 0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs= AllowedIPs = 10.8.0.30 EOL 

    我们的 WireGuard VPN 服务器配置文件现在看起来像;

    cat /etc/wireguard/wg0.conf
    [Interface] Address = 10.8.0.1/24 SaveConfig = true PostUp = firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE PostDown = firewall-cmd --remove-port=51820/udp; firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE ListenPort = 51820 PrivateKey = cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U=  [Peer] PublicKey = CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4= AllowedIPs = 10.8.0.10  [Peer] PublicKey = YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw= AllowedIPs = 10.8.0.20  [Peer] PublicKey = 0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs= AllowedIPs = 10.8.0.30 

    重新加载 WireGuard;

    wg syncconf wg0 <(wg-quick strip wg0)

    在 Rocky Linux 8/Ubuntu/Debian 上安装和设置 WireGuard VPN 客户端

    按照下面的链接了解如何安装和设置 WireGuard VPN 客户端。

    在 Rocky Linux/Ubuntu/Debian 上安装 WireGuard VPN 客户端

    关于如何在 Rocky Linux 上安装 WireGuard VPN Server 的指南到此结束

    在 WireGuard 页面上阅读更多信息。

    在 Rocky Linux 8 上设置 OpenVPN 服务器

    在 Rocky Linux 8 上安装和配置 OpenVPN 客户端

    使用 Prometheus 和 Grafana 监控 OpenVPN 连接