31

I cannot manage to load the tun module in my ArchLinux box. I’m trying to connect with OpenVPN, but the log says:

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

lsmod | grep tun

Returns nothing:

If I run:

sudo modprobe tun

It returns failure, but no error message, and lsmod still has no tun. The module seems to exist, as there is a tun.ko.gz in /lib/modules/.

I really dont know what else to try.

Giacomo1968
  • 58,727

6 Answers6

33

This answer is probably a bit late, but I ran into the problem, exactly as described, myself.

Running OpenVPN would produce:

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

And running tunctl would produce:

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

And this command had no output:

lsmod | grep tun

When attempting to add the tun module via:

modprobe tun

modprobe would exit with a failure error code (1), and nothing changed.

I found an alternate way of activating the tun module via insmod. First locate the module with this command:

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

Then use insmod with the returned path (I only got one match), for example:

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

For me, running that command worked, and tunctl and OpenVPN worked okay afterwards.

Giacomo1968
  • 58,727
29

I ran into a similar problem when trying to run openvpn on OVH Cloud VPS, openvpn complains that cannot find TUN interface.

modprobe will always return module not found :

$ sudo modprobe tun
FATAL: Module tun not found.

Finally, I found that tun is not a module but built in kernel, so what I do to solve was created the missing dir and nod:

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

And then openvpn can find and use the tun device.

To be noted that afterward, modprobe will still return an error, because tun is not a module.

$ sudo modprobe tun
FATAL: Module tun not found.
Cyril
  • 390
4

In Arch linux installing the networkmanager-vpnc or NetworkManager-vpnc package will solve the problem

MrRolling
  • 149
4

Make sure you do a kernelcheck before running modprobe. See note from Arch Wiki:

Note: If you have upgraded your kernel but have not yet rebooted, modprobe will fail with no error message and exit with code 1, because the path /usr/lib/modules/kernel_release/ no longer exists. Check manually if this path exists when modprobe failed to determine if this is the case.

An easy way is to compare the output of

uname -r

and

pacman -Q linux

If they're different, reboot. That should fix the modprobe failure.

Sponge5
  • 41
  • 2
0

I had a problem where my /lib/modules/.../modules.alias did not contain the line

alias char-major-10-200 tunode_tunnel

So even if you've done mknod /dev/net/tun and have tun.ko somewhere in /lib/modules/..., it won't load unless modules.alias has the right incantation.

0

The simplest solution would be rebooting you system and then doing modprobe tun as root, because the most likely cause of the failed modprobe call is a kernel version mismatch with a module version (for me that was the case).

You see, after updating the system (assuming the kernel is also updated), you continue to use the old kernel, but the modules are installed from a new kernel version. That's why you can't do modprobe right after the upgrade.

fogjet
  • 1