Archiv für Mai 2009

Gestern Morgen komme ich ruhig und gelassen zur Arbeit. Rechner aufgebaut und hochgefahren, Anmeldung erfolgt, Firefox an, Thunderbird an. Alles super. Pidgin an. Hmm Connection timed out. Was ist denn jetzt los? Freitag ging es doch noch. Ping geht auch, also weiter geforscht. Das Ende vom Lied, der Chef der Netzwerkbetreuung meinte, dass das Netz zu unsicher ist und das somit erstmal alle Ports, bis auf 22, 25, 80, 443 und 993 dicht gemacht werden. Großartig, also hat sich das VPN damit auch erledigt, über das ich sonst von zu Hause aus in die Firma kam. Da ich dies dringend benötige stand ich somit vor der Aufgabe einen Tunnel ohne die VPN-Ports aufzubauen. Von den fünf Ports eignete sich ausschließlich der Port 22 (SSH) zur Verwendung.

Vorüberlegung

  • Im internen Netz stehen mehrere Rechner, auf die wir von außen zugreifen wollen.
  • Wir haben im Internet einen Server stehen, der unsere Gegenstelle wird.
  • Zur Minimierung des Aufwandes wird im internen Netz ein Server als SSH-Proxy genutzt.
  • SSH-Verbindungen werden nach einiger Zeit getrennt, wenn keine Daten übertragen werden.
  • Am Internet-Server müssen keine Anpassungen vorgenommen werden.

Einrichtung des SSH-Proxy

Kommen wir also zur Konfiguration des SSH-Proxy, also vereinfacht ausgedrückt zur Einrichtung eines Rechners im internen Netz, sodass eine dauerhafte SSH-Verbindung besteht und wir dann vom Internet-Server aus in das interne Netz kommen. Realisieren werden wir dies mit Hilfe eines SSH-Tunnels.

Befehl zum Aufbau des SSH-Tunnels

intern1:$ ssh -R 2000:localhost:22 internet-server

Je nachdem wie der Internet-Server konfiguriert wurde, wird man nach einem Passwort gefragt oder kommt direkt auf ihn. Ein Abklopfen des Ports 2000 zeigt uns, dass der Befehl erfolgreich war und der Tunnel steht.

internet-server:$ telnet localhost 2000

Ausgabe:

Trying 127.0.0.1…
Connected to localhost.localdomain.
Escape character is ‘^]’.
SSH-2.0-OpenSSH_5.1p1 Debian-5

Wir könnten damit schon arbeiten haben dann aber das Problem, dass der Tunnel zusammengebrochen ist, nachdem wir nach Hause gefahren sind. Also muss dafür gesorgt werden, dass ständig Daten über den Tunnel laufen und das die Verbindung auch bei einem Netzausfall wiederherstellt wird. Dies habe ich im nachfolgenden kurzen Script umgesetzt.


#!/bin/sh

while true; do
VAR1=$(lsof -i |grep IP_VON_Internetserver) # besteht eine Verbindung zum Internetserver
VAR2=$(echo $VAR1 |grep ESTABLISHED) # ist diese noch verbunden
if [ $? -eq 1 ]; then
# Wenn keine Verbindung mehr besteht wird eine neue aufgebaut, sonst wird nichts gemacht
$(echo date) >>tun.log # Protokollieren
echo “Connection down – Starting new one” >>tun.log
echo ” ” >>tun.log
ssh -f -R 2000:localhost:22 internet_server “killall ping; ping -i 10 heise.de >/dev/null” # neue Verbindung herstellen
# Erklaerung der Parameter:
# -f Befehl in Hintergrund schicken
# “killall ping” beendet die bestehenden Ping Befehle auf internetserver, damit nicht unendlich viele Dienste erstellt werden
# “ping -i 10 heise.de >/dev/null” dient dazu, dass ständig Daten übertragen werden. Die Zeiten sind uns dabei egal daher nach /dev/null
fi
sleep 30 # alle 30 Sekunden pruefen
done

Bei Bedarf kann die Datei noch als Cronjob gestartet werden, der nach dem Booten ausgelöst wird. Gestartet wird das Script mit angehängtem & Zeichen, damit es im Hintergrund verschwindet und die Konsole frei gibt.
intern1:$ /usr/local/sbin/ssh-tunnel/tun.sh &

Damit ist die Hauptarbeit getan. Der Tunnel bleibt bestehen und auch bei einem Ausfall der Netzwerkverbindung wird die Verbindung wiederhergestellt, wenn die Internetverbindung wieder steht. Alles weitere erleichtert nur das Verbinden zu den internen Rechnern.
Den Rest des Eintrages lesen »

Comments Keine Kommentare »

Git ist ein neuartiges Versionskontrollsystem ähnlich SVN oder CVS, ist allerdings deutlich performanter und leistungsstärker. Ich verwendete SVN lange Zeit, vermisste aber die Möglichkeit Daten nach stabil und instabil zu trennen und im instabilen Zweig neue Dinge auszuprobieren. Dies ist eine der vielen Stärken von Git. Weitere Informationen können bei Wikipedia nachgelesen werden. Siehe: http://de.wikipedia.org/wiki/Git

Jetzt werde ich die Installation und Handhabung von Git vorstellen. Dazu stellen wir uns einmal folgendes Szenario vor: Wir haben einen zentralen Server und zwei Rechner, auf denen wir programmieren. Die Erklärungen zu den einzelnen Befehlen befinden sich ganz unten. Wichtig anzumerken ist noch, dass ich Git in dieser Beschreibung mit SSH verwende. Es ist selbstverständlich auch möglich Git ohne SSH zu verwenden. Dazu muss einfach statt git+ssh nur noch git geschrieben werden. Viele Funktionen von Git, wie die Userverwaltung, das Zurücknehmen von Änderungen und Problembehandlung kommen hier zu kurz. Diese können in weiterführender Literatur erlesen werden.

Den Rest des Eintrages lesen »

Comments 1 Kommentar »

Hier kommt der erste Blog Test.

00546_lonelybeach_1440x900

Comments 2 Kommentare »

219106 Seiten angezeigt, 742 heute
92028 Besuche, 178 heute
FireStats icon Powered by FireStats