Un enregistrement DNS qui changera fréquemment? [fermé]


17

Comment puis-je créer un enregistrement de domaine qui peut changer fréquemment?

Disons que example.orgpointe vers 203.0.113.0. Deux minutes plus tard, il doit pointer du doigt 198.51.100.0.

Il s'agira de sites Web normaux derrière le domaine («normaux» uniquement dans le sens d'être accessibles à l'aide de navigateurs Web courants) mais avec une durée de vie très courte. Le domaine pointera vers une adresse pendant 3 à 4 heures au maximum avant d'être basculé ou arrêté. Il n'est pas nécessaire de protéger le serveur DNS des requêtes fréquentes.

Mon approche serait de régler TTL sur 60 secondes et de simplement changer le record quand le changement doit être fait. Dans le pire des cas, un utilisateur devrait attendre 60 secondes maximum avant qu'un nouveau serveur ne soit accessible.

D'une certaine manière, je n'ai pas confiance en cela ... Certains FAI ou navigateurs pourraient ignorer ou remplacer le TTL, n'est-ce pas? S'il s'agit d'une préoccupation valable, quel serait un TTL raisonnable à prévoir?

Je vous remercie!


9
Pourquoi avez-vous exactement besoin de cette capacité? Quel type de "site Web normal" fonctionne sur une infrastructure qui disparaît après 3 à 4 heures? Il existe des solutions qui vous viennent à l'esprit, mais vous ne savez pas exactement ce que vous faites avec des changements DNS rapides ou quel comportement vous attendez pendant les transitions.
Michael - sqlbot

@ Michael-sqlbot, "normal" dans le sens où c'est une application web accessible via un navigateur mais c'est loin d'être un site web classique. Une seule instance d'application aura en effet une durée de vie de quelques heures. Je veux juste utiliser un pool partagé de noms de domaine pour eux. J'ai déjà reçu des conseils pour étudier la technique d'équilibrage de charge. Mais parce que les instances d'application ne sont pas interchangeables, je ne suis pas sûr que cela s'applique du tout.
Andrew8

4
D'après mon expérience, les vagabondages d'Internet font du DNS un mauvais candidat pour le «suivi de service». Bien que cela puisse fonctionner sur votre machine, ou même sur le réseau de votre entreprise, ou sur le haut débit feuilleté de votre ami, il semble qu'à travers le monde, il existe des clients vraiment terribles qui prennent de nombreux multiples de votre TTL pour remarquer tout changement dans votre DNS.
Ralph Bolton

Pourquoi pas un basculement IP à la place?
giammin

Réponses:


38

C'est ce qu'on appelle les enregistrements DNS Fast Flux . Et c'est généralement la façon dont les auteurs de logiciels malveillants cachent leurs serveurs d'infrastructure.

Bien que cela fonctionne pour votre plan, ce n'est pas le meilleur plan. Vous devrez probablement avoir un serveur de rechange ou plus, en ligne, et ne rien faire presque tout le temps. Ce n'est que lorsque vous rencontrez un problème avec le serveur principal que vous passez au suivant.

Même si vous avez un TTL de 1 minute, un enregistrement sera probablement valide pour plus que cela:

  1. Caches de navigateur

    Les navigateurs mettent généralement en cache les enregistrements DNS pendant une durée variable. Firefox utilise 60 secondes , Chrome utilise également 60 secondes , IE 3.x et versions antérieures mises en cache pendant 24 heures , IE 4.x et versions supérieures mises en cache pendant 30 minutes.

  2. Cache du système d'exploitation

    Windows n'honorera généralement pas le TTL . Un TTL pour DND n'est pas comme le TTL pour un paquet IPv4. C'est plus une indication de fraîcheur qu'un rafraîchissement obligatoire. Linux peut avoir nscd configuré pour définir la durée souhaitée par l'utilisateur, sans tenir compte du DNS TTL. Il peut mettre en cache des entrées pendant une semaine, par exemple.

  3. Cache du FAI

    Les FAI peuvent (et certains le feront) utiliser une mise en cache agressive pour réduire le trafic. Ils peuvent non seulement modifier le TTL, mais également mettre en cache les enregistrements et les renvoyer aux clients sans même demander aux serveurs DNS en amont. Ceci est plus répandu sur les FAI mobiles, car ils changent la TTL afin que les clients mobiles ne se plaignent pas de la latence du trafic.

Un équilibreur de charge est fait pour faire exactement ce que vous voulez. Avec un équilibreur de charge en place, vous pouvez avoir 2, 4 ou 10 serveurs tous en ligne en même temps, divisant la charge. Si l'un d'eux se déconnecte, le service ne sera pas affecté. La modification des enregistrements DNS aura un temps d'arrêt entre le moment où le serveur s'éteint et le DNS est modifié. Cela prendra plus d'une minute, car vous devez détecter le temps d'arrêt, modifier les enregistrements et attendre qu'ils se propagent.

Utilisez donc un équilibreur de charge. Il est fait pour faire ce que vous voulez et vous savez exactement à quoi vous attendre. Une configuration DNS à flux rapide aura des résultats mitigés et incohérents.


11
Néanmoins, utilisez un équilibreur de charge. Vous disposerez d'une haute disponibilité, d'un pool flexible, de journaux, de nombreuses métriques et statistiques, pourrez prioriser un serveur ou un autre et moins de maux de tête.
ThoriumBR

4
Oui, vous constaterez probablement qu'un horrible FAI quelque part prend des heures ou une journée entière pour récupérer votre changement DNS.
Robyn

2
@Mehrdad Selon la façon dont vous le définissez, c'est le cas. En Allemagne, si vous avez une ligne ADSL, vous devez vous authentifier via PPPoE, puis vous obtenez une adresse IP à partir de la plage de numérotation. Jusqu'à récemment (et sur certaines lignes encore), votre connexion était coupée après 24 h, vous deviez donc vous reconnecter (ou votre CPE l'a fait pour vous).
glglgl

3
Pour ajouter au commentaire de @ glglgl: Le point crucial est que l'on vous a attribué une autre adresse IP à chaque fois que vous vous êtes reconnecté . Ce comportement était intentionnel: les fournisseurs voulaient empêcher les utilisateurs d'exécuter des serveurs dans leurs SOHO de cette façon.
Binarus

1
@Binarus non seulement cela, mais généralement un FAI avec 2000 abonnés n'a pas 2000 IP sur son pool. Comme tous les clients ne seront pas actifs en même temps, dès qu'un utilisateur se déconnecte, un autre peut se connecter et récupérer la même IP.
ThoriumBR

6

Le DNS et son fonctionnement s'accompagnent peut-être de plus de malentendus, de légendes, de superstitions et de mythologies que n'importe quel aspect de l'informatique.

Même ceux d'entre nous qui savent que nous mentons essentiellement (ou du moins drastiquement simplifient à l'extrême) lorsque nous parlons de «propagation» des changements ont encore tendance à utiliser le terme pour décrire quelque chose qui est - simultanément - extrêmement simple et direct ... pourtant difficile à expliquer ... et n'a rien à voir avec la propagation en soi , mais tout à voir avec la mise en cache et la mise en cache négative, qui sont toutes deux un élément essentiel du fonctionnement du système (et, sans doute, de la façon dont il évite l'effondrement pur et simple sous son propre poids) - essentiellement le sens intérieur-opposé de la «propagation» réelle - pas la poussée.

Pour tous les inquiétants et les tordus à la main sur les TTL courts, ils ont tendance à fonctionner plus souvent qu'autrement, au point qu'il peut être dans votre intérêt de simplement les essayer. À $ {day_job}, lorsque nos sites migrent d'une "ancienne" plate-forme vers une "nouvelle" plate-forme, cela signifie souvent qu'ils migrent de telle manière que rien dans l'infrastructure n'est partagé. Ma première étape dans une telle migration consiste à laisser tomber le TTL à 60 ans suffisamment avant la coupe pour que l'ancien TTL ait plusieurs multiples de lui-même à courir, me donnant une assurance raisonnable que ces RR de transition avec des TTL courts "se propageront" . " Lorsque je suis prêt pour la coupe, je reconfigure l'ancien équilibreur¹ pour épingler le trafic vers le nouveau système - sur Internet - de telle sorte que l'équilibreur n'équilibre plus plusieurs systèmes internes, mais plutôt "

Ensuite, je coupe le DNS et regarde le nouvel équilibreur et l'ancien.

Je suis toujours agréablement surpris de la rapidité avec laquelle la transition se produit. Les récalcitrants semblent presque toujours être des araignées de recherche et des sites tiers de «vérification de la santé» qui s'accrochent inexplicablement aux anciens enregistrements.

Mais il y a un scénario qui tombe en panne de façon prévisible: lorsque les fenêtres du navigateur d'un utilisateur restent ouvertes, elles ont tendance à se verrouiller sur l'adresse déjà découverte, et elle persiste souvent jusqu'à ce que toutes les fenêtres de leur navigateur soient fermées.

Mais dans le récit ci-dessus, vous trouvez la solution au problème: un «équilibreur de charge» - spécifiquement et plus précisément, un proxy inverse - peut être le système vers lequel pointe votre enregistrement DNS exposé.

Le proxy inverse transmet ensuite la demande à l'adresse IP cible correcte, qu'il résout en utilisant un deuxième nom d'hôte "factice" avec un court TTL, qui pointe vers le vrai serveur principal.³ Parce que le proxy honore toujours le DNS TTL sur ce entrée DNS factice, vous êtes assuré d'un basculement rapide et complet.

L'inconvénient est que vous pouvez acheminer le trafic via une infrastructure supplémentaire inutile, ou payer plus cher pour le transport à travers plusieurs frontières du réseau, de manière redondante.

Il existe des services qui offrent ce type de capacité à l'échelle mondiale, et celui que je connais le plus est CloudFront. (Très probablement, Cloudflare servirait exactement le même objectif, car la petite incertitude des tests que j'ai effectués indique qu'il se comporte également correctement, et je suis sûr qu'il y en a d'autres.)

Bien qu'il soit principalement commercialisé en tant que CDN, CloudFront est à la base un réseau mondial de proxys inverses avec la possibilité de mettre en cache les réponses en option . Si des www.example.compoints sur CloudFront et CloudFront sont configurés pour transmettre ces demandes à backend.example.com, et que l'enregistrement DNS backend.example.comutilise un court TTL, alors CloudFront fera ce qu'il faut, car il respecte ce court TTL. Lorsque l'enregistrement principal change, le trafic migre tous au moment où le TTL s'épuise.

Le TTL sur l'enregistrement frontal pointant vers CloudFront, et si les navigateurs et les résolveurs de mise en cache le respectent est sans importance, car les modifications apportées à la destination principale ne nécessitent pas de modifications dans l' www.example.comenregistrement ... donc l'idée que "Internet" a, en ce qui concerne l'objectif correct pour www.example.comest cohérent, indépendamment de l'endroit où se trouve le système dorsal.

Pour moi, cela résout complètement le problème en libérant le navigateur de tout besoin de "suivre" les modifications de l'adresse IP du serveur d'origine.

tl; dr: acheminez les demandes vers un système qui sert de proxy pour le serveur Web réel, de sorte que seule la configuration du proxy doit prendre en compte le changement d'adresse IP du serveur d'origine - pas le DNS orienté navigateur.

Notez que CloudFront minimise également la latence grâce à la magie DNS qu'il impose sur la face avant, ce qui se traduit par la www.example.comrésolution de l'emplacement périphérique CloudFront le plus optimal en fonction de l'emplacement du navigateur qui interroge www.example.com, il y a donc peu de chances que le trafic emprunte un itinéraire inutilement détourné du navigateur au bord à l'origine ... mais cette partie est transparente et automatique et sort du cadre de la question.

Et, bien sûr, la mise en cache de contenu peut également être utile en réduisant la charge sur le serveur d'origine ou le transport - J'ai configuré des sites Web sur CloudFront où le serveur d'origine était sur un circuit ADSL, et l'ADSL est intrinsèquement contraint pour la bande passante en amont. Le serveur d'origine auquel CloudFront se connecte pour récupérer le contenu n'a pas besoin d'être un serveur à l'intérieur de l'écosystème AWS.


¹ Je parle d'équilibreur comme d'une entité unique alors qu'en fait il a plusieurs nœuds. Lorsque l'équilibreur est un ELB, une machine derrière l'équilibreur agit comme un serveur d'application factice et effectue l'épingle à cheveux réelle de l'équilibreur de la nouvelle plate-forme, car ELB ne peut pas le faire seul.

² La seule connaissance du nouvel équilibreur sur l'ancien est qu'il doit faire confiance au X-Forwarded-For de l'ancien équilibreur et qu'il ne doit pas limiter le débit basé sur IP sur les adresses source de l'ancien équilibreur.

³ Lorsque le proxy est un ou plusieurs serveurs que vous contrôlez, vous avez la possibilité de sauter à l'aide de DNS sur le côté arrière et simplement d'utiliser des adresses IP dans la configuration du proxy, mais le scénario hébergé / distribué discuté par la suite a besoin de cette deuxième couche de DNS .


2
Merci, comme toujours, pour une autre excellente réponse. "À $ {day_job}, lorsque nos sites migrent d'une" ancienne "plate-forme vers une" nouvelle "plate-forme, [...]": Vous y êtes, faites cela. +1!
gf_

4

Lorsque je modifie des enregistrements DNS, il arrive souvent que l'ancienne adresse IP soit utilisée pendant des mois. Cela dit, un TTL de quelques secondes seulement est utilisé par Amazon pour créer un service de secours, par exemple.

Au lieu de changer DNS, vous pouvez placer un serveur proxy / équilibreur de charge devant lui.


1
Dans mes tests, TTL60 secondes semblent fonctionner la plupart du temps, mais j'ai eu des clients qui ont connu un retard d'environ 10-20 minutes.
Andrew8

1

Vous pouvez envisager d'utiliser le DNS dynamique. Ceci est conçu précisément pour le scénario mentionné par @glglgl dans un commentaire ci-dessus. Je pense qu'ils utilisent un TTL faible qui, comme cela a été souligné précédemment, peut ne pas être efficace à 100% car les clients sont libres de l'ignorer. Mais cela fonctionne "plutôt bien".

Même si vous ne changez pas fréquemment votre IP, il est important de garder votre TTL raisonnable. Il y a de nombreuses années, l'entreprise dans laquelle je travaillais pour des FAI modifiés a provoqué un changement de nos adresses IP. Malheureusement, nous avions réglé notre TTL sur quelque chose de ridicule comme un mois, donc les anciens enregistrements DNS étaient conservés pendant longtemps.


Il existe de nombreux serveurs DNS de niveau FAI qui n'honorent pas TTL. Je travaille sur un produit qui change les informations DNS environ deux fois par an. Nous avons beaucoup de gens qui les serveurs DNS mettent en cache nos anciennes informations pendant plusieurs semaines après les avoir modifiées. À moins que vous ne contrôliez le côté client, ne comptez pas sur ce bon fonctionnement.
Michael Gantz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.