本文介绍在Fedora Linux系统中使用NetworkManager配置WireGuard VPN的方法。本文介绍如何在两个对等点:PeerA和PeerB之间设置WireGuard,两个节点都运行Fedora Linux,并且都使用NetworkManager进行持久配置。
前言 虚拟专用网(VPN)广泛使用。如今,有各种不同的解决方案可供使用,这些解决方案使用户可以访问任何类型的资源,同时保持其机密性和隐私性。 最近,由于其简单性、速度和安全性,WireGuard是最常用的VPN协议之一。WireGuard的实现始于Linux内核,但目前可用于其他平台,如iOS和Android等。 WireGuard使用UDP作为传输协议,并基于Critokey路由(CKR)建立对等方之间的通信。服务器或客户端的每个对等方都有一对密钥(公用密钥和专用密钥),并且公用密钥和允许与之通信的IP之间存在链接。 参考:在Linux系统中安装及使用Wireguard建立虚拟专用网络。
WireGuard设置和网络配置 与PeerA和PeerB之间建立持久的VPN连接仅三步:安装所需的软件包、生成密钥对、配置WireGuard接口。 1、安装 在两个对等方(PeerA和PeerB)上安装wireguard-tools软件包: $ sudo -i # dnf -y install wireguard-tools 该软件包可在Fedora Linux更新存储库中找到。它在/etc/wireguard/中创建一个配置目录。在这里您将创建密钥和接口配置文件。 2、生成密钥对 接下来,使用wg实用程序在每个节点上生成公钥和私钥: # cd /etc/wireguard # wg genkey | tee privatekey | wg pubkey > publickey 3、在PeerA上配置WireGuard接口 WireGuard接口使用名称:wg0、wg1等。创建WireGuard接口的配置。为此,您需要以下各项: 1]、您要在PeerA节点中配置的IP地址和MASK。 2]、此对等方侦听的UDP端口。 3]、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
上面的输出显示接口wg0已连接。现在,它可以与一个VPN IP地址为172.16.1.2的对等方进行通信。 4、在PeerB中配置WireGuard接口 现在该为第二个对等方上的wg0接口创建配置文件了。确保您具有以下条件: 1]、在PeerB上设置的IP地址和掩码。 2]、PeerB的私钥。 3]、PeerA的公钥。 4]、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
上面的输出显示接口wg0已连接。现在,它可以与一个VPN IP地址为172.16.1.254的对等方进行通信。
验证对等方之间的连接 在执行了前面描述的过程之后,两个对等方都可以通过VPN连接相互通信,如以下ICMP测试所示: [root@peerb ~]# 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接口,允许重新启动后进行持久配置。
相关主题 |