Hallo ,
zu der puren Theorie (d.h. auch hier nur mein Verständnis Deiner Frage, meine Thesen können gerne entkräftet werden)
Ein Protokolltunnel ist ein Schema, bei dem in den protokollspezifischen Datenpaketen, andere Datenpakete im Datenteil untergebracht werden.
Dies funktioniert immer dann, wenn der Datenteil eines bestimmten Protokolls, z.B. dns, Felder zulässt, in denen man beliebige Daten (hier Pakete) speichern kann, ohne dass das eigentliche Paket dadurch gegen die Validität der Protokolldefinition verstößt und somit auf seinem Weg durch das Netz irgendwo gedroppt wird.
Die DNS Funktionsweise hast du ja bereits korrekt dargestellt. Es ist erstmal so:
1. Es gibt einen DNSServer und einen DNSClient
2. Der Client schickt einen DNSRequest an den DNSServer.
3. Der DNSServer schickt einen DNSResponse an den Client
Wie nun ein Tunnel ?
Man benötigt Zugriff auf den auflösenden DNSServer, denn für den Tunnel sind zwei Dinge nötig.
Auf clientseite müssen Datenpakete(z.B. tcp für ssh) in den Datenteil der dns request eingepackt werden. Der Server muss sie allerdings wieder auspacken können. Du benötigst also ein System was Deine dns request empfängt, eine andere Möglichkeit kann ich mir beim besten Willen für einen 'Protokolltunnel' nicht vorstellen.
Für das einpacken/Auspacken solcher Daten kann ein tun/tap Adapter denke ich nützlich sein, oder auch auf serverseite möglicherweise gut über eine gewöhnliche Paketsniffer Bibliothek gemacht werden.
Desweiteren sollte eine über upd(dns) getunnelte verbindung sehr inperformant sein, da udp Protokollimmanent nicht für gesicherte Datenübertragungen geeignet ist. Im Übrigen ist ein solcher Tunnel prizipiell genauso über icmp möglich, diese Art von Tunnel könnte man, denke ich, mit einer einfachen dyndns Adresse relativ einfach selbst nachstellen.
[EDIT: sorry hatte nicht gemerkt wie verstaubt das hier schon ist]
Geändert von AngelDelivery (07.02.10 um 17:35 Uhr)
|