Passa al contenuto principale

4. Selezione dell'indirizzo di origine della risposta del server (Server Reply Source Address Selection)

Quasi tutti (se non tutti) i client DNS si aspettano che l'indirizzo da cui ricevono una risposta sia lo stesso a cui hanno inviato la query che ha provocato la risposta. Questo vale sia che il client sia un server che agisce come client ai fini della risoluzione ricorsiva delle query, sia un semplice client resolver. L'indirizzo, insieme all'identificatore (ID) nella risposta, viene utilizzato per distinguere la risposta e per filtrare le risposte contraffatte. Se questo fosse intenzionale quando il DNS è stato progettato non è noto, ma ora è un dato di fatto.

Alcuni host multi-homed che eseguono server DNS generano risposte utilizzando un indirizzo di origine che non è lo stesso dell'indirizzo di destinazione del pacchetto di richiesta del client. Tali risposte vengono scartate dal client, poiché l'indirizzo di origine della risposta non corrisponde all'indirizzo di origine dell'host a cui il client ha inviato la richiesta originale. Cioè, appare come una risposta non sollecitata.

4.1. Selezione dell'indirizzo di origine UDP (UDP Source Address Selection)​

Per evitare questi problemi, l'indirizzo IP nell'header IP della risposta deve essere l'indirizzo nel campo dell'indirizzo di destinazione dell'header IP del pacchetto contenente la query che ha causato la risposta, per UDP. Cioè, quando il server genera una risposta a una query arrivata via UDP, il server deve impostare l'indirizzo di origine dell'header IP della risposta sull'indirizzo che era nel campo dell'indirizzo di destinazione dell'header IP del pacchetto contenente la query che ha causato la risposta. Questo è l'unico caso in cui l'indirizzo utilizzato come origine di una risposta può essere diverso dall'indirizzo utilizzato come origine della query (o richiesta). Si noti che l'indirizzo utilizzato come origine della risposta è lo stesso dell'indirizzo utilizzato come destinazione della query, e non è quindi un indirizzo "spoofato".

Per TCP, l'indirizzo utilizzato come origine della risposta è sempre lo stesso dell'indirizzo utilizzato come destinazione della query, e il numero di porta utilizzato come origine della risposta è sempre lo stesso del numero di porta utilizzato come destinazione della query. Questo è intrinseco al protocollo TCP.

Per UDP, l'indirizzo di origine della risposta deve essere l'indirizzo di destinazione della query, e la porta di origine della risposta deve essere la porta di destinazione della query. La risposta deve essere inviata dalla porta a cui è diretta, eccetto nel caso di un server che utilizza una porta diversa per motivi di sicurezza o altri motivi.

4.2. Selezione del numero di porta (Port Number Selection)​

Tutte le risposte alle query devono essere dirette alla porta da cui è stata inviata la query. Se la query è stata ricevuta via TCP, questo è intrinseco al protocollo di trasporto. Per le query ricevute via UDP, il server deve prendere nota della porta di origine e utilizzarla come porta di destinazione della risposta. La risposta dovrebbe essere sempre inviata dalla porta a cui è diretta, eccetto nel caso particolare di un server che utilizza una porta diversa per motivi di sicurezza o altri motivi. Questa sarà di norma la porta ben nota assegnata alle query DNS [RFC1700].