TUN/TAP
# TUN/TAP

TUN und TAP sind virtuelle Netzwerk-Kernel-Treiber, die Netzwerkgeräte über Software simulieren. TUN steht hierbei für Netzwerk-Tunnel und TAP für Network-TAP, also eine Netzwerk-Ausleitung. Die englische Abkürzung TAP stellt ein Backronym dar und steht für englisch Test Access Point aber auch für englisch Terminal Access Point. Während sich normalerweise hinter einem Netzwerkgerät (wie zum Beispiel eth0) direkt eine entsprechende Hardware in Form einer Netzwerkkarte verbirgt, werden Pakete, die an ein TUN/TAP-Gerät gesendet werden, an ein Programm im Userspace weitergeleitet und andersherum. Damit ein Userspace-Programm auch auf TUN/TAP-Geräte zugreifen kann, haben diese im Gegensatz zu realen Ethernet-Karten eine Gerätedatei mit der Bezeichnung tunN bzw. tapN unterhalb von /dev.

## Unterschied zwischen TUN und TAP

TUN simuliert ein Ende-zu-Ende-Netzwerkgerät (OSI-Layer 3) und kommuniziert per IP-Paketen mit der Software, während TAP eine Punkt-zu-Punkt-Verbindung via Ethernet-Gerät simuliert (OSI-Layer 2) und über Ethernet-Frames mit der Software kommuniziert.

## Beispiele für Anwendungen

Benutzt wird TUN/TAP u. a. für:
* Virtual Private Networks
** OpenVPN, Ethernet/IP über TCP/UDP; verschlüsselt, komprimiert
** tinc , Ethernet/IPv4/IPv6 über TCP/UDP; verschlüsselt, komprimiert
** VTun , Ethernet/IP/serial/Unix pipe über TCP; verschlüsselt, komprimiert, traffic shaping
** ICMPTX , IP über ICMP (ping)
** NSTX , IP über DNS
** HTun , IP über HTTP
** peervpn , Ethernet über UDP
** OpenSSH ; verschlüsselt, ggf. komprimiert; Schalter -w
* Netzwerke von virtuellen Maschinen
** Bochs
** coLinux
** QEMU
** VirtualBox
** Hercules (S/390-Emulator)

## Implementierungen

TUN/TAP-Treiber sind zumindest für die folgenden Plattformen verfügbar:
* FreeBSD
* Mac OS X
* Linux, beginnend ab ungefähr Version 2.1.60
* Microsoft Windows 2000/XP
* OpenBSD
* NetBSD
* Solaris