[Gelöst] Externe IP der Fritzbox ermitteln

obelix76

Neuer User
Mitglied seit
7 Feb 2006
Beiträge
52
Punkte für Reaktionen
0
Punkte
6
hallo,

ich hoffe, ich bin iher mit meinem Problem einigermaßen richtig ;)

Ich habe bisher auf einem Raspberry Pi "hinter" der Fritzbox ein selbstgebasteltes Script zum Updaten meiner dynamischen IPs laufen gehabt. Dieses Script hatte über UPnP die externe IP der Fritz geholt und gegen die IP, die beim dyn IP dienst lag, geprüft. Bei Abweichung wurde ein Update getriggert. (bitte fragt mich nicht, warum ich nicht den DynIP Updater in der Fritz nehme... das ist Jahre her und ich meine mich zu erinnern, daß es da irgendwelchen Trödel gab. Deshalb hatte ich dann was eigenes gebaut. Und das lief ja auch...)

Das Ganze hat wie gesagt über Jahre zuverlässig getan, bis ich heute die Fritz (eine 7490, falls das was zur Sache tut) auf OS7.01 aktualisierte. Seitdem liefert mein Script nix mehr zurück...

hier mal die Scripte:

external_ip.sh
Code:
#!/bin/bash
curl -s "http://192.168.178.1:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "@/home/pi/script/external_ip.xml" | grep -Eo "\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>"

external_ip.xml
Code:
<?xml version="1.0" encoding="utf-8" ?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <u:GetExternalIPAddress xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" />
  </s:Body>
</s:Envelope>

Die Scripte hatte ich mal irgendwann und irgendwo (tm) im Netz gefunden und so übernommen. Um ehrlich zu sein, habe ich keinen Dunst, was die da so tun, außer daß die mir die externe IP ausspuckten :D

An dem Raspi, auf dem die Scripte laufen, wurde nix geändert. Einzige Änderung ist die Fritzbox mit ihrem neuen OS.
UPnP ist laut der Web-Oberfläche auch "scharf", trotzdem weigert sich das Script.

Hat jemand hier eine Ahnung, woran es liegen könnte, daß das Script nicht mehr tut, was es soll?
Würde mich freuen, wenn das wieder ginge - ich möchte nicht am Tag alle paar Minuten einen externen Server "anklingeln", der mir meine externe IP zurückliefert. Ist ja Unsinn, wenn man es auch lokal abfragen kann.

Danke schon mal vorab!
 
Das Skript geht bei mir auch nicht (mehr).

Wie wäre es mit folgender Lösung:

Schalte IPv6 ein und beobachte, wann sich die IPv6-Adresse ändert, denn diese wird von der Fritzbox aktiv im LAN verteilt. Wenn sich die IPv6-Adresse geändert hat, dann frage die IPv4-Adresse über einen externen Server ab.

Da mich solche Problemchen immer interessieren, habe ich ein kleines Beispielskript gebaut, das Änderungen der IPv6-Adresse erkennt (für Linux; ist wahrscheinlich nicht ganz perfekt).

Code:
#!/bin/sh

IP6ADDR_CURR=`ip -o -f inet6 address show scope global primary -deprecated | (IFS=' '; read x x x addr x; echo $addr)`
IP6ADDR_LAST=`cat /tmp/ip6addr_last.txt`

if [ ! "$IP6ADDR_CURR" = "$IP6ADDR_LAST" ]
then
  echo "IPv6 address change: $IP6ADDR_CURR"
  echo "$IP6ADDR_CURR" > /tmp/ip6addr_last.txt
fi

Grüße.
 
interessanter Ansatz - werd ich definitiv mal versuchen. Danke!
Ist zwar auch irgendwie von hinten durch die Brust ins Auge - aber wenns funktioniert... :D

Falls noch jemand einen Ansatz hat, warum es mit dem UPnP nicht mehr mag (und was man eventuell verändern muß - ich denk mal da haben sich womöglich nur irgendwelche Pfade geändert?) würde mich das trotzdem interessieren. Ist halt der unkompliziertere Weg, finde ich.
 
Moinsen


Falls noch jemand einen Ansatz hat, warum es mit dem UPnP nicht mehr mag (und was man eventuell verändern muß - ich denk mal da haben sich womöglich nur irgendwelche Pfade geändert?)
Ein Ansatz wäre die SCPDs, die die FRITZ!Box zur Verfügung stellt, zu sichten.
Quelle: http://fritz.box:49000/tr64desc.xml
Und ich meine hier hat sich tatsächlich der "Pfad" verändert in...
Code:
/upnp/control/wanipconnection1
 
das schaut doch mal gut aus... Ich bin dran gescheitert, überhaupt dieses "große" XML zu finden. Wie schon eingangs geschrieben: ich hatte das nur mal irgendwo(tm) gefunden und es tat was es sollte. Leider war da auch nicht großartig erklärt worden, warum es Dinge tut, wie es sie tut.

ich wusel mich da jetzt mal durch. Danke!
 
Mindestens ein DynDNS-Anbieter hat(te) einen Server am laufen, der auf eine Anfrage immer mit der IP des fragenden geantwortet hat.
Der Server war remote.selfhost.de
Mein Updatescript ist allerdings von 2014 - ich weiß nicht ob der Server noch existiert.

Edit: Jupp, der Server läuft noch. Damit kann man bequem innerhalb des Netzwerks die externe IP ermitteln.

Meine Aufgabe war es damals ständig die externe IP mit der DNS-Auflösung zu vergleichen, da mein damaliger Router (W921V) ständig Mist gemacht hat in seinem DDNS-Updater. Bei Abweichungen hat mein Script eine DDNS-Neuregistrierung angestoßen.
 
Zuletzt bearbeitet von einem Moderator:
nach "extern" rausklingeln nach der IP ist nicht das Problem - ich hätte einen Webspace, auf dem man mit einem PHP-Einzeiler auch die IP des aufrufenden Rechners rausbekommen kann. Aber das ist gerade, was ich vermeiden wollte, alle Nase lang einen Server dafür zu beschäftigen - wenn es die Fritzbox theoretisch irgendwo schon lokal herumflattern hat.

Ein Anpassen meines Scripts aus dem Eingangspost mit dem von koyaanisqatsi in diesem Post beschriebenen Parameter bringt leider nix - das Script meldet immer noch nix zurück :(

Ich habe jetzt mein altes Script "beerdigt" und lasse vom Dyn-IP modul der Fritzbox benutzerdefiniert ein Script auf meinem Raspi aufrufen, welches sich genau dann, wenn es gebraucht wird, um ein Update kümmert. (so ähnlich, wie es hier auch schon vorgeschlagen wurde).

mein Eingangsproblem ist damit (teilweise) gelöst - ich würde mich aber trotzdem freuen, wenn mir jemand zeigen kann, wie man die externe IP über UPnP wieder herausfinden kann.
 
unter Raspbian gibt es das Package miniupnpc - welches ein kleines handliches Tool namens "external-ip" installiert, mit dem die externe IP der Fritzbox über UPnP ausgelesen werden kann. Damit wird mein im Eingangsposting gezeigtes (nicht mehr funktionierendes) Script obsolet.

miniupnpc gibt es imho auch für andere Linux-Distributionen - im Zweifel mal in der jeweiligen Paketverwaltung nachsehen oder hier den sourcecode herunterladen und für das jeweilige System selbst compilieren.


Edit: Thread-Titel auf "Gelöst" umgestellt
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.