Wireguard 如何管理?

Wireguard 如何管理?

我使用 Wireguard 作为我的主要 VPN(运行服务器并有多个客户端连接到它)——它运行良好,但我今天意识到我不明白它实际上是如何管理的。正是以下一系列事件让我意识到了这一点:

  • 客户端 A 和客户端 B 在 中定义/etc/wireguard/wg0.conf。它们都可以正确连接。
  • 我添加了一些修改内核的软件包。这触发了有关modprobe等的常见消息。我从未真正注意过这些消息,因为它们表示一切正常。
  • 完成上述步骤后,客户端 A 仍处于连接状态,客户端 B 不再连接。我正在尝试使用客户端 C,它已连接。

然后我看了wg show一下,不是显示对等点 B。由于对等点 B(=客户端 B)已加入/etc/wireguard/wg0.conf,因此一定出了问题。解决方案:重新启动。

重启后客户端 A 自动重新连接,客户端 B 仍然无法连接(并且在 中仍然不可见wg show,即使处于断开连接状态)。

这两者怎么会联系起来呢?(我问自己)。

最后的想法:

wg-quick down wg0
wg-quick up wg0

一切恢复正常,客户端 A 和客户端 B 连接。

这意味着一件事:的初始(启动后或 apt 更改内核后)启动wireguard必须使用另一个配置文件。这是可以想象的 - 客户端 A 是很久以前设置的,而客户端 B 只是最近才添加到(到/etc/wireguard/wg0),所以我可能忘记在哪里设置了它。

我以前遇到过上述问题,现在我记起来了,并用这两个wg-quick命令修复了它,但没有时间进一步讨论(这可以解释客户端 B 是如何成功连接的)

我的问题是:在 Ubuntu 18.04 中,实际启动的服务是什么wireguard(从 PPA 安装wireguard)以及该服务使用的配置文件在哪里?

答案1

Wireguard 通过 启动systemd-networkd。安装还会创建一个新的界面wg0

配置通过两个文件完成(somename可以是任何文件,例如wg0wireguard(1)

  1. /etc/systemd/network/somename.netdev

此文件将保存界面同侪. 它使用[WireGuard]and[WireGuardPeer]代替通常的[Interface]and [Peer](参见(1)

[NetDev]
Name = wg0
Kind = wireguard
Description = Wireguard

[WireGuard]
ListenPort = 51820
PrivateKey = <your private key>

# laptop
[WireGuardPeer]
PublicKey = h/trC+5Z8qbGBJtroYITQGMNUn5XQZ/JRqVR3iIH5Ro=
AllowedIPs = 192.168.20.2/32
  1. /etc/systemd/network/somename.network

该文件将保存接口的 IP 相关配置(这里没有特别与 wireguard 相关的内容)

[Match]
Name = wg0

[Network]
Address = 192.168.20.1/32

[Route]
Gateway = 192.168.20.1
Destination = 192.168.20.0/24

这些配置文件是在 时读取的systemctl [re]start systemd-networkd


(1)请注意,各种文档()中引用的配置文件/etc/wireguard/wg0不与一起使用。如果您运行命令,systemd-networkd它将被使用。wg-quick

此答案来源于@Rinzwind他指向systemd-networkd及其配置文件

答案2

我添加了另一个答案,因为我最终使用了另一种方法。该方法基于模板[email protected]

我通过 启用(以及启动、停止等)它,配置位于 中。它具有 Wireguard 的经典格式。systemctl enable [email protected]/etc/wireguard

为了管理配置,我使用了优秀的Wg Gen 网络界面。

相关内容