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.

2
  • 2
    Very often this problem is caused by upgrading a kernel version without rebooting the machine. Just reboot and modprobe tun should work. See @Sponge5 answer for details
    – John Smith
    Commented Dec 19, 2022 at 10:55
  • I got the same error message when trying to run podman containers while my Debian 12 system was running with a self-compiled Linux kernel 6.8.9; lsmod | grep tun would then also not list tun. Booting into a Debian distribution-provided kernel (6.7.12+bpo-rt-amd64) fixed all issues, and lsmod | grep tun showed tun, meaning the tun kernel module was loaded.
    – Abdull
    Commented May 28 at 11:18

6 Answers 6

32

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.

7
  • Had this too on my raspberry pi, insmod solved it (after a reboot I can modprobe as usual)
    – unhammer
    Commented Jul 5, 2013 at 8:05
  • Thamks! the insmod command works! Had this for an openconnect issue: Failed to open tun device: No such device Commented May 9, 2014 at 20:05
  • Root access needed?!
    – Dr.jacky
    Commented Dec 16, 2015 at 6:59
  • 4
    can't find /lib/modules/ -iname 'tun.ko.gz' on my Ubuntu 14.04 vps ( Commented Mar 29, 2016 at 23:37
  • 2
    can't find it on CentOS 7 either.
    – snetch
    Commented May 18, 2016 at 17:39
28

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.
4
  • Thanks, I got this problem with OpenVPN Access Server on OVH Classic VPS after doing a dist-upgrade from Debian 7 to Debian 8. You can also do sudo chmod 600 /dev/net/tun like said in this article: wiki.vpslink.com/TUN/TAP_device_with_OpenVPN_or_Hamachi After restarting openvpn with sudo service openvpnas restart, I could connect with a client. But when I restart the Linux server, /dev/net/tun does not exist anymore. I don't know if it's normal but I added commands to /etc/rc.local so it will still work after reboot.
    – baptx
    Commented Jun 28, 2015 at 16:34
  • Thanks. Your solution worked for my armbi port of debian squeeze running on my android mobile. I got the same error while starting OpenVPN. Commented May 12, 2017 at 21:13
  • yes, tun is not a module.
    – MrRolling
    Commented Jan 24, 2018 at 4:00
  • thas works for me thanx. Commented May 12, 2018 at 19:36
4

Make sure you do a kernelcheck before running modprobe. See note here

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.

1
  • Thank you! I'm using Manjaro and I haven't resbooted my machine since the last kernel upgrade. A simple reboot solved the problem. Commented Jan 27, 2021 at 13:49
4

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

1
  • 1
    this is invalid for me, I already install that package, and reinstalling does nothing. Commented Feb 17, 2022 at 9:20
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.

2
  • Welcome to SuperUser! How is this answer better than the accepted one from over 10 years ago? Commented Aug 29, 2022 at 10:34
  • Given that the reason why modprobe does not work is the mismatch between the module version and the kernel version, then such an insmod is potentially dangerous. My problem with modprobe was solved by a simple system reboot - no risky trickery required. I tried to put this note under commets to the accepted answer, but this wonderful platform says I don't have enough reputation.
    – fogjet
    Commented Aug 30, 2022 at 11:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .