Vermittlungsprotokoll

Seite 4: Stellvertreter

Inhaltsverzeichnis

Virtual Host auf Mac OS X: Für die grundlegende Einrichtung genügen schon wenigen Einträge. Die Hauptarbeit erledigt das Programm Server Admin.

Eine wenig beachtete Möglichkeit von Bonjour ist die Proxy-Funktion. Damit kann man Dienste stellvertretend für Geräte annoncieren, die kein Bonjour haben, etwa Webcams, Printer-Server, Router, DVB-Receiver und überhaupt beliebige via TCP/IP erreichbare Geräte.

Prinzipiell braucht man dafür drei Parameter: das Protokoll, das der Dienst nutzt, die IP-Adresse und die Port-Nummer, auf der das Gerät horcht. Das Protokoll entnimmt man der Service-Types-Liste [8], die Port-Nummer der Dokumentation des Geräts und die IPAdresse kann man aus der Gerätekonfiguration auslesen.

Bei Tools wie Network Beacon für Mac OS X ist die Proxy-Funktion über eine hübsche grafische Oberfläche zugänglich. Weil Network Beacon aber so lange laufen muss, wie der Dienst annonciert werden soll, stört es, dass die Anwendung Arbeitsspeicher und Platz auf dem Desktop belegt. Das kann man ökonomischer auch mit dns-sd über die Option -p haben:

dns-sd -P Bullauge _rfb._tcp "" 5900 Bullauge.local  192.168.20.167

Im obigen Beispiel wird der VNC-Service für einen PC mit der IP-Adresse 192.168.20.167 unter dem Label Bullauge annonciert – das Label darf beliebigen, bis zu 63 Zeichen langen Text enthalten. VNC ist eine Software für die Fernsteuerung von PCs; rfb steht für Remote Frame Buffer, die von den VNC-Entwicklern verwendete Bezeichnung für deren Remote-Control-Protokoll.

Ein Mausklick genügt, um auf einem Mac-OS-X-Server das Bonjour- Modul für Apache einzuschalten.

Kombiniert man dns-sd mit ssh, kann man nicht nur Bonjour-Dienste von einem fremden Netz in sein eigenes holen (tunneln), sondern auch im eigenen LAN annoncieren. Für LAN-Kollegen sieht der getunnelte Dienst aus, als käme er aus dem eigenen LAN. Das kann nützlich sein, wenn eine Firma zum Beispiel auf Server einer Filiale ohne aufwendige VPN-Installation zugreifen will. Es gibt dafür bereits einige spezielle Programme, etwa RNSplicer für Mac OS X oder mTunnel für Windows, doch sind manche davon nur umständlich zu bedienen. Zudem ist die vom Japanischen ins Englische übersetzte Bedienungsanleitung des RNSplicer nur mit Mühe zu verstehen, sodass wir hier einen einfacheren Weg zeigen, der zudem auf allen Betriebssystemen funktioniert, auf denen ssh verfügbar ist.

Zunächst "holt" man per ssh den Dienst des entfernten Servers ins eigene LAN:

ssh -C -g -L 55000:remote.machine.net:80  >user<@remote.machine.net

Die Option -C schaltet die ssh-eigene Kompression ein und -L die Port-Weiterleitung – der Port 80 des entfernten Servers remote.machine.net wird lokal über Port 55000 angesprochen. Statt Port 55000 kann man einen beliebigen freien Port verwenden.

Ein zusätzlicher Trick ist noch erforderlich, damit Stationen des lokalen LAN an den Port 55000 ankoppeln können – dafür setzt man die Option -g ein. Kommt die Verbindung zustande, öffnet man in der Firewall den Port 55000, damit sie Verbindungsversuche von LAN-Stationen durchlässt und annonciert dann den Dienst:

dns-sd -P cubeTest _http._tcp "" 55000 cubeTest.local  192.168.20.100

192.168.20.100 ist die IP-Adresse des Rechners, der die ssh-Verbindung hält und den Dienst annonciert. In diesem Beispiel wird der auf remote.machine.net laufende Webserver annonciert. Entsprechend kann man auch andere Dienste heranholen und etwa Musik vom heimischen iTunes in der Firma hören:

ssh -g -L 55000:remote.machine.net:3689 user@remote.machine.net
dns-sd -P Jukebox _daap._tcp "" 55000 Jukebox.local 192.168.20.100

Die ssh-Kompression (-C) lässt man dabei besser weg, weil MP3-Streams ohnehin kaum komprimierbar sind.