"Pinging" utilizzando il protocollo DNS

Aug 19 2020

Esiste una "buona pratica" accettata per verificare che la connessione di rete a un server DNS sia operativa e che il server risponda minimamente, oltre a emettere una richiesta di ricerca? Guardando il codice per Nagios come esempio particolare, noto che sembra essere orientato verso "questo nome si risolve?" piuttosto che "il server va bene?".

Ho provato una query nulla ma sembra essere ignorata. Ho provato a richiedere lo stato del server e mentre alcuni rispondono (in genere con "non implementato") altri ignorano la richiesta. Preferirei qualcosa di meglio che fare affidamento sul ping poiché ho visto molti sistemi server che ignorano i ping e per la seccatura extra di scherzare con le capacità, ecc.

Al momento sospetto che l'unica soluzione costantemente affidabile sarebbe quella di cercare qualcosa come google.com, supponendo che il server lo avrà memorizzato nella cache, spenderà uno sforzo minimo per rispondere: poiché ho bisogno di farlo ogni pochi minuti non lo faccio vuole sconvolgere il suo proprietario.

Risposte

2 telcoM Aug 19 2020 at 16:01

RFC 6303 elenca un numero di zone DNS essenzialmente a cui ogni server DNS dovrebbe essere in grado di rispondere, fondamentalmente per impedire che tali query vengano propagate inutilmente verso la radice della gerarchia DNS, se tali zone non vengono utilizzate per scopi locali.

Il più antico e noto di questi è la zona inversa per la rete di loopback e, in particolare, il record PTR per l'indirizzo IPv4 127.0.0.1 (ovvero l'FQDN 1.0.0.127.in-addr.arpa.). Fondamentalmente, ogni server DNS dovrebbe essere in grado di fornirlo senza interrogare nessun altro server DNS.

Quindi, anche se dig -x 127.0.0.1 @dns-server-addresstecnicamente è una query per un particolare record, è effettivamente applicabile come "il server è OK?" test, poiché si tratta di un record che ogni server DNS dovrebbe essere in grado di risolvere con il minimo sforzo e senza contattare nessun altro server DNS.

La query per il nome localhost.dovrebbe essere praticamente altrettanto buona, basta notare che dovresti includere esplicitamente il punto alla fine per indicare che il nome che stai interrogando è già completamente qualificato, per evitare che lo strumento che stai utilizzando possa aggiungere il suffisso del tuo dominio locale che potrebbe distorcere i risultati.