Linux – Cannot find device „tun0“

Ihr wollt z.B. mit SSH ein VPN und dazu einen Tunnel aufbauen, könnt aber nicht, weil Ihr diese Fehlermeldung bekommt: Cannot find device „tun0“ ? Ja, na dann auf ins neue Netstackventure!

Tunneldevice mit Linux nutzen

Ihr erinnert Euch noch an den Artikel: SSH VPN mit den iproute2 Tools ? Da haben wir ein SSH VPN aus dem Hut gezaubert und mußten dazu mit Tunneln arbeiten. Da hat sich einiges getan, deswegen müssen wir uns leider erneut damit befassen.

Schritt 1 und 2 sind klar, ein TUN Modul laden und Device erzeugen, aber was ist das…?? :

[root@backup ~]# modprobe tun
[root@backup ~]# ip link set tun0 up;
Cannot find device "tun0"

Cannot find device „tun0““ ist ein echter Kopfschmerzenerzeuger, weil so unnötig. Also das Modul „tun“ ist wie der Name nahelegt, für Tunneldevices zuständig. Es sollte eigentlich ein Tunneldevice tun0 erzeugen, tuts aber nicht und mit normalen Fedora Bordmitteln ist das auch nicht so einfach machbar.

Ihr braucht das Paket „tunctl“ ( dnf install tunctl ) und müßt Euch erstmal ein tundevice bauen:

tunctl -t tun0

Wie man sieht, ist das nicht schwer. Jetzt, wo das Gerät persistent gemacht wurde, seht Ihr an der Ausgabe von dem Befehl oben, klappt das dann auch mit dem „ip link set tun0 up“ und Ihr könnt der Anleitung aus SSH VPN mit den iproute2 Tools weiter folgen. Ihr müßt nur dran denken, daß Ihr das auch bei Euch auf dem Client PC macht und nicht nur auf dem Server.

Eine Bewertung, wieso das nicht mehr defaultmäßig bei Fedora dabei ist, verkneif ich mir, es wird merkwürdige Gründe haben 🙂

How to Linux – Webserver lokal mounten

Icon des Webservers auf dem DesktopIcon des Webservers auf dem DesktopWer seine Webseiten entwickeln will, muß die irgendwie auf seinen Webspace bekommen. Je nachdem was man programmiert und welche Serverumgebung man hat, kann es auch sein, daß einem der Server einen Deploy Mechanismus anbietet. Das ist z.B. im WebApplicationServer Tomcat so vorgesehen. PHP Anwendungen werden üblicherweise einfach nur in das Public_html des Webspace kopiert und direkt aufgerufen.

Schritt 1 – SSH Keys einrichten

Voraussetzung für dies Verfahren ist, daß man sich auf seinem Webspace per SSH einloggen kann. Könnt Ihr das nicht, sucht Euch einen neuen Anbieter.

Das tun wir hier mal ( den Domainnamen habe ich mal exemplarisch gewählt, den gibt es zwar wirklich, aber nicht bei mir 😉 )

[marius@eve ~]$ ssh webdemode@webdemo.de
webdemode@webdemo.de's password: 

Passwort eingeben, weil noch geht ja kein Key.

Last login: Sat Mar 31 12:38:16 2018 from 79.239.240.108
[webdemode@s113 ~]$ ls -la
total 14
drwxr-x--- 3 webdemode services 4096 Mär 31 09:59 .
drwxr-xr-x 13 root root 4096 Mär 31 09:59 ..
-rw-r--r-- 1 webdemode webdemode 18 Aug 8 2017 .bash_logout
-rw-r--r-- 1 webdemode webdemode 193 Aug 8 2017 .bash_profile
-rw-r--r-- 1 webdemode webdemode 231 Aug 8 2017 .bashrc
drwxr-xr-x 3 webdemode webdemode 4096 Mär 31 09:59 public_html

Es fehlt das Verzeichnis „.ssh“, also anlegen:

[webdemode@s113 ~]$ mkdir .ssh
[webdemode@s113 ~]$ ls -la
total 18
drwxr-x--- 4 webdemode services 4096 Mär 31 10:09 .
drwxr-xr-x 13 root root 4096 Mär 31 09:59 ..
-rw------- 1 webdemode webdemode 229 Mär 31 10:39 .bash_history
-rw-r--r-- 1 webdemode webdemode 18 Aug 8 2017 .bash_logout
-rw-r--r-- 1 webdemode webdemode 193 Aug 8 2017 .bash_profile
-rw-r--r-- 1 webdemode webdemode 231 Aug 8 2017 .bashrc
drwxr-xr-x 3 webdemode webdemode 4096 Mär 31 09:59 public_html
drwxrwxr-x 2 webdemode webdemode 4096 Mär 31 10:02 .ssh

Noch hat es falsche Rechte, da würde SSH meckern :

[webdemode@s113 ~]$ chmod 700 .ssh
[webdemode@s113 ~]$ cd .ssh/
[webdemode@s113 .ssh]$ vi authorized_keys2

Dann den Fingerprint von Eurem Key in die Datei authorized_keys2 reinschreiben:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQ7v3LaRyRjbm...... Rqr9L8IjxAEeT7bzZ/VH20ksRNwSEU5jnTE7S2Jcvk2u/7CnmipAp/uE2SvOdEVm7Lgku4y9EgSNlNi+QVbGFkzQ788AsiMHHULacHZRT9w== marius@meinlinuxrechner

(hier eine stark gekürzte Fassung, Eurer muß komplett da rein)

Nun noch die Rechte von der Datei ändern:

[webdemode@s113 .ssh]$ ls -la
total 10
drwx------ 2 webdemode webdemode 4096 Mär 31 11:03 .
drwxr-x--- 4 webdemode services 4096 Mär 31 10:09 ..
-rw-rw-r-- 1 webdemode webdemode 1435 Mär 31 11:03 authorized_keys2
[webdemode@s113 .ssh]$ chmod 644 authorized_keys2 
[webdemode@s113 .ssh]$

Das wars. Ab jetzt kann man mit seinem Key einloggen :

[webdemode@s113 .ssh]$ exit
Abgemeldet
Connection to webdemo.de closed.
[marius@eve ~]$ ssh webdemode@webdemo.de
Last login: Sat Mar 31 12:39:39 2018 from 79.239.240.108

Schritt 2 – SSHFS benutzen

Damit man sich seinen Webspace per SSH direkt in seinen Arbeitsbereich auf dem Desktop mounten kann, möglichst ohne dauernd Passwörter eingeben zu müssen, braucht man einen SSH-Agent z.b. den Gnome-Keyringdämonen. Diesem gebe ich meinen Key und statt mich jedesmal zu fragen, schickt der Agent dann einfach den Schlüssel an den Server.

ssh-add /pfad/zu/meinem/SSH-Schlüssel_rsa

ggf. Passwort eingeben.

sshfs webdemode@webdemo.de:/home/webdemode/ mnt

und schon kann man im Filesystem seines Desktops einfach auf den Webserver zugreifen, als wenn es Lokal wäre :

[marius@eve ~]$ ls -la mnt/
 insgesamt 52
 drwxr-x---. 1 testuser 500 4096 31. Mär 12:09 .
 drwx------. 106 marius marius 20480 31. Mär 11:57 ..
 -rw-------. 1 testuser testuser 356 31. Mär 13:05 .bash_history
 -rw-r--r--. 1 testuser testuser 18 8. Aug 2017 .bash_logout
 -rw-r--r--. 1 testuser testuser 193 8. Aug 2017 .bash_profile
 -rw-r--r--. 1 testuser testuser 231 8. Aug 2017 .bashrc
 drwxr-xr-x. 1 testuser testuser 4096 31. Mär 11:59 public_html
 drwx------. 1 testuser testuser 4096 31. Mär 13:03 .ssh

Welcher User einem da jetzt angezeigt wird, hängt von Eurem System ab, aber i.d.R. werden es nur die UID und GID des Serverusers sein. SSH kümmert sich dabei um alles, also auch, daß man die UID transponiert wird, es gibt am Ende also keine Probleme mit dem Lesen oder Schreiben von Dateien.

Das kann man dann einfach mit Gedit oder einem anderen Programm öffnen (BlueFish z.b. ):

Datei des Webservers in GEdit

Datei des Webservers in GEdit

Linux – wenn ssh nicht portforwarden will

Wenn SSH Euren Port trotz richtiger Angabe der Parameter nicht forwarden will, könntet Ihr Opfer des Fortschritts geworden sein.

Das Problem

Der Befehl :

ssh -g -R *:24007:192.168.178.1:24007 root@remoteserver.de

sagt dem entfernen Server normalerweise, daß der Remote-Server einen Port 24007 für alle zugänglich auf 0.0.0.0 binden soll und alles was reinkommt, soll an die lokale IP 192.168.178.1 Port 24007 weitergeleitet werden.

Wenn das aber immer im Netstat auf 127.0.0.1 angezeigt wird:

tcp 0 0 127.0.0.1:24007 0.0.0.0:* LISTEN 13927/sshd: root@pt….

dann ist Eure SSHD-Config zu alt 🙂 Vor einigen Jahren wurde eine neue Option eingeführt, so daß der SSHD zwingend konfiguriert sein muß, globale Ports binden zu können.

Die Lösung

Fügt in die /etc/ssh/sshd_config  die folgende Zeile ein und startet den Dienst neu:

GatewayPorts yes

Damit darf der SSHD das wieder für Euch erledigen und die Tunnelwelt funktioniert für Euch wieder.

Das könnte auch interessant sein:

SSH VPN mit den iproute2 Tools
UDP Traffic per SSH tunneln
TAR erfolgreich per SSH tunneln