Vielleicht braucht noch jemand so etwas oder etwas ähnliches:
https://github.com/montilo/NetcupHomeIPUpdater/
Ihr könnt damit bspw. Firewallregeln mit eurer Home-IP über die API updaten.
Vielleicht braucht noch jemand so etwas oder etwas ähnliches:
https://github.com/montilo/NetcupHomeIPUpdater/
Ihr könnt damit bspw. Firewallregeln mit eurer Home-IP über die API updaten.
Vielen Dank! ![]()
Könntest Du die Definition der zu aktualisierenden Regeln in eine separate Konfigurationsdatei auslagern? Dadurch wäre es leichter, Updates des Skripts einzuspielen.
Eine weitere URL zum Abfragen der öffentlichen IP-Adresse ist übrigens https://ifconfig.io/ip. Könnte also ggf. auch noch mit aufgenommen werden.
Für mich wird das Skript in der aktuellen Form leider nicht funktionieren, weil es nur IPv4 unterstützt, wenn ich es richtig gesehen habe. Mein Jumphost ist nur via IPv6 erreichbar. Vielleicht könnte man noch eine Option einbauen, mit der man dem Skript mitgeben kann, ob man IPv4 oder IPv6 verwenden möchte (oder ggf. beides). Dann müsste man vermutlich alle URLs durchlaufen, bis man die gewünschte(n) Adresse(n) ermittelt hat. api.ipy.ch und api.ipify.org sind nur über IPv4 erreichbar und liefern daher IPv4 zurück. Bei den anderen beiden bekomme ich meine IPv6-Adresse.
Vielleicht wäre es bei IPv6 auch sinnvoll, nur das /64-Präfix einzutragen, statt die konkrete IP-Adresse. Das ändert sich (bei mir zumindest) eher selten und man hat damit alle Rechner in dem Subnetz erschlagen. Die IP-Adresse wird (mindestens) bei jedem Rechnerneustart neu generiert. Daher vielleicht noch eine zweite Option einbauen, mit der man bestimmen kann, ob man nur das Präfix verwenden möchte?
Gibt es eigentlich für die API zwecks Firewall ne Doku?
Gibt es eigentlich für die API zwecks Firewall ne Doku?
Außer der OpenAPI-Spezifikation ist mir nichts bekannt.
Die kann man im SCP einsehen oder über diesen Link: https://www.netcup.com/en/helpcenter/…ontrolpanel/api
Wäre praktisch, wenn netcup noch Tags zu den Operationen hinzufügen würde. Mit dem Tag 'firewall' könnte man die relevanten Operationen schneller finden.
ipv6 und config in eine eigene datei auslagern klingt gut... mal sehen ob ich irgendwann bissl zeit hab... am besten man lagern die ip webseiten zur ermittlung auch in die config aus...
Eine weitere URL zum Abfragen der öffentlichen IP-Adresse ist übrigens https://ifconfig.io/ip.
Um die eigene IP abzufragen habe ich seit langem ein PHP-Skript auf 'ner eigenen Seite.
Man kann im eigenen "IP Rückgabe" PHP-Skript auch einen Push-Monitor für Uptime Kuma integrieren.
Dafür ruft das Skript einfach jedes mal auch kurz den Monitor über dessen URL auf:
https://www.meingeileruptimekumaserver.de/api/push/D267fhjugcw?status=up&msg=OK
Dann wird man auch gleich alarmiert wenn plötzlich keine Abfrage mehr von Zuhause stattfindet.
(so einen Monitor habe ich in anderer Konstellation laufen)
Hab gerade mal ne neue Version gepushed, welche nun die config in einer eigenen Datei hat und prinzipiell IPv6 können sollte. IPv6 kann ich leider selbst nicht testen. Wäre schön, wenn das jemand machen könnte.
schön wäre ja die verwendung von https://pypi.org/project/appdirs o.ä.
Hab gerade mal ne neue Version gepushed
Wow, das ging fix!
Ich habe das mal kurz gestestet und somit die REST-API zum ersten Mal verwendet. In der Readme steht, daß nach dem Anmelden über die URL die User-ID angezeigt wird. Soll das im Brower passieren oder durch die Skriptausgabe? Im Browser stand nur, daß das Login erfolgreich war und ich das Fenster schließen kann und in der Skriptausgabe konnte ich auch nichts sehen. Ich habe mir daher den Aufruf des userinfo-Endpunkt zusammengebastelt um die ID mit curl abzurufen.
Nachdem ich die User-ID in die Konfiguration übernommen hatte, hat das Eintragen meiner IPv6-Adresse dann direkt funktioniert! Mit einem Präfix habe ich es noch nicht probiert, da ich keinen ensprechenden Service gefunden habe, der das zurückliefert. Aber gibt es im Code überhaupt eine entsprechende Fallunterscheidung? Vielleicht wäre es doch sinnvoll, die gewünschte Präfixlänge in der config.yaml angeben zu können. Dann könnte das Skript aus der ermittelten Adresse das Präfix entsprechend erstellen - für eine einzelne Adresse könnte man 128 angeben oder halt z. B. 64 für ein /64. Grundsätzlich bräuchte man für die Präfix-Ermittlung aber eigentlich gar keinen externen Service, sondern man könnte es aus den lokalen Netzwerkeinstellungen auslesen (gibt es Leute, die hinter NAT66 sitzen?).
Zwischenzeitlich war http://www.servercontrolpanel.de hier nicht erreichbar und da hat das Skript eine Reihe Exceptions geschmissen.
Ansonsten ist mir noch aufgefallen, daß die Log-Datei für alle lesbar ist. Das sollte m. E. wie bei der config.yaml auf 600 eingestellt werden, da dort z. B. die Kundennummer drinsteht.
In der Readme würde ich noch den Hinweis ergänzen, daß die crontab-Zeit auf eine "zufällige" Zeit eingestellt werden sollte, damit nicht alle zum selben Zeitpunkt feuern. Eine DDOS-Attacke würde dadurch vermutlich nicht ausgelöst werden, aber muss ja nicht sein. ![]()
Die Beispiel-IP-Adressen in der Readme sollten durch entsprechende Dummy-Adressen aus den dafür vorgesehenen Bereichen ersetzt werden, also beispielsweise 203.0.113.0/24 für IPv4 und 2001:db8::/32 für IPv6 (vgl. https://www.rfc-editor.org/rfc/rfc5737 bzw. https://www.rfc-editor.org/rfc/rfc3849).
Die Ausgabe der internen User-ID hatte so nicht geklappt. Jetzt gibts ne neue Version bei der es funktionieren sollte.
Klingt gut. Kleine Anleitung zur API verwendung mit dem Skript wäre super...
Hey, coole Idee! ![]()
Gibt's zufällig auch eine Möglichkeit das Skript so auszuführen, dass man die IP Adresse per Parameter übergibt?
Bevor es die Firewall im SCP gab habe ich das nämlich immer so gelöst: Die Fritzbox hat die Eigenschaft, bei einem IP Wechsel einen die neuen IP Adressen in einem GET Request an eine URL zu senden
Ich habe mir damals ein Konstrukt gebaut, welches über einige Umwege die IP Adresse auf eine Textdatei auf meinem Server schreibt.
Die Textdatei wird mit Inotifywait überrwacht und bei Änderung wird eine iptables Regel angepasst. Ist etwas umständlich, aber funktioniert wunderbar und quasi unmittelbar nachdem sich die IP geändert hat. Ein Cronjob ist dann nicht mehr nötig.
Mann kann genau diese domain, die man von seinem DynDNS Anbieter hat per DNS auflösen lassen und hat zu immer die aktuellste IP. Die kann man dann verwenden.
Gibt's zufällig auch eine Möglichkeit das Skript so auszuführen, dass man die IP Adresse per Parameter übergibt?
Das fände ich auch eine super Sache! Idealerweise könnte man Source- und Destination-Adressen angeben.
Wenn man dann noch eine alternative Konfigurationsdatei übergeben könnte, wäre das Skript dazu geeignet, beliebige Policies mit beliebigen IP-Adressen zu aktualisieren. So könnte man beispielsweise eine weitere Konfigurationsdatei für NTP-Server anlegen, deren Adressen ggf. mal aktualisiert werden müssen. Und eine weitere Konfigurationen für Mail-Server, die man verwendet etc.