[ad_1]
虚拟专用网络 (VPN) 被广泛使用。 现在有不同的解决方案可供用户访问任何类型的资源,同时保持他们的机密性和隐私。
最近,最常用的 VPN 协议之一是 WireGuard,因为它提供了简单、速度和安全性。 WireGuard 的实现始于 Linux 内核,但目前可用于其他平台,如 iOS 和 Android 等。
WireGuard 使用 UDP 作为其传输协议,并基于 Critokey Routing (CKR) 建立对等点之间的通信。 每个对等点,无论是服务器还是客户端,都有一对密钥(公钥和私钥),并且公钥和允许的 IP 之间存在链接以进行通信。 有关 WireGuard 的更多信息,请访问其 页.
本文介绍如何在两个对等方之间设置 WireGuard:PeerA 和 PeerB。 两个节点都在运行 Fedora Linux 和两者都使用 NetworkManager 进行持久配置。
WireGuard 设置和网络配置
您距离在 PeerA 和 PeerB 之间建立持久的 VPN 连接只有三步之遥:
- 安装所需的软件包。
- 生成密钥对。
- 配置 WireGuard 接口。
安装
在两个对等点(PeerA 和 PeerB)上安装 wireguard-tools 包:
$ sudo -i # dnf -y install wireguard-tools
该软件包可在 Fedora Linux 更新存储库。 它在 /etc/wireguard/ 创建一个配置目录。 您将在此处创建密钥和接口配置文件。
生成密钥对
接下来,使用 wg 实用程序在每个节点上生成公钥和私钥:
# cd /etc/wireguard # wg genkey | tee privatekey | wg pubkey > publickey
在 PeerA 上配置 WireGuard 接口
WireGuard 接口使用名称:wg0、wg1 等。 为 WireGuard 接口创建配置。 为此,您需要以下物品:
- 您要在 PeerA 节点中配置的 IP 地址和 MASK。
- 此对等方侦听的 UDP 端口。
- PeerA 的私钥。
# cat << EOF > /etc/wireguard/wg0.conf [Interface] Address = 172.16.1.254/24 SaveConfig = true ListenPort = 60001 PrivateKey = mAoO2RxlqRvCZZoHhUDiW3+zAazcZoELrYbgl+TpPEc= [Peer] PublicKey = IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw= AllowedIPs = 172.16.1.2/32 EOF
允许 UDP 流量通过此对等方将侦听的端口:
# firewall-cmd --add-port=60001/udp --permanent --zone=public # firewall-cmd --reload success
最后,将接口配置文件导入 NetworkManager。 因此,重新启动后 WireGuard 界面将继续存在。
# nmcli con import type wireguard file /etc/wireguard/wg0.conf Connection 'wg0' (21d939af-9e55-4df2-bacf-a13a4a488377) successfully added.
验证设备 wg0 的状态:
# wg interface: wg0 public key: FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8= private key: (hidden) listening port: 60001 peer: IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw= allowed ips: 172.16.1.2/32 # nmcli -p device show wg0 =============================================================================== Device details (wg0) =============================================================================== GENERAL.DEVICE: wg0 ------------------------------------------------------------------------------- GENERAL.TYPE: wireguard ------------------------------------------------------------------------------- GENERAL.HWADDR: (unknown) ------------------------------------------------------------------------------- GENERAL.MTU: 1420 ------------------------------------------------------------------------------- GENERAL.STATE: 100 (connected) ------------------------------------------------------------------------------- GENERAL.CONNECTION: wg0 ------------------------------------------------------------------------------- GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveC> ------------------------------------------------------------------------------- IP4.ADDRESS[1]: 172.16.1.254/24 IP4.GATEWAY: -- IP4.ROUTE[1]: dst = 172.16.1.0/24, nh = 0.0.0.0, mt => ------------------------------------------------------------------------------- IP6.GATEWAY: -- -------------------------------------------------------------------------------
以上输出显示接口 wg0 已连接。 它现在能够与 VPN IP 地址为 172.16.1.2 的对等方通信。
在 PeerB 中配置 WireGuard 接口
是时候为第二个对等体上的 wg0 接口创建配置文件了。 确保您具备以下条件:
- 在 PeerB 上设置的 IP 地址和 MASK。
- PeerB 的私钥。
- PeerA 的公钥。
- PeerA 的 IP 地址或主机名以及它正在侦听 WireGuard 流量的 UDP 端口。
# cat << EOF > /etc/wireguard/wg0.conf [Interface] Address = 172.16.1.2 SaveConfig = true PrivateKey = UBiF85o7937fBK84c2qLFQwEr6eDhLSJsb5SAq1lF3c= [Peer] PublicKey = FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8= AllowedIPs = 172.16.1.254/32 Endpoint = peera.example.com:60001 EOF
最后一步是将接口配置文件导入 NetworkManager。 正如我之前提到的,这允许 WireGuard 接口在重新启动后具有持久配置。
# nmcli con import type wireguard file /etc/wireguard/wg0.conf Connection 'wg0' (39bdaba7-8d91-4334-bc8f-85fa978777d8) successfully added.
验证设备 wg0 的状态:
# wg interface: wg0 public key: IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw= private key: (hidden) listening port: 47749 peer: FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8= endpoint: 192.168.124.230:60001 allowed ips: 172.16.1.254/32 # nmcli -p device show wg0 =============================================================================== Device details (wg0) =============================================================================== GENERAL.DEVICE: wg0 ------------------------------------------------------------------------------- GENERAL.TYPE: wireguard ------------------------------------------------------------------------------- GENERAL.HWADDR: (unknown) ------------------------------------------------------------------------------- GENERAL.MTU: 1420 ------------------------------------------------------------------------------- GENERAL.STATE: 100 (connected) ------------------------------------------------------------------------------- GENERAL.CONNECTION: wg0 ------------------------------------------------------------------------------- GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveC> ------------------------------------------------------------------------------- IP4.ADDRESS[1]: 172.16.1.2/32 IP4.GATEWAY: -- ------------------------------------------------------------------------------- IP6.GATEWAY: -- -------------------------------------------------------------------------------
以上输出显示接口 wg0 已连接。 它现在能够与 VPN IP 地址为 172.16.1.254 的对等方通信。
验证对等点之间的连接
执行前面描述的过程后,两个对等方可以通过 VPN 连接相互通信,如以下 ICMP 测试所示:
[[email protected] ~]# ping 172.16.1.254 -c 4 PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data. 64 bytes from 172.16.1.254: icmp_seq=1 ttl=64 time=0.566 ms 64 bytes from 172.16.1.254: icmp_seq=2 ttl=64 time=1.33 ms 64 bytes from 172.16.1.254: icmp_seq=3 ttl=64 time=1.67 ms 64 bytes from 172.16.1.254: icmp_seq=4 ttl=64 time=1.47 ms
在这种情况下,如果您在 PeerA 的端口 60001 上捕获 UDP 流量,您将看到依赖于 WireGuard 协议和加密数据的通信:
结论
虚拟专用网络 (VPN) 非常普遍。 在用于部署 VPN 的各种协议和工具中,WireGuard 是一种简单、轻量且安全的选择。 它允许基于 CryptoKey 路由的对等点之间进行安全的点对点连接,并且该过程非常简单。 此外,NetworkManager 支持 WireGuard 接口,允许在重新启动后进行持久配置。
[ad_2]