-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
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 |
Symptoom:
ERROR: AZURE_TENANT_ID is niet ingesteld
ERROR: AZURE_CLIENT_ID is niet ingesteld
Oorzaak: Environment variables zijn niet geladen.
Oplossing:
- Controleer of
/etc/azure-ddns.envbestaat en alle 7 variabelen bevat - Controleer de crontab: staat
. /etc/azure-ddns.env &&voor het script? - 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 jqSymptoom:
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.comMogelijke oorzaken:
- Geen internetverbinding
- DNS-resolutie werkt niet
- Firewall blokkeert uitgaand HTTPS (poort 443)
- Beide services hebben een storing (zeer zeldzaam)
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_SECRETis verlopen → genereer een nieuw secret -
AZURE_CLIENT_IDofAZURE_TENANT_IDis onjuist - De Service Principal is verwijderd
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 Contributorrol toegekend - Verkeerde
AZURE_RESOURCE_GROUPofDNS_ZONE_NAME - De DNS zone bestaat niet (meer)
Symptoom (PUT):
ERROR: DNS record update mislukt (HTTP 403): ...
Oplossing: Zelfde als hierboven — controleer RBAC-rechten.
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.lockLet op: Door
flockwordt de lock automatisch vrijgegeven als het proces eindigt. Een stale lock file hoeft normaal niet handmatig verwijderd te worden.
Voor gedetailleerde output:
VERBOSE=1 ./azure-ddns --force 2>&1Dit 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
Als je er niet uitkomt:
- Draai met verbose:
VERBOSE=1 ./azure-ddns --force 2>&1 - Noteer de volledige output en het exit code
- Open een issue op GitHub met de output