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
digper 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
- Imposta il server DNS in
DNS_SERVER(es. 192.168.3.123). - Personalizza la lista RECORDS con i nomi e tipi che vuoi controllare.
- Salva lo script come
dnscheck.sh, rendilo eseguibile (chmod +x dnscheck.sh) ed eseguilo. - I risultati verranno salvati in
dnscheck.lognella stessa directory.