wireguard配置用 NetworkManager 配置 WireGuard 虚拟私有网络




wireguard配置用 NetworkManager 配置 WireGuard 虚拟私有网络

2022-07-20 21:16:43 网络知识 官方管理员

虚拟私有网络VirtualPrivateNetworks应用广泛。如今有各种方案可供使用,用户可通过这些方案访问任意类型的资源,同时保持其机密性与隐私性。

最近,WireGuard因为其简单性、速度与安全性成为最广泛使用的虚拟私有网络协议之一。WireGuard最早应用于Linux内核,但目前可以用在其他平台,例如iOS、Android等。

WireGuard使用UDP作为其传输协议,并在CritokeyRouting(CKR)的基础上建立对等节点之间的通信。每个对等节点(无论是服务器或客户端)都有一对密钥key(公钥与私钥),公钥与许可IP间建立通信连接。有关WireGuard更多信息请访问其主页。

本文描述了如何在两个对等节点(PeerA与PeerB)间设置WireGuard。两个节点均运行FedoraLinux系统,使用NetworkManager进行持久性配置。

WireGuard设置与网络配置

在PeerA与PeerB之间建立持久性虚拟私有网络连接只需三步:

  1. 安装所需软件包。
  2. 生成密钥对keypair。
  3. 配置WireGuard接口

安装

在两个对等节点(PeerA与PeerB)上安装wireguard-tools软件包:

$sudo-i#dnf-yinstallwireguard-tools

这个包可以从FedoraLinux更新库中找到。它在/etc/wireguard/中创建一个配置目录。在这里你将创建密钥和接口配置文件。

生成密钥对

现在,使用wg工具在每个节点上生成公钥与私钥:

#cd/etc/wireguard#wggenkey|teeprivatekey|wgpubkey>publickey

在PeerA上配置WireGuard接口

WireGuard接口命名规则为wg0、wg1等等。完成下述步骤为WireGuard接口创建配置:

  • PeerA节点上配置想要的IP地址与掩码。
  • 该节点监听的UDP端口。
  • PeerA的私钥。
#cat/etc/wireguard/wg0.conf[Interface]Address=172.16.1.254/24SaveConfig=trueListenPort=60001PrivateKey=mAoO2RxlqRvCZZoHhUDiW3+zAazcZoELrYbgl+TpPEc=[Peer]PublicKey=IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=AllowedIPs=172.16.1.2/32EOF

允许UDP流量通过节点监听的端口:

#firewall-cmd--add-port=60001/udp--permanent--zone=public#firewall-cmd--reloadsuccess

最后,将接口配置文件导入NetworkManager。这样,WireGuard接口在重启后将持续存在。

#nmcliconimporttypewireguardfile/etc/wireguard/wg0.confConnection'wg0'(21d939af-9e55-4df2-bacf-a13a4a488377)successfullyadded.

验证wg0的状态:

#wginterface:wg0publickey:FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=privatekey:(hidden)listeningport:60001peer:IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=allowedips:172.16.1.2/32#nmcli-pdeviceshowwg0===============================================================================Devicedetails(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/24IP4.GATEWAY:--IP4.ROUTE[1]:dst=172.16.1.0/24,nh=0.0.0.0,mt=>-------------------------------------------------------------------------------IP6.GATEWAY:---------------------------------------------------------------------------------

上述输出显示接口wg0已连接。现在,它可以和虚拟私有网络IP地址为172.16.1.2的对等节点通信。

在PeerB上配置WireGuard接口

现在可以在第二个对等节点上创建wg0接口的配置文件了。确保你已经完成以下步骤:

  • PeerB节点上设置IP地址与掩码。
  • PeerB的私钥。
  • PeerA的公钥。
  • PeerA的IP地址或主机名、监听WireGuard流量的UDP端口。
#cat/etc/wireguard/wg0.conf[Interface]Address=172.16.1.2SaveConfig=truePrivateKey=UBiF85o7937fBK84c2qLFQwEr6eDhLSJsb5SAq1lF3c=[Peer]PublicKey=FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=AllowedIPs=172.16.1.254/32Endpoint=peera.example.com:60001EOF

最后一步是将接口配置文件导入NetworkManager。如上所述,这一步是重启后保持WireGuard接口持续存在的关键。

#nmcliconimporttypewireguardfile/etc/wireguard/wg0.confConnection'wg0'(39bdaba7-8d91-4334-bc8f-85fa978777d8)successfullyadded.

验证wg0的状态:

#wginterface:wg0publickey:IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=privatekey:(hidden)listeningport:47749peer:FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=endpoint:192.168.124.230:60001allowedips:172.16.1.254/32#nmcli-pdeviceshowwg0===============================================================================Devicedetails(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/32IP4.GATEWAY:---------------------------------------------------------------------------------IP6.GATEWAY:---------------------------------------------------------------------------------

上述输出显示接口wg0已连接。现在,它可以和虚拟私有网络IP地址为172.16.1.254的对等节点通信。

验证节点间通信

完成上述步骤后,两个对等节点可以通过虚拟私有网络连接相互通信,以下是ICMP测试结果:

[root@peerb~]#ping172.16.1.254-c4PING172.16.1.254(172.16.1.254)56(84)bytesofdata.64bytesfrom172.16.1.254:icmp_seq=1ttl=64time=0.566ms64bytesfrom172.16.1.254:icmp_seq=2ttl=64time=1.33ms64bytesfrom172.16.1.254:icmp_seq=3ttl=64time=1.67ms64bytesfrom172.16.1.254:icmp_seq=4ttl=64time=1.47ms

在这种情况下,如果你在PeerA端口60001上捕获UDP通信,则将看到依赖WireGuard协议的通信过程和加密的数据:

wireguard配置(用NetworkManager配置WireGuard虚拟私有网络)(1)

总结

虚拟私有网络很常见。在用于部署虚拟私有网络的各种协议和工具中,WireGuard是一种简单、轻巧和安全的选择。它可以在对等节点之间基于CryptoKey路由建立安全的点对点连接,过程非常简单。此外,NetworkManager支持WireGuard接口,允许重启后进行持久配置。


发表评论:

最近发表
网站分类
标签列表