Nachdem ich mich vor einiger Zeit mit einem gefilterten IMAP herumgeschlagen habe, stehe ich nun vor einem nichtneutralen Kabelnetzanschluss. Ich kann vieles, aber keine TCP-Verbindung auf Port 445 zu einer anderen Maschine herstellen. Port 445? Das ist SMB, die Windows-Dateifreigabe. Heute nennt man das CIFS, was fuer die Praxis aber von -- sagen wir mal -- untergeordneter Bedeutung ist.

Wenn nur ein Port nicht geht, na gut, na schoen, dann nehme man einen anderen. Das ist leichter gesagt als getan, denn Windows ist da ein bisschen schwierig. Wer schonmal geschafft hat, eine Windows-Maschine dazu zu bewegen, eine Dateifreigabe auf einem frei gewaehlten Port zu nutzen oder gar freizugeben moege sich bitte bei mir melden :)
Wenn der Port feststeht, was dann tun? Tunneln. das ist nun von der Idee her so neu nicht -- secure-mailing-tunnel.html hat das schon behandelt. Die dort vorgestellte Loesung saehe wie folgt aus: Auf einer Unix-Maschine Verbindungen auf Port 445 annehmen und diese durch einen ssh-Tunnel zu einer Unix-Maschine auf der anderen Seite des SMB-feindlichen Netzwerks aus dem Tunnel lassen. Das funktioniert auch; die Verbindung kann sogar auf der Client-Maschine mit putty aufgebaut werden, wenn (und zwar genau dann, wenn) Port 445 nicht schon besetzt ist.
Port 445 ist aber besetzt. Und nur fuers tunneln eine weitere Unix-Maschine rumlaufen lassen? Auch bloed. Vielleicht ne virtuelle Maschine? Das macht's nicht besser, fuehrt aber schon auf die Loesung hin: Warum koennte es mit einer virtuellen Maschine funktionieren? Weil damit einem physikalischen Netzwerkanschluss eine weitere IP-Adresse zugewiesen wird.

Wenn sich diese Erkenntnis gesetzt hat, dann laesst sie sich auch anders nutzen. Es muss ja nur dafuer gesorgt werden, dass der entfernte SMB-Server lokal eine eigene IP-Adresse erhaelt, auf der noch kein bind() den Port 445 besetzt haelt. Das sollte sich auch so machen lassen. Zum Beispiel unter FreeBSD:

[ad001@salz ~]$ sudo ifconfig bge0 alias 192.168.0.177
[ad001@salz ~]$ ifconfig bge0
bge0: flags=8843 metric 0 mtu 1500
        options=9b
        ether 00:c0:9f:8e:d7:c1
        inet 192.168.0.180 netmask 0xffffff00 broadcast 192.168.0.255
        inet 192.168.0.177 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (100baseTX )
        status: active
Mit dieser Verwedung von ifconfig ist es auch schon geschehen -- die Maschine hat eine IP mehr. Nun muss nur noch ein SSH-Tunnel her, der auch auf dieser IP lauscht:
[ad001@salz ~]$ sudo ssh -L 192.168.0.177:445:zielrechner:445 ad001@tunnelende
Die Ausfuehrung von ssh mit Root-Rechten ist notwendig, weil Port 445 zu den privilegierten Ports gehoert, die ich als einfacher Nutzer nicht verwenden kann. Wenn die Verbindung aufgebaut ist, kann ich von meinem Windows aus auf \\192.168.0.177\ zugreifen wie ich ansonsten auf \\zielrechner\ zugreifen wuerde.

Stichworte:


Impressum