Comment puis-je déterminer si mon résolveur DNS public prend en charge l'extension EDNS Client Subnet (ECS) ?

Dernière mise à jour : 17/06/2020

J'utilise des stratégies de routage basées sur la géoproximité, la géolocalisation et la latence dans Amazon Route 53. Je dois trouver l'adresse IP de mon résolveur DNS public et déterminer s'il prend en charge l'extension EDNS Client Subnet (ECS). Comment procéder ?

Solution

Utilisez des jeux d'enregistrements DNS spécifiques pour rechercher l'adresse IP publique du résolveur DNS, puis déterminez la prise en charge de l'extension EDNS Client Subnet

Interrogez les jeux d'enregistrements DNS suivants pour obtenir une sortie qui inclut l'adresse IP de votre résolveur DNS. La sortie fournit également des détails sur l'extension EDNS Client Subnet, si votre résolveur la prend en charge.

Remarque : si vous utilisez Windows, vous pouvez utiliser nslookup pour exécuter ces commandes.

1.    Utilisez le jeu d'enregistrements TXT « edns-client-sub.net » :

$ dig edns-client-sub.net TXT +short
$ dig edns-client-sub.net TXT +short @Resolver_IP

Si l'extension EDNS Client Subnet n'est pas prise en charge, la sortie se présente comme suit :

"{'ecs':'False','ts':'1516207420.29','recursive':{'cc':'US','srcip':'34.241.148.86','sport':'19407'}}"

Dans cet exemple, 34.241.148.86 est l'adresse IP du résolveur qui envoie la requête DNS au serveur de noms faisant autorité. « 'ecs':'False' » indique que le résolveur DNS ne prend pas en charge l'extension EDNS Client Subnet.

Si l'extension EDNS Client Subnet est prise en charge, la sortie se présente comme suit :

"{'ecs_payload':{'family':'1','optcode':'0x08','cc':'IN','ip':'27.34.254.0','mask':'24','scope':'0'},'ecs':'True','ts':'1589300452.18','recursive':{'cc':'US','srcip':'172.253.244.1','sport':'50821'}}"

Dans cet exemple, 172.253.244.1 est l'adresse IP du résolveur qui envoie la requête DNS au serveur de noms faisant autorité. « 'ip':'27.34.254.0' » et « 'mask':'24' » indiquent les informations réseau du client. « 'ecs':'True' » indique que le résolveur DNS prend en charge l'extension EDNS Client Subnet.

2.    Utilisez le jeu d'enregistrements TXT « o-o.myaddr.l.google.com » :

$ dig +nocl TXT o-o.myaddr.l.google.com +short
$ dig +nocl TXT o-o.myaddr.l.google.com @Resolver-IP +short

Si l'extension EDNS Client Subnet n'est pas prise en charge, la sortie se présente comme suit :

"203.201.60.5"

Dans cet exemple, la sortie indique que le résolveur avec l'adresse IP 203.201.60.5 ne prend pas en charge l'extension EDNS Client Subnet.

Si l'extension EDNS Client Subnet est prise en charge, la sortie se présente comme suit :

"172.253.220.1"
"edns0-client-subnet 27.34.254.0/24"

Dans cet exemple, la sortie indique que le résolveur avec l'adresse IP 172.253.220.1 prend en charge l'extension EDNS Client Subnet. Les informations du sous-réseau client 27.34.254.0/24 sont envoyées au serveur de noms faisant autorité.

Si vous utilisez DIG 9.9.3 ou version ultérieure, vous pouvez également transmettre le sous-réseau client à l'aide de dig :

$ dig +nocl TXT o-o.myaddr.l.google.com @8.8.8.8 +subnet=35.163.158.0/24 +short
"74.125.18.67"
"edns0-client-subnet 35.163.158.0/24"

Dans cet exemple, la première ligne indique l'adresse IP du résolveur DNS. La deuxième ligne fournit « edns0-client-subnet », une valeur qui est transmise au serveur de noms faisant autorité.

3.    Utilisez le jeu d'enregistrements « resolver-identity.cloudfront.net ».
Remarque : cette opération renvoie uniquement l'adresse IP publique du résolveur DNS.

$ dig resolver-identity.cloudfront.net +short
203.201.60.5

Dans cet exemple, 203.201.60.5 est l'adresse IP du résolveur récursif.

4.    Utilisez le jeu d'enregistrements TXT « rs.dns-oarc.net ».
Remarque : cette opération renvoie uniquement l'adresse IP publique du résolveur DNS.

$ dig +short rs.dns-oarc.net txt @8.8.8.8
rst.x4050.rs.dns-oarc.net.
rst.x4058.x4050.rs.dns-oarc.net.
rst.x4064.x4058.x4050.rs.dns-oarc.net.
"172.217.34.197 DNS reply size limit is at least 4064"
"172.217.34.197 sent EDNS buffer size 4096"

Dans cet exemple, 172.217.34.197 est l'adresse IP publique du résolveur Anycast (8.8.8.8).

Remarque : pour les services DNS Anycast tels que 8.8.8.8, les adresses IP du résolveur changent. Dans ce cas, utilisez « for loop » pour obtenir une liste d'adresses IP publiques utilisées par le résolveur récursif à l'emplacement respectif.

for i in {1..10}; do dig +short resolver-identity.cloudfront.net @8.8.8.8; sleep 11; done; 
172.217.38.5
172.217.34.195
172.253.244.3
172.217.34.69

Dans cet exemple, le service DNS Anycast 8.8.8.8 a utilisé différentes adresses IP publiques pour se connecter au serveur de noms faisant autorité.

Analysez les journaux de requêtes DNS Route 53 pour déterminer la prise en charge de l'extension EDNS Client Subnet

Utilisez la journalisation des requêtes DNS pour trouver l'adresse IP du résolveur DNS et obtenir les informations EDNS Client Subnet qui sont transmises dans les requêtes DNS aux serveurs de noms Route 53.

Si l'extension EDNS Client Subnet est prise en charge, la sortie se présente comme suit :

1.0 2020-05-10T10:39:49Z Z07163611M5WTAAAAA5F8 testwebsite.com A NOERROR UDP IAD79-C1 172.253.214.14 35.173.125.0/24

Dans cet exemple, le réseau de l'ordinateur client (35.173.125.0/24) est inclus dans la sortie. Le réseau est inclus, car le résolveur qui transmet les requêtes DNS à Route 53 prend en charge l'extension EDNS Client Subnet. La requête a été envoyée à partir de l'adresse IP du résolveur 172.253.214.14.

Si l'extension EDNS Client Subnet n'est pas prise en charge, la sortie se présente comme suit :

1.0 2020-05-10T10:39:34Z Z07163611M5WTAAAAA5F8 testwebsite.com A NOERROR UDP IAD79-C1 35.170.83.67 -

L'adresse IP du résolveur 35.170.83.67 est incluse dans la sortie. Cependant, les informations de sous-réseau client ne sont pas transmises, comme indiqué par le signe « - » dans le dixième champ.