如何在Linux中加载tun模块?

如何在Linux中加载tun模块?

我无法在 ArchLinux 机器中加载tun模块。我尝试连接 OpenVPN,但日志显示:

nm-openvpn[6662]: Note: Cannot open TUN/TAP dev /dev/net/tun: No such device (errno=19)

lsmod | grep tun

不返回任何内容:

如果我运行:

sudo modprobe tun

它返回失败,但没有错误消息,并且 lsmod 仍然没有tun。该模块似乎存在,因为tun.ko.gz中有一个/lib/modules/

我真的不知道还能尝试什么。

答案1

这个答案可能有点晚了,但我自己也遇到了与描述完全一样的问题。

运行 OpenVPN 将会产生:

Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

并且运行tunctl会产生:

Failed to open '/dev/net/tun' : No such file or directory

此命令没有输出:

lsmod | grep tun

当尝试通过以下方式添加tun模块时:

modprobe tun

modprobe将以失败错误代码 (1) 退出,并且没有任何改变。

我找到了另一种激活 tun 模块的方法insmod。首先使用以下命令找到该模块:

find /lib/modules/ -iname 'tun.ko.gz'

然后使用 insmod 和返回的路径(我只得到一个匹配),例如:

insmod /lib/modules/3.6.9-1-ARCH/kernel/drivers/net/tun.ko.gz

对我来说,运行该命令有效,并且tunctl之后 OpenVPN 运行正常。

答案2

当我尝试在 OVH Cloud VPS 上运行 openvpn 时遇到了类似的问题,openvpn 抱怨找不到 TUN 接口。

modprobe 将始终返回未找到的模块:

$ sudo modprobe tun
FATAL: Module tun not found.

最后,我发现 tun 不是一个模块,而是内置于内核,所以我要解决的是创建丢失的目录并点头:

$ sudo mkdir /dev/net
$ sudo mknod /dev/net/tun c 10 200

然后openvpn就可以找到并使用tun设备了。

需要注意的是,之后modprobe仍然会返回错误,因为tun不是一个模块。

$ sudo modprobe tun
FATAL: Module tun not found.

答案3

在 Arch Linux 中安装networkmanager-vpncNetworkManager-vpnc包将解决问题

答案4

我遇到了一个问题,我的/lib/modules/.../modules.alias不包含行

alias char-major-10-200 tunode_tunnel

因此,即使您已完成mknod /dev/net/tuntun.ko在某处拥有,除非有正确的咒语,/lib/modules/...否则它不会加载。modules.alias

相关内容