ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

Une faible latence DNS est la clĂ© d’une navigation Internet rapide. Pour le minimiser, il est important de sĂ©lectionner soigneusement les serveurs DNS et relais anonymes. Mais la premiĂšre Ă©tape consiste Ă  se dĂ©barrasser des requĂȘtes inutiles.

C'est pourquoi DNS a été conçu à l'origine comme un protocole hautement mis en cache. Les administrateurs de zone définissent une durée de vie (TTL) pour les entrées individuelles, et les résolveurs utilisent ces informations lors du stockage des entrées en mémoire pour éviter un trafic inutile.

La mise en cache est-elle efficace ? Il y a quelques annĂ©es, mes petites recherches ont montrĂ© que ce n'Ă©tait pas parfait. Jetons un coup d'Ɠil Ă  l'Ă©tat actuel des choses.

Pour collecter les informations que j'ai corrigĂ©es Serveur DNS cryptĂ© pour enregistrer la valeur TTL de la rĂ©ponse. Il est dĂ©fini comme la durĂ©e de vie minimale de ses enregistrements pour chaque demande entrante. Cela donne un bon aperçu de la rĂ©partition TTL du trafic rĂ©el et prend Ă©galement en compte la popularitĂ© des requĂȘtes individuelles. La version corrigĂ©e du serveur a fonctionnĂ© pendant plusieurs heures.

L'ensemble de donnĂ©es rĂ©sultant comprend 1 583 579 enregistrements (nom, qtype, TTL, horodatage). Voici la distribution globale du TTL (l'axe X correspond au TTL en secondes) :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

Mis Ă  part une lĂ©gĂšre augmentation Ă  86 400 (principalement pour les enregistrements SOA), il est assez clair que les TTL se situent dans la fourchette basse. Regardons de plus prĂšs:

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

D'accord, les TTL supĂ©rieurs Ă  1 heure ne sont pas statistiquement significatifs. Concentrons-nous ensuite sur la plage 0−3600 :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

La plupart des TTL durent de 0 Ă  15 minutes :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

La grande majorité est de 0 à 5 minutes :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

Ce n'est pas trĂšs bon.

La distribution cumulative rend le problĂšme encore plus Ă©vident :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

La moitié des réponses DNS ont un TTL de 1 minute ou moins, et les trois quarts ont un TTL de 5 minutes ou moins.

Mais attendez, c'est en fait pire. AprÚs tout, il s'agit de TTL provenant de serveurs faisant autorité. Cependant, les résolveurs clients (par exemple les routeurs, les caches locaux) reçoivent une durée de vie des résolveurs en amont, et elle diminue chaque seconde.

Ainsi, le client peut rĂ©ellement utiliser chaque entrĂ©e pour, en moyenne, la moitiĂ© de la durĂ©e de vie initiale avant d'envoyer une nouvelle requĂȘte.

Peut-ĂȘtre que ces TTL trĂšs faibles ne s’appliquent qu’aux requĂȘtes inhabituelles et non aux sites Web et API populaires ? Jetons un coup d'oeil :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

L'axe X est le TTL, l'axe Y est la popularitĂ© des requĂȘtes.

Malheureusement, les requĂȘtes les plus populaires sont aussi les pires Ă  mettre en cache.

Zoomons :

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

Verdict : c'est vraiment mauvais. C'était déjà mauvais avant, mais c'est encore pire. La mise en cache DNS est devenue pratiquement inutile. Comme de moins en moins de personnes utilisent le résolveur DNS de leur FAI (pour de bonnes raisons), l'augmentation de la latence devient plus perceptible.

La mise en cache DNS est devenue utile uniquement pour le contenu que personne ne visite.

Veuillez également noter que le logiciel peut de différentes maniÚres interpréter les faibles TTL.

Pourquoi est-ce?

Pourquoi les enregistrements DNS sont-ils dĂ©finis sur une durĂ©e de vie si faible ?

  • Les anciens Ă©quilibreurs de charge ont conservĂ© leurs paramĂštres par dĂ©faut.
  • Il existe des mythes selon lesquels l'Ă©quilibrage de charge DNS dĂ©pend du TTL (ce n'est pas vrai - depuis l'Ă©poque de Netscape Navigator, les clients ont choisi une adresse IP alĂ©atoire parmi un ensemble de RR et en ont essayĂ© une autre de maniĂšre transparente s'ils ne peuvent pas se connecter)
  • Les administrateurs souhaitent appliquer les modifications immĂ©diatement, ce qui facilite la planification.
  • L'administrateur d'un serveur DNS ou d'un Ă©quilibreur de charge considĂšre que sa tĂąche consiste Ă  dĂ©ployer efficacement la configuration demandĂ©e par les utilisateurs, et non Ă  accĂ©lĂ©rer les sites et les services.
  • Les faibles TTL vous offrent une tranquillitĂ© d'esprit.
  • Les gens dĂ©finissent initialement des durĂ©es de vie faibles pour les tests, puis oublient de les modifier.

Je n'ai pas inclus le "failover" dans la liste car cela devient de moins en moins pertinent. Si vous devez rediriger les utilisateurs vers un autre réseau simplement pour afficher une page d'erreur alors qu'absolument tout le reste est cassé, un délai de plus d'une minute est probablement acceptable.

De plus, une durĂ©e de vie d'une minute signifie que si les serveurs DNS faisant autoritĂ© sont bloquĂ©s pendant plus d'une minute, personne d'autre ne pourra accĂ©der aux services dĂ©pendants. Et la redondance n’aidera pas si la cause est une erreur de configuration ou un hack. En revanche, avec des durĂ©es de vie raisonnables, de nombreux clients continueront Ă  utiliser la configuration prĂ©cĂ©dente et ne remarqueront jamais rien.

Les services CDN et les Ă©quilibreurs de charge sont en grande partie responsables des faibles durĂ©es de vie, en particulier lorsqu'ils combinent des CNAME avec des durĂ©es de vie faibles et des enregistrements avec des durĂ©es de vie tout aussi faibles (mais indĂ©pendantes) :

$ drill raw.githubusercontent.com
raw.githubusercontent.com.	9	IN	CNAME	github.map.fastly.net.
github.map.fastly.net.	20	IN	A	151.101.128.133
github.map.fastly.net.	20	IN	A	151.101.192.133
github.map.fastly.net.	20	IN	A	151.101.0.133
github.map.fastly.net.	20	IN	A	151.101.64.133

Chaque fois que le CNAME ou l'un des enregistrements A expire, une nouvelle demande doit ĂȘtre envoyĂ©e. Les deux ont un TTL de 30 secondes, mais ce n'est pas la mĂȘme chose. La durĂ©e de vie moyenne rĂ©elle sera de 15 secondes.

Mais attendez! C'est encore pire. Certains résolveurs se comportent trÚs mal dans cette situation avec deux TTL faibles associés :

$ percer raw.githubusercontent.com @4.2.2.2 raw.githubusercontent.com. 1 EN CNAME github.map.fastly.net. github.map.fastly.net. 1 DANS UN 151.101.16.133

Le résolveur Level3 fonctionne probablement sur BIND. Si vous continuez à envoyer cette demande, un TTL de 1 sera toujours renvoyé. raw.githubusercontent.com n'est jamais mis en cache.

Voici un autre exemple d’une telle situation avec un domaine trùs populaire :

$ drill detectportal.firefox.com @1.1.1.1
detectportal.firefox.com.	25	IN	CNAME	detectportal.prod.mozaws.net.
detectportal.prod.mozaws.net.	26	IN	CNAME	detectportal.firefox.com-v2.edgesuite.net.
detectportal.firefox.com-v2.edgesuite.net.	10668	IN	CNAME	a1089.dscd.akamai.net.
a1089.dscd.akamai.net.	10	IN	A	104.123.50.106
a1089.dscd.akamai.net.	10	IN	A	104.123.50.88

Au moins trois enregistrements CNAME. Oui. On a un TTL décent, mais c'est complÚtement inutile. Les autres CNAME ont une durée de vie initiale de 60 secondes, mais pour les domaines akamai.net le TTL maximum est de 20 secondes et aucun d'entre eux n'est en phase.

Qu’en est-il des domaines qui interrogent constamment les appareils Apple ?

$ drill 1-courier.push.apple.com @4.2.2.2
1-courier.push.apple.com.	1253	IN	CNAME	1.courier-push-apple.com.akadns.net.
1.courier-push-apple.com.akadns.net.	1	IN	CNAME	gb-courier-4.push-apple.com.akadns.net.
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.84
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.85

MĂȘme problĂšme que Firefox et TTL seront bloquĂ©s Ă  1 seconde la plupart du temps lors de l'utilisation du rĂ©solveur Level3.

BoĂźte de dĂ©pĂŽt ?

$ percer client.dropbox.com @8.8.8.8 client.dropbox.com. 7 DANS CNAME client.dropbox-dns.com. client.dropbox-dns.com. 59 IN A 162.125.67.3 $ forage client.dropbox.com @4.2.2.2 client.dropbox.com. 1 EN CNAME client.dropbox-dns.com. client.dropbox-dns.com. 1 DANS UN 162.125.64.3

A l'enregistrement safebrowsing.googleapis.com La valeur TTL est de 60 secondes, comme les domaines Facebook. Et encore une fois, du point de vue du client, ces valeurs sont réduites de moitié.

Que diriez-vous de dĂ©finir un TTL minimum ?

En utilisant le nom, le type de requĂȘte, la durĂ©e de vie et l'horodatage stockĂ© Ă  l'origine, j'ai Ă©crit un script pour simuler 1,5 million de requĂȘtes passant par un rĂ©solveur de mise en cache afin d'estimer le volume de requĂȘtes inutiles envoyĂ©es en raison d'une entrĂ©e de cache expirĂ©e.

47,4 % des demandes ont Ă©tĂ© faites aprĂšs l'expiration d'un dossier existant. C’est dĂ©raisonnablement Ă©levĂ©.

Quel sera l'impact sur la mise en cache si la durĂ©e de vie minimale est dĂ©finie ?

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

L'axe X correspond aux valeurs TTL minimales. Les enregistrements dont la durée de vie source est supérieure à cette valeur ne sont pas affectés.

L'axe Y reprĂ©sente le pourcentage de requĂȘtes provenant d'un client qui a dĂ©jĂ  une entrĂ©e en cache, mais qui a expirĂ© et qui fait une nouvelle requĂȘte.

La part des requĂȘtes « supplĂ©mentaires » est rĂ©duite de 47 % Ă  36 % en fixant simplement le TTL minimum Ă  5 minutes. En fixant le TTL minimum Ă  15 minutes, le nombre de ces requĂȘtes chute Ă  29 %. Un TTL minimum de 1 heure les rĂ©duit Ă  17%. DiffĂ©rence significative!

Que diriez-vous de ne rien changer cĂŽtĂ© serveur, mais plutĂŽt de dĂ©finir le TTL minimum dans les caches DNS des clients (routeurs, rĂ©solveurs locaux) ?

ArrĂȘtez d'utiliser un TTL ridiculement bas pour le DNS

Le nombre de requĂȘtes requises passe de 47 % Ă  34 % avec un TTL minimum de 5 minutes, Ă  25 % avec un minimum de 15 minutes et Ă  13 % avec un minimum de 1 heure. Peut-ĂȘtre que 40 minutes sont optimales.

L’impact de ce petit changement est Ă©norme.

Quelles en sont les implications?

Bien entendu, le service peut ĂȘtre dĂ©placĂ© vers un nouveau fournisseur de cloud, un nouveau serveur, un nouveau rĂ©seau, obligeant les clients Ă  utiliser les derniers enregistrements DNS. Et un TTL assez petit permet d'effectuer une telle transition en douceur et imperceptiblement. Mais avec la transition vers une nouvelle infrastructure, personne ne s'attend Ă  ce que les clients migrent vers de nouveaux enregistrements DNS en 1 minute, 5 minutes ou 15 minutes. DĂ©finir la durĂ©e de vie minimale Ă  40 minutes au lieu de 5 minutes n'empĂȘchera pas les utilisateurs d'accĂ©der au service.

Cependant, cela réduira considérablement la latence et améliorera la confidentialité et la fiabilité en évitant les demandes inutiles.

Bien entendu, les RFC disent que le TTL doit ĂȘtre strictement respectĂ©. Mais la rĂ©alitĂ© est que le systĂšme DNS est devenu trop inefficace.

Si vous travaillez avec des serveurs DNS faisant autorité, veuillez vérifier vos TTL. Avez-vous vraiment besoin de valeurs aussi ridiculement basses ?

Bien entendu, il existe de bonnes raisons de définir de petites durées de vie pour les enregistrements DNS. Mais pas pour les 75 % du trafic DNS qui restent quasiment inchangés.

Et si, pour une raison quelconque, vous avez vraiment besoin d'utiliser des TTL faibles pour le DNS, assurez-vous en mĂȘme temps que la mise en cache n'est pas activĂ©e sur votre site. Pour les mĂȘmes raisons.

Si vous disposez d'un cache DNS local en cours d'exĂ©cution, tel que proxy-dnscryptqui vous permet de dĂ©finir des TTL minimum, utilisez cette fonction. C'est bon. Rien de grave n’arrivera. RĂ©glez la durĂ©e de vie minimale sur environ 40 minutes (2400 1 secondes) et XNUMX heure. Une fourchette tout Ă  fait raisonnable.

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster