DynDNS per bestimmten curl-Befehl



  • Hallo, kann mir jemand sagen, ob die pfSense es irgendeine auf die Reihe bekommen könnte, einen DynDNS Eintrag per folgendem curl-Befehl zu aktualisieren?

    curl -X PUT --user {USER}:{PASSWORD} https://*****/dns/custom/{HOSTNAME}
    

    Der "custom" Eintrag hat bei mir leider nicht funktioniert.



  • Ich würde hierfür einen Cronjob einrichten.



  • Hmm, ich habe mich mit Cronjobs noch nie beschäftigt. Gibt es dort eine Möglichkeit die Sache über ein bestimmtes Interface (nicht das Standard Gateway) ausführen zu lassen?



  • @un1que:

    Hmm, ich habe mich mit Cronjobs noch nie beschäftigt. Gibt es dort eine Möglichkeit die Sache über ein bestimmtes Interface (nicht das Standard Gateway) ausführen zu lassen?

    Nö, Cronjobs sind an sich ja nur zeitgesteuerte Aufgaben. ;)
    Bei curl kannst du bspw. mit dem Parameter "–interface <name>" ein Interface mitgeben, welches genutzt werden soll.

    –interface <name>Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example could look like:

    curl --interface eth0:1 https://www.example.com/

    If this option is used several times, the last one will be used.</name></name>



  • Top, danke! Curl mit dem Interface-Parameter funktioniert schon mal, jetzt muss ich mich nur noch einlesen, wie die Einrichtung der Cronjobs funktioniert.



  • @un1que:

    […], jetzt muss ich mich nur noch einlesen, wie die Einrichtung der Cronjobs funktioniert.

    Du kannst dir über die GUI-Paketverwaltung (System -> Package Manager) das Paket "cron" installieren.
    Dann kannst du bequem via Services -> Cron.. deine Cronjobs pflegen. :)



  • Ja, das Paket habe ich schon mal vor längerem gesehen und deswegen gleich installiert. Allerdings gestaltet sich die Sache für mich etwas schwieriger, da man ja nicht einfach so den curl-Befehl eingeben kann, sondern irgendwie erst eine Datei mit bestimmter Formatierung(?) erstellen muss, und auf diese dann verlinken soll?



  • @un1que:

    Allerdings gestaltet sich die Sache für mich etwas schwieriger, da man ja nicht einfach so den curl-Befehl eingeben kann, sondern irgendwie erst eine Datei mit bestimmter Formatierung(?) erstellen muss, und auf diese dann verlinken soll?

    Nö, du kannst auch direkt dein curl-Commando dort eintragen.
    Hierbei musst du nur darauf achten, dass du den absoluten Pfad zum curl-Binary angibst.

    /usr/local/bin/curl -X PUT –user meinbenutzer:meinpasswort https://example.com/dns/custom/meinhostname

    Im Anhang findest du einen Beispiel-Cron, welcher zur jeder vollen Stunde läuft, egal welcher Tag und/oder Monat es ist.

    Sprich:
    03.03.2018 00:00:00 UTC
    03.03.2018 01:00:00 UTC
    03.03.2018 02:00:00 UTC
    03.03.2018 03:00:00 UTC
    etc.

    Sofern dir der Output des Kommandos egal ist, kannst du ans Ende noch ein >/dev/null 2>&1 dranhängen.
    Somit leitest du stdin/stdout/stderr (Siehe https://en.wikipedia.org/wiki/Standard_streams) nach /dev/null um. Sprich es wird nichts auf der Shell ausgegeben.

    Möchtest du die Ausgabe gerne irgendwo speichern (Bspw. in /test.txt), so hänge folgendes an: > test.txt




  • Ach, so einfach war das ;D
    Super, jetzt läuft es rund! Danke nochmal für die schnelle Hilfe!


  • Moderator

    Das Ganze mit einem Cron zu machen ist aber schon Kanonen auf Spatzen zu werfen!? :o

    Der DynDNS Service hat ja eine Einstellung für "Custom Service". Die ist ja nicht umsonst da. Nur weil es in irgendwelchen Anleitungen steht, dass die das mit CURL machen, muss das ja nicht zwangsläufig so gemacht werden. Es wird nur ein Zugriff auf die entsprechende URL benötigt, und das kann pfSense mit dem DynDNS Service selbst erledigen, das muss kein händischer CURL Aufruf sein. Zudem hat dein Cron leider keinerlei Möglichkeit, zu sehen, wann das Interface sich aktualisiert und kann nur störrisch alle 5/10min laufen - viele DynDNS Services haben aber was gegen zu häufige Aktualisierung. Daher lieber das richtige Werkzeug nehmen, nicht nur den Hammer auspacken, weil man den kennt und jedes Problem "nageln" :D

    Gruß



  • Ok, magst Recht haben, aber bei mir hat der custom DynDNS Eintrag nicht funktioniert. Wenn du eine Idee hast, wie und was genau ich anpassen könnte, um es lauffähig zu machen, dann würde ich es auch gerne so umsetzen.


  • Moderator

    Dazu müsste ich erstmal wissen, WAS an deinem Custom Eintrag nicht funktioniert hat ;)

    Alles was ich sehe ist:

    {USER}:{PASSWORD} https://*****/dns/custom/{HOSTNAME}

    User/Pass sieht mir in dem Kontext nach HTAccess Zugriffsbeschränkung. Wenn du die ***** rein machst, kann man natürlich nicht sagen, was es für ein Dienstleister ist o.ä., daher wird das schwer ohne etwas mehr Info. Ansonsten:

    Services / Dynamic DNS / Dynamic DNS Clients / Edit

    • Service Type: Custom
    • Interface to monitor: WAN
    • Send updates from: WAN
    • Verbose logging on
    • Username: {USER}
    • Password: {PASSWORD}
    • Update URL: https://*****/dns/custom/{HOSTNAME}

    Je nachdem was beim manuellen Aufruf von https://*****/dns/custom/{HOSTNAME} ausgegeben wird, kann man ResultMatch noch mit einstellen, aber das wars.