Remotezugriff auf OpenWrt-Router (Updated)

Lange Zeit hatte ich einen Account bei dyndns. Dadurch konnte ich meinen Rechner zuhause trotz DSL aus dem Internet ansprechen. Die dynamisch vergebene IP-Adresse wurde automatisch durch eine Helferapplikation bei dyndns mit einem URL verbunden.

Inzwischen bin ich weg von dyndns, ich brauche es eigentlich auch gar nicht. Dank meines Asus-Routers mit OpenWrt kann ich zeitgesteuert meine IP-Adresse zuhause in eine Textdatei auf meinem gemieteten Webspace schreiben lassen. Dadurch kann ich von überall auf Router und meinen Rechner zuhause (sofern er eingeschaltet ist) zugreifen.

Ziel: Der Router soll periodisch seine IP-Adressen auslesen und in eine Textdatei auf einem FTP-Account schreiben.

Der erste Schritt, ist die Installation einiger Pakete auf dem Router, damit ein Upload möglich ist. Prinzipiell geht es auch via ftp, ich bevorzuge jedoch curl.

ipkg install curl

Als nächstes lege ich ein Skript an, welches für das Auslesen und Hochladen der IP-Infos zuständig ist: /mnt/usb/usr/bin/publish_ip.sh

#!/bin/sh
date > /tmp/ip
ifconfig vlan1 | grep -v inet6 | grep inet | cut -f2 -d: | awk '{print $1}' >> /tmp/ip
curl -T /tmp/ip -u username:password ftp://ftp.webspace.de/ip/inet_addr

Zeile 1 ist die Shebang, in Zeile 2 wird ein aktueller Zeitstempel in die Datei /tmp/ip geschrieben. Zeile 3 führt das Programm ifconfig aus und sucht dort nach der IP-Adresse, indem die Ausgabe von ifconfig via grep durchforstet, mittels cut zurechtgestutzt und anhand von awk ausgegeben wird. Das Ergebnis wird an die Datei /tmp/ip angehangen. In Zeile 4 sorgt curl dafür, dass die Textdatei via ftp auf den Webspace kopiert wird. Das geht natürlich auch mit ftp oder anderen ftp-fähigen Werkzeugen.

Nicht vergessen: Die Datei muss ausführbar sein:

chmod +x /mnt/usb/usr/bin/publish_ip.sh

Dann wird ein Cronjob eingerichtet. Wenn Cron bereits läuft, ist alles gut, alternativ muss es eingerichtet werden:

Eine Datei namens /etc/init.d/S61 muss mit dem folgenden Inhalt angelegt werden (dies sollte via Webinterface auch automatisch gehen):

#!/bin/sh
crond -c /etc/crontabs -b

Diese Datei muss ausführbar gemacht werden:

chmod +x /etc/init.d/S61crond

Dann folgt entweder ein Neustart oder der Aufruf des crond-Startskripts:

sh /etc/init.d/S61crond

Das Anlegen des Cronjobs kann unter anderem durch den Befehl “crontab -e” erfolgen. Folgende Zeile füge ich hinzu:

59 4 * * * /mnt/usb/usr/bin/publish_ip.sh

Somit wird jeden Morgen gegen 5 Uhr Uhr das Skript ausgeführt und die IP-Adresse auf den Webspace geladen. Das Ergebnis sieht in etwa so aus:

Sun Jun 10 04:59:01 CEST 2007 26.134.211.32

Die IP-Adresse des Routers im Internet am 10. Juni um 04:59 Uhr ist also 26.134.211.32.

Um den Komfort noch etwas zu erhöhen, könnte das kleine Skript publish_ip.sh ebensogut eine HTML-Seite generieren, die anhand eines Meta-Tags im Head der Seite eine automatische Weiterleitung vornimmt:

<meta http-equiv="Refresh" content="5; url=127.0.0.1">

Update für Kamikaze: Um die aktuelle WAN-IP herauszufinden, lautet das Kommando

ifconfig eth0.1 | grep -v inet6 | grep inet | cut -f2 -d: | awk '{print $1}' >> /tmp/ip

Author image
Blogging since 2003 about life, tech, yoga. Passionate about the details and eager to know more. Systems theory meets empathy.
Bochum. Germany.
top