我使用 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 连接。
这意味着一件事:初始(开机后或 post-apt-which-changed-kernel)启动wireguard
必须使用另一个配置文件。这是可以想象的——客户端 A 是很久以前设置的,客户端 B 是最近才添加的(到/etc/wireguard/wg0
),所以可能是我忘记了我在哪里设置的。
我过去曾经遇到过上述问题,现在我记得了,并用两个wg-quick
命令修复了它,但没有时间进一步辩论(这将解释客户端 B 是如何设法连接的)
我的问题:在 Ubuntu 18.04 中,实际启动的服务是什么wireguard
(从wireguard
PPA 安装),该服务使用的配置文件在哪里?
Wireguard 通过 启动
systemd-networkd
。安装还会创建一个新界面wg0
。配置是通过两个文件完成的(
somename
可以是任何东西,例如wg0
或wireguard
)(1)/etc/systemd/network/somename.netdev
该文件将保存interface和peers的配置。它使用
[WireGuard]
and[WireGuardPeer]
而不是通常的[Interface]
and[Peer]
(参见(1))/etc/systemd/network/somename.network
该文件将保存接口的 IP 相关配置(这里没有专门与wireguard相关的)
这些配置文件是在
systemctl [re]start systemd-networkd
.(1)请注意,各种文档 ( ) 中提到的配置文件
/etc/wireguard/wg0
不与systemd-networkd
.wg-quick
如果您运行命令,它将被使用。这个答案在这里感谢@Rinzwind和他指向
systemd-networkd
及其配置文件我正在添加另一个答案,因为我最终使用了另一种方法。那个是基于
[email protected]
模板的。我通过启用(并启动、停止等)它,
systemctl enable [email protected]
并且配置位于/etc/wireguard
. 它具有 Wireguard 的经典格式。为了管理配置,我使用了出色的Wg Gen Web界面。