Skip to content

Troubleshooting

Geert van Zoest edited this page Mar 31, 2026 · 2 revisions

Troubleshooting

Exit codes

azure-ddns gebruikt specifieke exit codes om het type fout aan te geven:

Exit code Constante Betekenis Oorzaak
0 EXIT_OK Succes IP bijgewerkt, of IP ongewijzigd (skip), of lock bezet (skip)
1 EXIT_CONFIG Configuratiefout Een of meer environment variables ontbreken, of jq niet geïnstalleerd
2 EXIT_IP IP-detectiefout Alle IP-services onbereikbaar of retourneren ongeldig IP
3 EXIT_AUTH Authenticatiefout OAuth2 token request mislukt (onjuiste credentials)
4 EXIT_DNS DNS-fout Azure DNS API retourneert een fout bij GET of PUT

Veelvoorkomende problemen

Exit 1: Configuratiefout

Symptoom:

ERROR: AZURE_TENANT_ID is niet ingesteld
ERROR: AZURE_CLIENT_ID is niet ingesteld

Oorzaak: Environment variables zijn niet geladen.

Oplossing:

  1. Controleer of /etc/azure-ddns.env bestaat en alle 7 variabelen bevat
  2. Controleer de crontab: staat . /etc/azure-ddns.env && voor het script?
  3. Test handmatig: . /etc/azure-ddns.env && env | grep AZURE

Symptoom:

ERROR: jq is niet geinstalleerd (apt-get install jq)

Oplossing:

sudo apt-get install -y jq

Exit 2: IP-detectiefout

Symptoom:

ERROR: Geen geldige IP-service beschikbaar (geprobeerd: https://icanhazip.com https://checkip.amazonaws.com)

Oorzaak: Beide IP-services zijn onbereikbaar of retourneren geen geldig IPv4.

Diagnose:

# Test de services handmatig
curl -s --max-time 10 https://icanhazip.com
curl -s --max-time 10 https://checkip.amazonaws.com

# Controleer netwerkverbinding
ping -c 3 1.1.1.1

# Controleer DNS-resolutie
nslookup icanhazip.com

Mogelijke oorzaken:

  • Geen internetverbinding
  • DNS-resolutie werkt niet
  • Firewall blokkeert uitgaand HTTPS (poort 443)
  • Beide services hebben een storing (zeer zeldzaam)

Exit 3: Authenticatiefout

Symptoom:

ERROR: Token request mislukt (HTTP 401): {"error":"invalid_client"...}

Diagnose:

# Controleer of de Service Principal nog bestaat
az ad sp show --id <AZURE_CLIENT_ID>

# Controleer of het secret niet verlopen is
az ad app credential list --id <AZURE_CLIENT_ID> --query "[].{end:endDateTime}"

Mogelijke oorzaken:

  • AZURE_CLIENT_SECRET is verlopen → genereer een nieuw secret
  • AZURE_CLIENT_ID of AZURE_TENANT_ID is onjuist
  • De Service Principal is verwijderd

Exit 4: DNS-fout

Symptoom (GET):

ERROR: DNS record ophalen mislukt (HTTP 403): {"error":{"code":"AuthorizationFailed"...}}

Diagnose:

# Controleer RBAC-rol
az role assignment list --assignee <AZURE_CLIENT_ID> --scope "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Network/dnsZones/<zone>"

Mogelijke oorzaken:

  • Geen DNS Zone Contributor rol toegekend
  • Verkeerde AZURE_RESOURCE_GROUP of DNS_ZONE_NAME
  • De DNS zone bestaat niet (meer)

Symptoom (PUT):

ERROR: DNS record update mislukt (HTTP 403): ...

Oplossing: Zelfde als hierboven — controleer RBAC-rechten.

Lock file problemen

Symptoom:

WARN: Andere instantie draait, overgeslagen

Betekenis: Een andere instantie van azure-ddns is nog bezig (flock op /tmp/azure-ddns.lock).

Dit is normaal als het script nog draait (bijv. bij trage netwerkverbinding). Als het herhaaldelijk voorkomt zonder dat er een actief proces is:

# Controleer of er een azure-ddns proces draait
ps aux | grep azure-ddns

# Als er geen proces draait, is de lock veilig te verwijderen
rm /tmp/azure-ddns.lock

Let op: Door flock wordt de lock automatisch vrijgegeven als het proces eindigt. Een stale lock file hoeft normaal niet handmatig verwijderd te worden.

Debug modus

Voor gedetailleerde output:

VERBOSE=1 ./azure-ddns --force 2>&1

Dit toont:

  • Welke environment variables zijn geladen (exclusief het secret)
  • Welke IP-service wordt gebruikt
  • Het opgehaalde IP-adres
  • Het huidige DNS record
  • De DNS update payload en resultaat

Hulp vragen

Als je er niet uitkomt:

  1. Draai met verbose: VERBOSE=1 ./azure-ddns --force 2>&1
  2. Noteer de volledige output en het exit code
  3. Open een issue op GitHub met de output

Clone this wiki locally