Test de la capacité d'un serveur à servir un domaine particulier

11

Supposons que vous avez Server Aconfiguré votre serveur Web-démon préféré pour servir www.example.com. Vous voulez maintenant déplacer ceci vers Server B. Après un tas de copie et de configuration, le nouveau serveur semble être prêt. Un test final serait de mise: Avant de modifier les enregistrements DNS, comment demander au www.example.comserveur B quand les enregistrements DNS pointent toujours vers le serveur A?


Bien que ma question principale ait été répondue, dans le cas où / etc / hosts ne serait pas sous mon domaine d'influence, est-il possible de le tester avec telnet en parlant à la place de HTTP1.1 brut au serveur Web?

Jarmund
la source
8
Veuillez ne pas modifier votre question pour poser une toute nouvelle question. Cela a tendance à (quelque peu) invalider les réponses existantes et la plate-forme n'envoie pas non plus de notification qu'une question a changé, ce qui rend peu probable que les personnes déjà impliquées dans votre question revoient leurs réponses. Vous pouvez leur laisser un commentaire direct que vous avez une question de suivi. Souvent, une meilleure stratégie consiste à poser une nouvelle question (pointant peut-être vers votre précédente Q&R) à la place.
HBruijn
2
Envisager fortement de voter pour le changement de poteau de but complet avec le montage. > _ <
Wesley

Réponses:

12

Le DNS est une chose magique. Avec suffisamment de contrôle sur un PC client, vous pouvez faire right.comen wrong.comet viceversa.io. Sautez sur un PC client de test et détruisez sa résolution DNS en changeant le fichier hôte sur ce client, ou vous pouvez faire quelque chose d'un peu plus complexe et donner à cet hôte un serveur DNS simple à interroger, comme dnsmasq. Quelle que soit la manière dont vous procédez, le but ultime est de faire en sorte que la réponse DNS pour les requêtes concernant la www.example.comréponse avec l'adresse IP du serveur B. Les en-têtes d'hôte HTTP portent alors le nom DNS de www.example.com, mais visent à Serveur B.

La magie!

Wesley
la source
3
D'une certaine manière /etc/hosts, je ne m'en suis pas rendu compte, et cela a parfaitement fonctionné. Bravo pour le rappel!
Jarmund
2
Le hostsfichier n'est pas impliqué dans la résolution DNS mais est un mécanisme de recherche de nom entièrement distinct que la bibliothèque de résolveurs fournie par le système d'exploitation client peut, et dans la plupart des cas, utilisera en plus des recherches dans DNS. Personnellement, je pense que le bit "c'est magique" ne fait qu'alimenter "il n'y a pas besoin de comprendre", ce qui est certainement une mauvaise chose pour les professionnels.
Håkan Lindqvist
@ HåkanLindqvist Vous avez cruellement mal compris le contexte et l'utilisation de l'expression.
Wesley
Dans tous les cas, héberge le fichierDNS . C'est SF; Je m'attendrais à ce que les gens d'ici, où qu'ils soient, connaissent la différence.
Ilmari Karonen
@IlmariKaronen Et je n'ai pas dit que les fichiers hôtes étaient DNS, donc vos attentes pour ServerFault ont été satisfaites et nous sommes tous bons ici! ᕕ (ᐛ) ᕗ
Wesley
11

Il est important de noter que ce qui importe de faire un test comme celui-ci pour HTTP n'est pas vraiment lié au DNS, mais ce que le client HTTP envoie comme Hostvaleur d'en-tête.

Le client doit se connecter à la bonne adresse IP et au bon port, bien sûr, mais au-delà, tout se résume à l'en- Hosttête qui est en ligne dans la requête HTTP elle-même.


Pour un test rapide, la commande suivante peut être utilisée sans modifier la configuration au niveau du système d'exploitation sur le client:

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

ou, d'ailleurs,

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


Pour faire de même avec un navigateur Web standard, vous auriez besoin d'une extension de navigateur qui peut modifier les en-têtes de demande (ou éventuellement d'un proxy HTTP qui change les en-têtes), ou vous devriez changer la configuration du système d'exploitation de l'ordinateur client.

Comme cela a été mentionné, le moyen le plus simple d'effectuer un tel changement de configuration serait d'ajouter une entrée au hostsfichier. De cette façon, la bibliothèque du résolveur du système d'exploitation client obtiendrait déjà un hit lors de la consultation du hostsfichier et n'aura même pas besoin de faire une recherche DNS.

Les autres options incluent la modification des serveurs de résolution DNS configurés sur le client en un serveur de noms qui est configuré pour répondre comme vous le souhaitez.

Håkan Lindqvist
la source
1
+1 pour une solution qui n'implique pas le détournement avec la résolution de noms
Jarmund
2
Récent curlvous permet de remplacer la résolution de nom normale (DNS ou fichier hôte) et de toujours faire les en-têtes automatiquement, ainsi que SNI si vous utilisez / testez httpS. Voir --resolvedans votre page de manuel ou sur curl.haxx.se/docs/manpage.html .
dave_thompson_085
4

Vous pouvez tester cela avec telnet. Vous devez effectuer une requête HTTP brute en tapant les commandes. Vous ne pouvez pas faire d'erreurs, et certains serveurs ont un délai d'attente, vous devez donc également taper la demande entière dans ce délai.

La commande ressemblera à ceci:

telnet serverb 80

La demande ressemblera à ceci:

GET / HTTP/1.1
Host: www.example.com

Notez qu'il doit se terminer par une ligne vierge, vous devez donc appuyer sur Entrée deux fois après l'en-tête de l'hôte.

briantiste
la source
1
Nitpick: alors que les en-têtes HTTP ne sont pas censés être sensibles à la casse, l'en- tête normatifHost n'est pas en majuscules. (Et apparemment, certains serveurs pourraient avoir des problèmes avec différentes capitalisations.)
Bob
@Bob true, édité
briantist
3

Ce que je fais habituellement, c'est forcer www.example.com à l'adresse IP du serveur B dans mon / etc / hosts. Je fais ça depuis que j'utilise Mosaic et depuis que je le fais rarement, je n'ai pas ressenti le besoin de trouver mieux.

En cherchant un peu pour vous, j'ai trouvé /superuser/403042/custom-host-file-for-firefox qui est répondu par https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / mais il y a une note très récente disant qu'elle est abandonnée.

Loi29
la source
Répondant à votre modification demandant une méthode de test sans / etc / hosts, oui, cela existe. Ce serait soit telnet pour des tests très basiques, un addon comme je l'ai mentionné dans ma réponse ci-dessus, ou un proxy configuré sur mesure, ou (et c'est la méthode que je préférerais) un ServerAlias ​​sur le serveur B de www2.example par exemple. com.
Loi29
3

Si vous avez besoin de vérifier si cela fonctionne, je conseille un plugin broswer simple comme Modify Headerspour Firefox, et changez le HOSTen www.mydomain.com.

bukk530
la source