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 Netzwerk-Ausleitung (englisch: tap zu deutsch: Wasserhahn) aber auch für 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 [1], Ethernet/IPv4/IPv6 über TCP/UDP; verschlüsselt, komprimiert
- VTun [2], Ethernet/IP/serial/Unix pipe über TCP; verschlüsselt, komprimiert, traffic shaping
- ICMPTX [3], IP über ICMP (ping)
- NSTX [4], IP über DNS
- HTun [5], IP über HTTP
- peervpn [6], Ethernet über UDP
- OpenSSH [7]; 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