Skip to main content

Automatisches Update eines DNS Records

Quelle der Code-Beispiele: https://dns.hetzner.com/api-docs#tag/Records

Beispieldaten:

ID = ID123456789
NAME = test
TEMP_IP = 10.0.0.1
CURRENT_IP = 10.0.0.1
ZONE_ID = ZONEID123456789
API_TOKEN = 7tgu7f86uf765tri7g786gi7gi7g

In der ZONE file einen Eintrag für eine Subdomain erstellen. NAME durch die Bezeichnung der Subdomain ersetzen, z. B. test von der Subdomain test.metal.zone.

NAME 0 IN A TEMP_IP

API_TOKEN erstellen

  1. In der Hetzner Cloud anmelden und in den DNS Bereich wechseln.
  2. Dort im Menü unter API Tokens ein neues Token erstellen und abspeichern

Abrufen aller Zonen, um die ID zu identifizieren. API_TOKEN durch das zuvor erhaltene Token ersetzen!

curl "https://dns.hetzner.com/api/v1/records" -H 'Auth-API-Token: API_TOKEN'

Die Liste wird ungefähr wie folgt aussehen.

{
    "records": [
        {
            "id": "ID",
            "type": "A",
            "name": "NAME",
            "value": "CURRENT_IP",
            "zone_id": "ZONE_ID",
            "created": "2020-04-07 01:25:08 +0000 UTC",
            "modified": "2020-04-07 01:25:08 +0000 UTC"
        },
        ...
    ]
}

Die ID und ZONE_ID merken.

Eine Datei mit dem Namen update_dns.sh anlegen und den angepassen Inhalt einfügen.
Die Werte ID, API_TOKEN, NAME und ZONE_ID müssen ersetzt werden!

#!/bin/bash
 
CUR_IP="$(dig +short myip.opendns.com @resolver1.opendns.com)"
 
curl -X "PUT" "https://dns.hetzner.com/api/v1/records/ID" \
     -H 'Content-Type: application/json' \
     -H 'Auth-API-Token: API_TOKEN' \
     -d $'{
  "value": "'${CUR_IP}'",
  "ttl": 0,
  "type": "A",
  "name": "NAME",
  "zone_id": "ZONE_ID"
}'

Das Script mit Ausführungsrechten versehen.

chmod +x update_dns.sh

Wenn das Script nun ausgeführt wird, aktualisiert es den DNS Eintrag mit der aktuellen öffentlichen IP (Internetadresse).