How to load tun module in linux?

26

14

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.

rabipelais

Posted 2012-10-31T21:19:52.603

Reputation: 371

Answers

27

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.

Alex Szczuczko

Posted 2012-10-31T21:19:52.603

Reputation: 386

Root access needed?! – Dr.jacky – 2015-12-16T06:59:07.180

3can't find /lib/modules/ -iname 'tun.ko.gz' on my Ubuntu 14.04 vps ( – Ivan Borshchov – 2016-03-29T23:37:36.850

1can't find it on CentOS 7 either. – snetch – 2016-05-18T17:39:02.137

At the time of writing this, the latest ARCH produces the following error insmod: ERROR: could not insert module /lib/modules/4.8.2-1-ARCH/kernel/drivers/net/tun.ko.gz: Invalid module format – Antony – 2016-10-22T03:44:39.870

You can also load it automatically if found like: find /lib/modules/ -iname "tun.ko.gz" -exec /usr/bin/insmod {} \; – fugitive – 2017-02-10T02:04:29.270

Had this too on my raspberry pi, insmod solved it (after a reboot I can modprobe as usual) – unhammer – 2013-07-05T08:05:10.883

Thamks! the insmod command works! Had this for an openconnect issue: Failed to open tun device: No such device – Antonio Saco – 2014-05-09T20:05:56.687

22

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

Posted 2012-10-31T21:19:52.603

Reputation: 321

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: http://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 – 2015-06-28T16:34:47.523

Thanks. Your solution worked for my armbi port of debian squeeze running on my android mobile. I got the same error while starting OpenVPN. – Sourav Ghosh – 2017-05-12T21:13:34.440

yes, tun is not a module. – MrRolling – 2018-01-24T04:00:27.280

thas works for me thanx. – Pouya Samie – 2018-05-12T19:36:32.670

2

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

MrRolling

Posted 2012-10-31T21:19:52.603

Reputation: 121

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.

ceilingcat

Posted 2012-10-31T21:19:52.603

Reputation: 101