温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用NetworkManager配置wireguard虚拟私有网络

发布时间:2021-10-09 14:43:17 来源:亿速云 阅读:111 作者:柒染 栏目:系统运维

这期内容当中小编将会给大家带来有关如何用NetworkManager配置wireguard虚拟私有网络,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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

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

wireguard 使用 UDP 作为其传输协议,并在 Critokey Routing(CKR)的基础上建立对等节点之间的通信。每个对等节点(无论是服务器或客户端)都有一对密钥key(公钥与私钥),公钥与许可 IP 间建立通信连接。有关 wireguard 更多信息请访问其 wireguard.com/" _fcksavedurl="https://www.wireguard.com/" class="ext" rel="external nofollow" target="_blank">主页。

这里主要描述了如何在两个对等节点(PeerA 与 PeerB)间设置 wireguard。两个节点均运行 Fedora Linux 系统,使用 NetworkManager 进行持久性配置。

  • 安装所需软件包。

  • 生成

    密钥对key pair

  • 配置 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 节点上配置想要的 IP 地址与掩码。

  • 该节点监听的 UDP 端口。

  • PeerA 的私钥。

  • # cat << EOF > /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 接口在重启后将持续存在。

    # nmcli con import type wireguard file /etc/wireguard/wg0.confConnection 'wg0' (21d939af-9e55-4df2-bacf-a13a4a488377) successfully added.

    验证 wg0的状态:

    # wginterface: 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/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 节点上设置 IP 地址与掩码。

  • PeerB 的私钥。

  • PeerA 的公钥。

  • PeerA 的 IP 地址或主机名、监听 wireguard 流量的 UDP 端口。

  • # cat << EOF > /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 接口持续存在的关键。

    # nmcli con import type wireguard file /etc/wireguard/wg0.confConnection 'wg0' (39bdaba7-8d91-4334-bc8f-85fa978777d8) successfully added.

    验证 wg0 的状态:

    # wginterface: 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/32IP4.GATEWAY:                            ---------------------------------------------------------------------------------IP6.GATEWAY:                            ---------------------------------------------------------------------------------

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

    验证节点间通信

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

    [root@peerb ~]# ping 172.16.1.254 -c 4PING 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 ms64 bytes from 172.16.1.254: icmp_seq=2 ttl=64 time=1.33 ms64 bytes from 172.16.1.254: icmp_seq=3 ttl=64 time=1.67 ms64 bytes from 172.16.1.254: icmp_seq=4 ttl=64 time=1.47 ms

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

    如何用NetworkManager配置wireguard虚拟私有网络

    捕获依赖 wireguard 协议的节点间 UDP 流量

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

    上述就是小编为大家分享的如何用NetworkManager配置wireguard虚拟私有网络了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI