linux - modprobe : ERROR: could not insert 'tun' : Unknown symbol in module, 或未知参数(参见 dmesg)

标签 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)

我需要帮助,非常感谢。

最佳答案

“没有这样的设备”消息意味着不存在具有设备节点的主要和次要编号(在您的情况下为 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驱动包。

关于linux - modprobe : ERROR: could not insert 'tun' : Unknown symbol in module, 或未知参数(参见 dmesg),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42478866/

相关文章:

linux - 如何使用 Bash 脚本计算用户 (%us) 的 CPU 使用率

javascript - 如何使用远程服务器上的浏览器进行自动化测试

mysql - MySQL CPU 使用率高但没有繁重的查询

linux - 特定进程的iotop

linux - 在 linux scheduler 中,它是否跟踪当前正在休眠的任务或已终止的任务?

c - http_proxy 是否会在 Linux 中自动为所有应用程序工作?

linux - 将带空格的文件复制到 hdfs

Linux 发送 MSG_DONTWAIT block ?

linux - 我如何在 linux 上对字符串进行 base64 编码,使其与 windows "Unicode.GetBytes.ToBase64String"匹配?

c - 返回类型为 void (*signal(int signo, void *(func)(int)))(int) 的原因