- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章用 NetworkManager 配置 wireguard 虚拟私有网络由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
虚拟私有网络Virtual Private Networks应用广泛。如今有各种方案可供使用,用户可通过这些方案访问任意类型的资源,同时保持其机密性与隐私性.
最近,wireguard 因为其简单性、速度与安全性成为最广泛使用的虚拟私有网络协议之一。wireguard 最早应用于 Linux 内核,但目前可以用在其他平台,例如 iOS、Android 等.
wireguard 使用 UDP 作为其传输协议,并在 Critokey Routing(CKR)的基础上建立对等节点之间的通信。每个对等节点(无论是服务器或客户端)都有一对密钥key(公钥与私钥),公钥与许可 IP 间建立通信连接。有关 wireguard 更多信息请访问其 wireguard.com主页.
本文描述了如何在两个对等节点(PeerA 与 PeerB)间设置 wireguard。两个节点均运行 Fedora Linux 系统,使用 NetworkManager 进行持久性配置.
。
在 PeerA 与 PeerB 之间建立持久性虚拟私有网络连接只需三步:
。
在两个对等节点(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
。
wireguard 接口命名规则为 wg0、wg1 等等。完成下述步骤为 wireguard 接口创建配置:
# 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 已连接。现在,它可以和虚拟私有网络 IP 地址为 172.16.1.2 的对等节点通信.
。
现在可以在第二个对等节点上创建 wg0 接口的配置文件了。确保你已经完成以下步骤:
# 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 已连接。现在,它可以和虚拟私有网络 IP 地址为 172.16.1.254 的对等节点通信.
。
完成上述步骤后,两个对等节点可以通过虚拟私有网络连接相互通信,以下是 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 协议的通信过程和加密的数据:
捕获依赖 wireguard 协议的节点间 UDP 流量 。
总结 。
虚拟私有网络很常见。在用于部署虚拟私有网络的各种协议和工具中,wireguard 是一种简单、轻巧和安全的选择。它可以在对等节点之间基于 CryptoKey 路由建立安全的点对点连接,过程非常简单。此外,NetworkManager 支持 wireguard 接口,允许重启后进行持久配置.
原文链接:https://linux.cn/article-13379-1.html 。
最后此篇关于用 NetworkManager 配置 wireguard 虚拟私有网络的文章就讲到这里了,如果你想了解更多关于用 NetworkManager 配置 wireguard 虚拟私有网络的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我正在尝试从多线程程序中使用 NetworkManager 的 libnm 绑定(bind)。 libnm 线程安全吗?我找不到有关它的任何信息。 最佳答案 libnm使用 glib 编写和 gobj
我正在为 iOS 创建一个 2D 游戏。我的游戏使用主机和客户端方法在 LAN 中进行两人对战游戏。主机在加载下一个场景后等待客户端。问题是两个玩家的场景加载不同步。场景比另一个场景开始得早。我想在任
如何检测当前连接是否在具有 NetworkManager 的系统上标记为按流量计费? 这是来自 shell 脚本,但我可以通过 Python 轻松调用任何 C 函数。 最佳答案 使用 nmcli 实用
来自不同线程(Timer-1 和 EDT)的 jsonRequest() 方法的多次调用确实会相互干扰,甚至一次调用也会返回前一次调用的结果 我的 CodeNameOne 应用程序使用后台线程 (Ti
我想使用一项服务。我 100% 确信该服务可以正常工作。 服务电话 public void add(User user) { ConnectionRequest con = new Connectio
这个问题是关于新的 Unity UNet 网络解决方案。 我想创建从一台服务器到另一台服务器的平滑过渡,但看起来我无法同时使用多个 NetworkManager 实例。但为什么?使用多个服务器连接有什
我正在尝试编译一个简单的 Qt5.2 程序,它使用 libnm-qt5 和 libmm-qt5 来管理连接,但是当我试图用这段代码列出它们时: #include #include #include
我对使用 Qt4/Dbus 还是很陌生,我正在尝试使用 Qt API 获取访问点列表以发送/接收 Dbus 消息。我收到以下错误: org.freedesktop.DBus.Error.Unknown
虚拟私有网络Virtual Private Networks应用广泛。如今有各种方案可供使用,用户可通过这些方案访问任意类型的资源,同时保持其机密性与隐私性。 最近,wireguard 因为其
是否有已发布的可靠方法将 org.freedesktop.NetworkManager 包拉入 Maven 构建?搜索https://mvnrepository.com我找到this但我认为它不是 o
根据我之前的 SO 问题,我仍在致力于通过 dbus 从 Java 应用程序控制 NetworkManager。我想激活现有的无线连接,所以这是我的代码,尽可能去除不相关的内容: DBusInterf
谁能解释一下 RHEL 6 中 NetworkManager 服务的确切用途?还请解释如果服务停止或启动会发生什么情况。 最佳答案 NetworkManager 服务是网络服务的替代品。它提供了一些比
一段时间以来,我一直在直接使用 wpa_supplicant 配置,但现在想切换到 NetworkManager。如何让 NetworkManager 使用现有的 wpa_supplicant.con
我在 Virtual Box 上安装了 archlinux,我使用 NetworkManager 来处理我的连接。在我尝试从使用 NetworkManager for dns 切换为“未绑定(bind
是否可以在封闭许可代码中使用 NetworkManager dbus API。我正在开发一个专有软件,它需要像完整的网络管理器一样配置网络。所以我正在考虑使用网络管理器的 dbus API,但我面临的
我正在使用 UNet 和 NetworkManager 组件。我正在尝试当播放器连接到服务器时对我说“我已连接”。我必须序列化它。我正在使用 NetworkBehaviour,我认为这可能会导致失败。
我正在使用一台旧笔记本电脑作为无线网桥将三个工作站连接到 Internet。我在笔记本电脑上安装了 Scientific Linux 6.6,并使用 NetworkManager 将它的 eth0 设
我需要观察网络变化并在网络状态发生变化时设置一些路由规则(例如,如果接口(interface)重新启动我需要再次设置 ip 路由表 b/c src 是动态的所以我不能硬编码它) . 为此,我尝试使用
我尝试在 Unity3D 中的 NetworkManager (HLAPI) 和 Socket 服务器之间建立连接。 我已经尝试使用 HLAPI 或 LLAPI 连接两个 Unity 应用程序。它运作
我是一名优秀的程序员,十分优秀!