Aller au contenu principal

4. Sélection de l'adresse source de réponse du serveur (Server Reply Source Address Selection)

Presque tous (sinon tous) les clients DNS attendent que l'adresse depuis laquelle ils reçoivent une réponse soit la même que l'adresse vers laquelle ils ont envoyé la requête ayant suscité la réponse. Cela est vrai que le client soit un serveur agissant comme client aux fins de résolution de requête récursive, ou un simple client résolveur. L'adresse, ainsi que l'identifiant (ID) dans la réponse, est utilisée pour désambiguïser la réponse, et pour filtrer les réponses falsifiées. Que cela ait été prévu lors de la conception du DNS n'est pas connu, mais c'est désormais un fait.

Certains hôtes multi-hébergés exécutant des serveurs DNS génèrent des réponses en utilisant une adresse source qui n'est pas la même que l'adresse de destination du paquet de requête du client. De telles réponses sont ignorées par le client, car l'adresse source de la réponse ne correspond pas à l'adresse source de l'hôte vers lequel le client a envoyé la requête originale. C'est-à-dire, cela apparaît comme une réponse non sollicitée.

4.1. Sélection de l'adresse source UDP (UDP Source Address Selection)​

Pour éviter ces problèmes, l'adresse IP dans l'en-tête IP de la réponse doit être l'adresse dans le champ d'adresse de destination de l'en-tête IP du paquet contenant la requête ayant causé la réponse, pour UDP. C'est-à-dire, lorsque le serveur génère une réponse à une requête arrivée via UDP, le serveur doit définir l'adresse source de l'en-tête IP de la réponse à l'adresse qui était dans le champ d'adresse de destination de l'en-tête IP du paquet contenant la requête ayant causé la réponse. C'est le seul cas où l'adresse utilisée comme source d'une réponse peut être différente de l'adresse utilisée comme source de la requête (ou de la demande). Notez que l'adresse utilisée comme source de la réponse est la même que l'adresse utilisée comme destination de la requête, et n'est donc pas une adresse « usurpée ».

Pour TCP, l'adresse utilisée comme source de la réponse est toujours la même que l'adresse utilisée comme destination de la requête, et le numéro de port utilisé comme source de la réponse est toujours le même que le numéro de port utilisé comme destination de la requête. Cela est inhérent au protocole TCP.

Pour UDP, l'adresse source de la réponse doit être l'adresse de destination de la requête, et le port source de la réponse doit être le port de destination de la requête. La réponse doit être envoyée depuis le port vers lequel elle est dirigée, sauf dans le cas d'un serveur qui utilise un port différent pour des raisons de sécurité ou autres.

4.2. Sélection du numéro de port (Port Number Selection)​

Toutes les réponses aux requêtes doivent être dirigées vers le port depuis lequel la requête a été envoyée. Si la requête a été reçue via TCP, cela est inhérent au protocole de transport. Pour les requêtes reçues via UDP, le serveur doit prendre note du port source, et l'utiliser comme port de destination de la réponse. La réponse doit toujours être envoyée depuis le port vers lequel elle est dirigée, sauf dans le cas particulier d'un serveur utilisant un port différent pour des raisons de sécurité ou autres. Cela sera généralement le port bien connu assigné aux requêtes DNS [RFC1700].