我使用 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
可以是任何文件,例如wg0
或wireguard
)(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
/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 网络界面。