将我的 kubuntu(之后我重新启动了设备)从 22.04 更新到 22.10 后,我无法运行 wire guard:
sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.77.28.148 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
Failed to resolve interface "tun": No such device
[#] ip link delete dev wg0
我假设由于 WireGuard 与操作系统的先前版本兼容,因此其配置是正确的(但也许这是一个错误的假设……),所以我猜 tun 模块存在问题。当我尝试使用 检查此模块时,我没有看到lsmod | grep 'tun'
它的输出。sudo modprobe tun
没有任何变化。我也找不到目录tun.ko.gz
中的/lib/modules/
,我只看到qrtr-tun.ko
。
modinfo tun
返回:
name: tun
filename: (builtin)
alias: devname:net/tun
alias: char-major-10-200
license: GPL
file: drivers/net/tun
author: (C) 1999-2004 Max Krasnyansky <[email protected]>
description: Universal TUN/TAP device driver
grep "CONFIG_TUN" -r /usr/src
返回:
/usr/src/linux-headers-5.19.0-23-generic/.config:CONFIG_TUN=y
如果您需要更多信息,请告诉我。另外,如果我上面提供的任何内容不相关,请原谅,这个主题对我来说很新。
答案1
我也遇到过同样的问题。这似乎是 Ubuntu 22.10 更新的问题(我的系统是 22.04)。
我可以通过执行修复它sudo apt purge resolvconf
请注意,我不知道这是否会导致其他问题,但它可以让 wireguard 再次运行。Ubuntu 使用的是 systemd-resolved,通常 resolvconf 应该只是 systemd-resolved 的“链接”。
更多信息这里。
删除 .conf 文件中的 DNS 声明也可以,但如果您想通过 wireguard 使用自定义 DNS 服务器,这不是一个可接受的解决方案。
答案2
在我的 wg0.conf 文件中,我注释掉了 DNS 行(因为如果可以的话我不愿意删除任何东西),然后添加了
PostUp = resolvectl dns %i *DNS IP ADDRESS*
到我的接口块的末尾
答案3
在 wireguard 客户端配置文件中注释或删除你的 DNS 密钥