如何在linux中加载tun模块?

rab*_*ais 27 vpn kernel-module

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

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

lsmod | grep tun
Run Code Online (Sandbox Code Playgroud)

不返回任何内容:

如果我运行:

sudo modprobe tun
Run Code Online (Sandbox Code Playgroud)

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

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

小智 29

这个答案可能有点晚了,但我自己遇到了这个问题,正如所描述的那样。

运行 OpenVPN 会产生:

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

运行tunctl会产生:

Failed to open '/dev/net/tun' : No such file or directory
Run Code Online (Sandbox Code Playgroud)

这个命令没有输出:

lsmod | grep tun
Run Code Online (Sandbox Code Playgroud)

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

modprobe tun
Run Code Online (Sandbox Code Playgroud)

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

我找到了一种通过insmod. 首先使用以下命令定位模块:

find /lib/modules/ -iname 'tun.ko.gz'
Run Code Online (Sandbox Code Playgroud)

然后将 insmod 与返回的路径一起使用(我只有一个匹配项),例如:

insmod /lib/modules/3.6.9-1-ARCH/kernel/drivers/net/tun.ko.gz
Run Code Online (Sandbox Code Playgroud)

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

  • 在我的 Ubuntu 14.04 vps 上找不到 /lib/modules/ -iname 'tun.ko.gz'( (3认同)
  • 在 CentOS 7 上也找不到它。 (2认同)

小智 24

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

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

$ sudo modprobe tun
FATAL: Module tun not found.
Run Code Online (Sandbox Code Playgroud)

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

$ sudo mkdir /dev/net
$ sudo mknod /dev/net/tun c 10 200
Run Code Online (Sandbox Code Playgroud)

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

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

$ sudo modprobe tun
FATAL: Module tun not found.
Run Code Online (Sandbox Code Playgroud)