Angenommen, Sie haben Server A
Ihren bevorzugten Webserver-Daemon eingerichtet, um ihn zu bedienen www.example.com
. Jetzt möchten Sie dies verschieben Server B
. Nach einigem Kopieren und Konfigurieren scheint der neue Server bereit zu sein. Ein abschließender Test wäre angebracht: Wie kann man vor dem Ändern der DNS-Einträge www.example.com
von Server B verlangen, wenn die DNS-Einträge noch auf Server A verweisen?
Ist es möglich, meine Hauptfrage zu beantworten, falls / etc / hosts nicht unter meinem Einflussbereich steht, sie mit Telnet zu testen, indem stattdessen rohes HTTP1.1 mit dem Webserver gesprochen wird?
domain-name-system
http
testing
Jarmund
quelle
quelle
Antworten:
DNS ist eine magische Sache. Mit genügend Kontrolle über einen Client-PC können Sie
right.com
inwrong.com
und machenviceversa.io
. Springen Sie auf einen Testclient-PC und ändern Sie die DNS-Auflösung, indem Sie entweder die Hostdatei auf diesem Client ändern, oder Sie können etwas Komplexeres tun und diesem Host einen einfachen DNS-Server zum Abfragen geben, zdnsmasq
. In beiden Fällen besteht das ultimative Ziel darin, die DNS-Antwort auf Anfragen bezüglich derwww.example.com
Antwort mit der IP-Adresse für Server B zu senden. HTTP-Host-Header tragen dann den DNS-Namen für www.example.com, sind jedoch angestrebt Server B.Magie!
quelle
/etc/hosts
mir nichts eingefallen, und das hat perfekt funktioniert. Prost auf die Erinnerung!hosts
Datei ist nicht an der DNS-Auflösung beteiligt, sondern stellt einen völlig separaten Mechanismus zur Namenssuche dar, den die vom Client-Betriebssystem bereitgestellte Resolver-Bibliothek zusätzlich zu den Suchvorgängen in DNS verwenden kann und wird. Persönlich denke ich, dass das "es ist magisch" -Bit nur in "es gibt keinen Grund zu verstehen" einfließt, was für Profis sicherlich eine schlechte Sache ist.Es ist wichtig zu beachten, dass das, was für einen solchen Test für HTTP wichtig ist, überhaupt nicht mit DNS zusammenhängt, sondern mit dem, was der HTTP-Client als
Host
Header-Wert sendet .Der Client muss natürlich eine Verbindung mit der richtigen IP-Adresse und dem richtigen Port herstellen, aber darüber hinaus kommt es auf den
Host
Header an, der in der HTTP-Anforderung selbst integriert ist.Für einen schnellen Test kann der folgende Befehl verwendet werden, ohne die Konfiguration auf Betriebssystemebene auf dem Client zu ändern:
oder, was das betrifft,
Um dasselbe mit einem normalen Webbrowser zu tun, benötigen Sie entweder eine Browsererweiterung, mit der die Anforderungsheader geändert werden können (oder möglicherweise einen HTTP-Proxy, der die Header ändert), oder Sie müssen die Konfiguration des Betriebssystems des Clientcomputers ändern.
Wie bereits erwähnt, besteht das einfachste Mittel für eine solche Konfigurationsänderung darin, der
hosts
Datei einen Eintrag hinzuzufügen . Auf diese Weise würde die Client-Betriebssystem-Resolver-Bibliothek bereits beim Abrufen derhosts
Datei einen Treffer erhalten und muss nicht einmal eine DNS-Suche durchführen.Weitere Optionen sind das Ändern der konfigurierten DNS-Resolver-Server auf dem Client in einen Nameserver, der so eingerichtet ist, dass er wie gewünscht antwortet.
quelle
curl
können Sie die normale Namensauflösung (DNS oder Hostdatei) überschreiben und weiterhin automatisch Header sowie SNI ausführen, wenn Sie httpS verwenden / testen. Siehe--resolve
in Ihrer Manpage oder unter curl.haxx.se/docs/manpage.html .Sie können dies mit testen
telnet
. Sie müssen eine rohe HTTP-Anforderung stellen, indem Sie die Befehle eingeben. Sie können keine Fehler machen, und einige Server haben eine Zeitüberschreitung, sodass Sie auch die gesamte Anforderung innerhalb dieses Zeitrahmens eingeben müssen.Der Befehl lautet ungefähr so:
Die Anfrage sieht ungefähr so aus:
Beachten Sie, dass es mit einer leeren Zeile enden muss, sodass Sie nach dem Host-Header zweimal die Eingabetaste drücken.
quelle
Host
Header nicht aus Großbuchstaben. (Und anscheinend haben einige Server Probleme mit unterschiedlichenNormalerweise zwinge ich www.example.com dazu, die IP-Adresse von Server B in meinem / etc / hosts festzulegen. Ich mache das, seit ich Mosaic benutzt habe und seitdem ich es selten mache, habe ich nicht das Bedürfnis verspürt, es besser zu finden.
Als ich mich ein bisschen nach dir umsah , fand ich /superuser/403042/custom-host-file-for-firefox, das von https://addons.mozilla.org/es/firefox/addon/ beantwortet wird. foxyproxy-standard / aber es gibt eine sehr aktuelle Notiz, die besagt, dass es aufgegeben wird.
quelle
Wenn Sie überprüfen müssen, ob es funktioniert, empfehle ich ein einfaches Browser-Plugin wie
Modify Headers
für Firefox und ändere dasHOST
inwww.mydomain.com
.quelle