Verständnisfrage DYNDNS auf pfS hinter Provider Modem
-
Na da kann man doch dann die eigene Variable laden und muss nicht die WAN-IP fressen die bei den vordefinierten gegeben ist.
Oder bin ich gerade auf der Holzbrücke unterwegs? -
@nocling Versteh ich gerade nicht, sorry, vielleicht zu spät heute. Warum welche WAN IP die man nicht will? Hä?
Man stellt das Interface ein (WAN1/WAN2/blubb) und wenn pfSense ne RFC1918 Adresse am Interface erschnüffelt, wird automatisch gegen den IP Service der eingestellt ist gegangen (default checkip.dyndns.org, kann man beliebig eigene hinterlegen). Ergo stimmt die rückgelieferte IP4 immer mit dem überein, was das Interface hat. Hab da noch nie Probleme gehabt egal an welchem der drei WANs.
-
-
Ok wie das im Detail funktioniert habe ich noch nicht nachgelesen bzw. untersucht.
Bin jetzt von Doppeltem NAT ausgegangen und da ist die WAN IP nur über den Server per Abfrage zu ermitteln.
Hatte Noplan so verstanden, das er so einen Fall hat und dann der Dienst das nicht schnell automatisch checkt und wie du sagst das Log zumüllt.
Was ich nicht verstehe, was ist so schwer dran alle 5 min zu schauen ob die IP noch der im Service entspricht, wenn ja weiter pennen, wenn nicht Dyndns Update starten. -
@nocling said in Verständnisfrage DYNDNS auf pfS hinter Provider Modem:
Bin jetzt von Doppeltem NAT ausgegangen und da ist die WAN IP nur über den Server per Abfrage zu ermitteln.
ja das ist korrekt (Großbauern-Box ---- pfS ----- LAN (whatever)
was ist so schwer dran
kann ich dir noch nicht sagen, weil noch nicht ausporbiert.
... aber ... zuerst nutz ich mal die Forum Sucheob irgendwer das schon hier gepostet hat, vielleicht wird man ja fündig if not naja probier ich es halt selbst, wie du sagst ist das script ja keine rocket science udn was es machen muss ist in diesem Post ja sauber genug beschrieben.
no dennNP
-
Ich führe auch öfters /etc/rc.dyndns.update aus. Wenn es da was eleganteres gäbe, ich wäre ebenfalls interessiert.
-
Das eigentliche Update-Script besteht ja aus zwei Komponenten, die Ermittlung der eigenen IP und der Vergleich mit der gecacheten DynDNS-IP und wenn die voneinander abweichen die Ausführung des Updates beim DynDNS-Provider.
Den ersten Teil könnte man auslagern in ein eigenes Script. Die Ermittlung ist eigentlich nur ein HTTP GET auf die Adresse http://checkip.dyndns.org und dem ausparsen der IP aus der Rückgabe ("Current IP Address: xxx.xxx.xxx.xxx"). Man macht also den Vergleich da einfach nur vorweg und führt das eigentliche Script nur bei Abweichung dann aus. Da der Check wirklich nur aus dem Get besteht kann man den auch in sehr kurzen Perioden ausführen.
-
@wkn Kannst Du sagen, warum quasi das verlinkte Script anscheinend das Update dennoch macht, selbst wenn sich die IP nicht geändert hat? Weil wäre das nicht, hätten wir ja auch das Problem nicht. Oder anders gefragt, seltsam, dass nicht ein light weight script dafür schon an Board ist.
-
weil ich um kurz vor 12:00 noch immer nicht dazu gekommen bin,
vielleicht macht hier irgendwer mal den anfang und schreibt die
script zeilen hier in den Post,dann hätt ma gleich auch wieder wieder was für die community erledigt ...
-
Laut Log wird nur die Ermittlung und der Vergleich da durchgeführt, nicht das Update, wenn sich nichts geändert hat oder noch keine 25 Tage vergangen sind. Einziges "Problem" sind die 5 oder 6 Zeilen im Log da bei jedem Aufruf des Scripts. Darum sollte man da ein eigenes Script vorschalten, das quasi den ersten Teil macht:
- Holen der Current IP (über checkip.dyndns.org)
- Holen der Cached IP (muss man schauen wie)
- Vergleichen und wenn unterschiedlich das originale Script dann erst aufrufen
Und dieses Script könnte man dann im Cron platzieren und ggf. im Minutenbereich aufrufen lassen
-
@wkn Verstanden! Mich stört das mit den Log-Einträgen nicht, die lösche ich eh täglich, wenn ich mir das Firewall-Log angeschaut habe.
-
Ich mache das DYNDNS-Update auch mit einem kleinen Script per cron - im vorliegenden Fall alle vier Stunden, aber das Script kann prinzipiell auch minütlich aufgerufen werden. Die Logdatei wird - ebenfalls per Script und cron - automatisch auf eine bestimmte Zahl an Einträgen gekürzt.
Gruß Jürgen
<?php $timestamp = time(); $datum = date("d.m.Y",$timestamp); $uhrzeit = date("H:i",$timestamp); $Host = "xyz.nsupdate.info"; $IP_Abfrage = "https://ipv4.nsupdate.info/myip"; $IP1 = file_get_contents($IP_Abfrage); $IP2 = gethostbyname($Host); $check1 = ip2long($IP1); $check2 = ip2long($IP2); if ($check1 == -1 || $check1 === FALSE) { $resonse = "IP konnte nicht ermittelt werden"; } elseif ($check2 == -1 || $check2 === FALSE) { $response = "Service nicht erreichbar"; } else { if ($IP1 == $IP2) { $response = "IP noch aktuell"; } else { $response = file_get_contents('https://xyz.nsupdate.info:xxxxxxx@ipv4.nsupdate.info/nic/update'); if (strpos($response,"good") !== FALSE || strpos($response,"nochg") !== FALSE) { $response = "IP aktualisiert - " . $response; } else { $response = "Update fehlgeschlagen"; } } }; $info = $datum . " " . $uhrzeit . " - " . $response; $URL = 'https://user:pass@meinedomain.tld/verzeichnis/nsupdate_log.php?response='.urlencode($info); $handle = fopen($URL, "r"); ?>
<?php $Log = $_GET['response']; $logfile = "nsupdate.log"; $zeilen = 60; $handle = fopen($logfile, "a+") or die('Datei kann nicht zum Schreiben geöffnet werden'); fwrite($handle, $Log . "\n"); fclose($handle); file_put_contents($logfile, implode("\n", array_slice(explode("\n", file_get_contents($logfile)), -($zeilen+1)))); ?>