modprobe:错误:无法插入' tun':模块中的未知符号或未知参数(请参阅dmesg)

时间:2017-02-27 06:06:42

标签: linux

我的服务器运行openvpn客户端,它工作正常。 但是在服务器重启后,我无法启动openvpn客户端。

openvpn日志说:

ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)

lyq@server:~$ ls /dev/net/tun -l
crw-rw-rw- 1 root root 10, 200 Feb 27 13:44 /dev/net/tun

经过一番搜索,我找到了这个命令:

lyq@server:~$ sudo modprobe tun
modprobe: ERROR: could not insert 'tun': Unknown symbol in module, or unknown parameter (see dmesg)

和' dmesg'表示:

[  991.073261] tun: Unknown symbol __sk_attach_filter (err 0)
[  991.073347] tun: Unknown symbol __sk_detach_filter (err 0)

我需要帮助,非常感谢你。

3 个答案:

答案 0 :(得分:4)

“无此类设备”消息表示没有设备驱动程序包含设备节点的主要编号和次编号(在您的情况下为10和100)。原因很可能是“tun”驱动程序无法加载,原因似乎是你正在运行的内核中不存在__sk_attach_filter和__sk_detach_filter符号。

由于您说这是在重新启动后发生的,因此很可能在重新启动之前的某个时间内升级了内核映像,这是系统第一次使用新内核启动。缺少符号错误往往是由于模块版本与内核版本不匹配。

您是自己构建内核还是从som软件包管理器安装内核?如果您自己安装它,请再次尝试并确保运行“make modules_install”(有关内核构建目标的信息,请参阅例如https://unix.stackexchange.com/questions/20864/what-happens-in-each-step-of-the-linux-kernel-building-process)。如果您是通过软件包管理器安装的,请检查是否有某些内核模块软件包或者需要升级的tun驱动程序包。

答案 1 :(得分:1)

更新系统后我遇到了同样的问题。重新启动修复它,因此其中一个更新必须是内核更新。

确保您的模块和内核匹配。

答案 2 :(得分:0)

确保您的引导加载程序正在加载您认为正在加载的内核。

在我的情况下,系统中有一个被淘汰的RAID1成员(sdb1),并且引导加载程序正在从该错误的sdb1加载(错误的,旧的?)内核,而不是来自健康的RAID1成员sda1或sdc1。 / p>