🔍 Verificare Record DNS con Bash: Script Pratico per Admin Reti

In ambienti aziendali o laboratori, è fondamentale sapere se i propri record DNS (A, MX, PTR, SRV…) sono correttamente configurati e risolvibili. Ecco uno script in Bash che permette di eseguire questa verifica in modo semplice, elegante e documentato — con output in un file di log.

🧪 Cos’è questo script?

Un semplice tool scritto in Bash che:

  • interroga una lista personalizzata di record DNS
  • gestisce diversi tipi (A, MX, PTR, SRV)
  • salva i risultati in un file di log con timestamp
  • usa dig per ottenere le risposte dal server DNS specificato

📜 Il codice

#!/bin/bash

# 🔧 Configura IP del tuo DNS server (es. Unbound locale)
DNS_SERVER="192.168.3.123"

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOGFILE="$SCRIPT_DIR/dnscheck.log"

# 🧹 Pulizia del log: ogni esecuzione parte da zero
> "$LOGFILE"

DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "🔍 DNS Check — $DATE" >> "$LOGFILE"
echo "==========================" >> "$LOGFILE"

# 📋 Lista dei record da interrogare: nome,tipo
RECORDS=$(cat <<EOF
smtp.internal2.lan,A
internal2.lan,MX
192.168.3.83,PTR
_ldap._tcp.internal2.lan,SRV
_kerberos._tcp.internal2.lan,SRV
_kerberos._udp.internal2.lan,SRV
_ldap._tcp.gc._msdcs.internal2.lan,SRV
ns8.internal.lan,A
internal.lan,MX
192.168.3.76,PTR
dc1.ad.internal.lan,A
_ldap._tcp.internal.lan,SRV
_kerberos._tcp.internal.lan,SRV
_kerberos._udp.internal.lan,SRV
_ldap._tcp.gc._msdcs.internal.lan,SRV
EOF
)

# 🔄 Loop per interrogare ogni record e verificare risposta
IFS=$'\n'
for entry in $RECORDS; do
    NAME=$(echo "$entry" | cut -d',' -f1)
    TYPE=$(echo "$entry" | cut -d',' -f2)

    echo -ne "🔎 [$TYPE] $NAME... " >> "$LOGFILE"

    if [ "$TYPE" = "PTR" ]; then
        RESULT=$(dig -x "$NAME" @$DNS_SERVER +short)
    else
        RESULT=$(dig "$NAME" "$TYPE" @$DNS_SERVER +short)
    fi

    if [ -z "$RESULT" ]; then
        echo "❌ Nessuna risposta" >> "$LOGFILE"
    else
        echo "$RESULT" >> "$LOGFILE"
    fi
done

echo -e "✅ Fine verifica\n" >> "$LOGFILE"

🛡️ Come usarlo

  1. Imposta il server DNS in DNS_SERVER (es. 192.168.3.123).
  2. Personalizza la lista RECORDS con i nomi e tipi che vuoi controllare.
  3. Salva lo script come dnscheck.sh, rendilo eseguibile (chmod +x dnscheck.sh) ed eseguilo.
  4. I risultati verranno salvati in dnscheck.log nella stessa directory.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *