Tunnel (Rechnernetz)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Tunnel bzw. Tunneling bezeichnet in einem Netzwerk die Konvertierung und Übertragung eines Kommunikationsprotokolls, das für den Transport in ein anderes Kommunikationsprotokoll eingebettet wird. Vor und hinter den Tunnelpartnern wird somit das ursprüngliche Protokoll „gesprochen“, während zwischen den Tunnelpartnern ein anderes Protokoll verwendet wird, das einer anderen Art der Kommunikation dient und dennoch die Daten des ursprünglichen Protokolls transportiert. Dafür wird die Tunnelsoftware auf beiden Seiten des Tunnels benötigt. Nachdem sie die ursprünglichen Kommunikationsdaten in ein anderes Protokoll eingebettet hat, muss die Software auf der jeweils anderen Seite des Tunnels die Daten wieder extrahieren und weiterreichen.

Ein plastisches Beispiel für Tunneling innerhalb des öffentlichen Wählnetzes ist die Übertragung digitaler Computerdaten durch ein analoges Sprachnetz mittels Akustikkoppler. Dort bildet der Übergang zwischen dem Akustikkoppler und Telefonhörer einen sichtbaren Eingang (wenn der Computer Daten sendet) und Ausgang des Tunnels (Daten empfangen). Tunnel wie DSL werden heute benötigt, um über das öffentliche Wählnetz auf das Internet zugreifen zu können.[1]

Der Internetzugriff über das Wählnetz ist ein Beispiel für einen Tunnel, der Netzwerke (das private Netz und das Internet) durch ein benachbartes Netz hindurch miteinander verbindet, ohne dass das benachbarte Netz (das Wählnetz) kompatibel zu diesen Netzwerken sein muss.[2] Darüber hinaus wird Tunneling dafür verwendet, in einem Computernetz Daten eines Netzwerkdienstes eingebettet im Protokoll eines anderen Netzwerkdienstes zu übertragen. Das verwendete Kommunikationsprotokoll des anderen Dienstes wird wie eine Hülle genutzt, die dabei hilft, den tatsächlichen Inhalt zu verschleiern. Auf diese Weise lassen sich unsichere Netzwerkprotokolle eingebettet in einem gesicherten und verschlüsselten Netzwerkprotokoll abhör- und manipulationssicher transportieren (z. B. SSH-Tunnel). Tunnel können auch dazu dienen, Teilnehmer eines Netzes aus ihrem ursprünglichen Netz heraus an ein anderes Netz zu binden (z. B. VPN-Tunnel).[2] Ferner eignen sich Tunnel dafür, das Regelwerk einer Firewall und andere Sicherheitsmaßnahmen zu umgehen (z. B. HTTP-Tunnel).

Fünf parallel aufgebaute SSH-Tunnel eines Clients (komplette linke Seite) über eine Firewall hinweg (Firewall1) durch ein benachbartes Netz hindurch (hier das Internet) zu seinem SSH-Tunnelpartner auf oder hinter Firewall2 (liegt er dahinter, reicht die Firewall die Port-22-Anfrage dorthin durch). Der Tunnelpartner nimmt die Anfragen entgegen und leitet sie an die Server seines privaten (in sich geschlossenen) Netzes weiter, für die die Anfragen bestimmt sind (rechte Seite); zur Nutzung verschiedener Dienste der Server (hier VNC, Druck, SSH-Shell, RDP und Telnet), wobei die Daten zwischen dem Client und seinem SSH-Tunnelpartner dank des verwendeten Tunnelprotokolls (SSH) verschlüsselt und damit abhör- und manipulationssicher übertragen werden.

Tunneling innerhalb des öffentlichen Wählnetzes[Bearbeiten]

Das öffentliche Wählnetz enthält eine Infrastruktur. Ein dort angeschlossenes Gerät muss diese Infrastruktur bedienen können (deren Protokoll sprechen). Andernfalls könnte das Gerät seinen Gesprächspartner nicht erreichen.

Neben dem öffentlichen Wählnetz, das ursprünglich für die Telefonie entwickelt wurde, gibt es weitere Netze. Stark vereinfacht ausgedrückt lässt sich ein weiteres Netz vorstellen, das irgendwo, beispielsweise in Deutschland, steht und mehrere Computer miteinander verbindet. Die Computer stellen Dienste bereit, auf die man über deren Netz zugreifen kann. Der Anbieter könnte nun eigene Leitungen bis in die Wohnung seiner Kunden legen, um dort einen Anschluss für das neue Netz zur Verfügung zu stellen. Dieser Vorgang wäre allerdings sehr aufwendig und teuer und es gäbe sehr viele Anschlussdosen in einem Haushalt, der auf ähnliche Weise mehrere Netze kontaktieren möchte.

Alternativ dazu kann das bereits vorhandene öffentliche Wählnetz unter Verwendung eines Tunnels genutzt werden: Auf der einen Seite wird das neue Netz über ein Gateway mit dem öffentlichen Wählnetz verbunden; auf der anderen Seite, an der Telefondose des Anwenders, wird eine Gegenstelle installiert, an der die für das neue Netz vorgesehenen Endgeräte angeschlossen werden können (hier die eigenen Computer des Kunden). Zwischen der Gegenstelle und dem Gateway werden die Daten dem Protokoll des öffentlichen Wählnetzes gemäß übertragen (sie werden getunnelt; genauer werden sie in ein Protokoll gepackt, das die Adressierung des Wählnetzes beherrscht und die Daten des anderen Netzes in sich „verpackt“, ohne die technischen Spezifikationen des Wählnetzes zu verletzen). Diese Geräte sind Tunnelpartner, da sie die ursprünglichen Pakete in ein anderes Protokoll packen und auf der jeweils anderen Seite auspacken und weiterleiten. Vor und hinter diesen Geräten wird wieder das Protokoll des anderen Netzes gesprochen; die Adressierung findet beispielsweise wieder in einer Form statt, die das Computernetz versteht.

Solche Tunnel, die Netzwerke über ein anderes Netz hinweg miteinander verbinden, gehören zu den VPNs.[2] Bekannte Tunnel innerhalb des öffentlichen Wählnetzes sind beispielsweise ISDN, X.25, Frame Relay und DSL.[1]

Tunneling innerhalb eines Computernetzes[Bearbeiten]

Geeignete Protokolle[Bearbeiten]

Prinzipiell lassen sich alle Protokolle für einen Tunnel gebrauchen. Sie müssen sich nur durch das Netzwerk routen lassen und die Möglichkeit bieten, die zu transportierenden Daten einzubetten. So lassen sich z. B. bei einem ICMP-Tunnel ping-Pakete (ICMP) für den Datentransport verwenden. Es sind auch asymmetrische Tunnel möglich, in dem zwei unterschiedliche Protokolle für den Hin- und Rückweg eingesetzt werden.

Mit einem Tunnel eine Firewall umgehen[Bearbeiten]

Ein Netzwerkdienst arbeitet auf einem festgelegten Port. Werden Ports mit Hilfe einer Firewall gesperrt, will man damit erreichen, dass bestimmte Dienste nicht genutzt werden können. Ist z. B. Port 80 (HTTP) erlaubt und Port 21 (FTP) gesperrt, so kann der Anwender Internetseiten aufrufen, aber keine Dateien per FTP mit einem Internetserver austauschen.

Man könnte nun das ftp-Client-Programm und den Serverdienst seines eigenen Internetservers so verändern, dass sie ebenfalls über Port 80 kommunizieren und so die Filterregel der Firewall umgehen.

Eine Firewall, welche in der Lage ist, die Pakete zu analysieren, kann zusätzlich den Aufbau der Daten untersuchen und alle Pakete blockieren, welche nicht dem Protokoll des freigegebenen Dienstes entsprechen. Hier würde der Trick also theoretisch nicht mehr funktionieren. In der Praxis ist eine solche Kontrolle jedoch nicht trivial. Schließlich soll jedes Protokoll irgendwelche Daten transportieren. So ist es möglich, z. B. die Daten eines FTP-Dienstes in dem Protokoll eines HTTP-Dienstes einzubetten, ohne dabei den Protokollstandard zu verletzen. Die Daten müssen dazu lediglich entsprechend konvertiert werden.

Ein Tunnel nimmt eine solche Konvertierung vor: Er schickt die Daten eines gesperrten Dienstes eingebettet in den Daten eines freigegebenen Dienstes durch die Firewall zu seinem Zielsystem. Dafür muss auf dem PC und dem Zielsystem jedoch eine Tunnelsoftware installiert sein, welche die Daten auf der einen Seite konvertiert und auf der anderen Seite wieder in das ursprüngliche Format zurückwandelt.

Erlaubt die Firewall verschlüsselte Verbindungen, wie z. B. zu HTTPS-Servern, lassen sich die Daten an der Firewall nicht mehr mitlesen. Somit ist eine Inhaltsprüfung nicht möglich. Diese Verbindungen eignen sich besonders gut für Tunnel.

Hole Punching ist eine Tunneling-Technik, die man anwenden kann, wenn beide Seiten einer Verbindung jeweils durch Firewalls vom Internet abgeschirmt sind.

Arbeitgeber untersagen mitunter die Nutzung anderer Dienste als HTTP und stellen dies durch eine Nutzungsbestimmung und eine Firewall sicher. Wird eine Firewall in Firmennetzwerken unter solchen Bedingungen umgangen, so ist zu beachten, dass dies als ein vorsätzlicher Verstoß gegen die Nutzungsbestimmung gewertet werden kann, wodurch man als Arbeitnehmer eine Kündigung riskiert.

Das Tunnelprinzip für eine verschlüsselte Verbindung verwenden[Bearbeiten]

Tunnel werden vornehmlich dazu verwendet, um abhörsichere Verbindungen über ungesicherte Computernetzwerke hinweg aufzubauen. Dabei sorgt die Tunnelsoftware dafür, dass die Netzwerkpakete in einem verschlüsselungsfähigen Protokoll eingebettet werden, um sie auf der Gegenseite wieder zu entschlüsseln und auszupacken. Dadurch wird eine verschlüsselte Datenübertragung auch für Dienste realisiert, die normalerweise über keine eigene Verschlüsselung verfügen. Auch ganze Netzwerke können so abhörsicher miteinander verbunden werden.

Tunnelsoftware (Konverter)[Bearbeiten]

Indem sich die Tunnelsoftware des Clients in die IP-Implementierung hängt, könnte sie ausgehende Anfragen an bestimmte Dienste (genauer an einen TCP- oder UDP-Port X) automatisch nach Port Y eines anderen Dienstes umleiten und dabei eine Konvertierung der Daten vornehmen, sobald ein bestimmtes Ziel (IP-Adresse) angesprochen wird. Port X könnte nach dem obigen Beispiel der Port für den FTP-Dienst sein, während Port Y dann der Port für den HTTP-Dienst wäre, über den die Anfrage getunnelt werden soll. Dieser Automatismus ließe sich jedoch nicht einrichten, wenn die Kennung auf dem System keine administrativen Rechte besitzt. Hier sollte eine elegantere Lösung helfen, das Hindernis zu überwinden. So bindet sich die Tunnelsoftware üblicherweise selbst an einen festen Port des PCs, sodass der PC Anfragen an diesem Port entgegennehmen kann.

Damit lediglich das lokale System diesen Port nutzen kann, bindet sich die Tunnelsoftware in der Regel nicht an die externe Adresse der Netzwerkkarte, sondern an die interne lokale Adresse des Computers (localhost, die so genannte Loopback-Schnittstelle 127.0.0.1). Dann wird das Client-Programm dahingehend konfiguriert, dass es seine Anfragen nicht mehr an das Zielsystem schickt, sondern an den eigenen Computer auf den Port der Tunnelsoftware sendet (Zielsystem = „localhost:Port X“). Je nach Einstellung reicht die Tunnelsoftware wiederum alle Pakete, welche an Port X eintreffen, automatisch an das tatsächliche Zielsystem weiter (Zielsystem = „entfernter Server:Port Y“).

Auf diese Weise können auch mehrere lokale Ports verwendet werden, die man einzeln konfigurieren und mit unterschiedlichen Zielen verbinden kann.

Auf dem Server läuft die Tunnelsoftware nach demselben Prinzip – nur genau andersherum: Sie lauscht am Tunnelport, konvertiert alle dort eingehenden Pakete in das Ursprungsformat zurück und leitet sie dann zum Bestimmungs(p)ort weiter.

Alternativ zu dem vorher beschriebenen Verfahren gibt es auch Anwendungsprogramme, bei denen die Tunnelsoftware bereits integriert ist. Der Tunnel kann so direkt genutzt werden, ohne ein separates Konverterprogramm dazwischen schalten zu müssen.

Beispiele für eine Tunnelsoftware:

  • GNU httptunnel HTTP-Tunnelinglösung.
  • HTTPTunnel – eine plattformunabhängige (Perl/PHP) HTTP tunneling software
  • OpenSSHSSH bietet die Möglichkeit verschlüsselte TCP-Tunnel aufzubauen
  • OpenVPN – VPN-Lösung für Unix und Windows, verwendet wahlweise UDP oder TCP (ab Version 2.0)
  • corkscrew – ein SSH-HTTP(s) Tunnel-Programm
  • PuTTY ist ein freies SSH- und Telnet-Client-Programm
  • FreeS/WAN
  • OpenS/WAN
  • iPig Hotspot VPN – TCP/UDP-Tunnel-Software und Service (Eine eingeschränkte Version ist kostenlos nutzbar.)
  • VTun
  • PingFu ist ein Game Tunnel Service
  • Hamachi - ein kostenloser VPN Tunnel Service
  • Your Freedom ist ein teilweise kostenloser HTTP Tunnel Service
  • Crypto IP Encapsulation (CIPE)
  • Tunnel – TCP-Tunnel-Software (eingeschränkt kostenlos nutzbar, Windows + Linux)
  • Tunngle P2P-VPN-Gaming-Tool

Sicherheit[Bearbeiten]

Getunnelte Verbindungen gelten nur so lange als sicher, wie die dabei verwendeten Verschlüsselungsverfahren als ausreichend stark angesehen werden.

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. a b Virtuelles privates Netzwerk, IT-Wissen, Onlinelexikon für Informationstechnologie
  2. a b c "What is a VPN?" (PDF; 652 kB), Paul Ferguson und Geoff Huston, April 1998

Weblinks[Bearbeiten]

  • RFC 2003 – IP Encapsulation in IP
  • Tunneling (PDF; 259 kB), Wolfgang Schulte. NET 11/2009 S. 30