お気に入りのウェブサーバーデーモンでServer A
を設定してwww.example.com
を提供するとします。これをServer B
に移動します。たくさんのコピーと設定を行った後、新しいサーバーは準備ができているようです。 DNSレコードを変更する前に、DNSレコードがまだサーバーAを指しているときに、サーバーBにwww.example.com
をどのように要求しますか?
私の主な質問には回答しましたが、/ etc/hostsが私の影響下にない場合は、代わりに生のHTTP1.1をWebサーバーと通信することにより、Telnetでテストできますか?
DNSは魔法のようなものです。クライアントPCを十分に制御することで、right.com
をwrong.com
およびviceversa.io
にすることができます。テストクライアントPCにジャンプし、そのクライアントのホストファイルを変更してDNS解決策を試してみるか、もう少し複雑なことを実行して、そのホストにdnsmasq
のような単純なDNSサーバーにクエリを送信することができます。どちらの方法でも、最終的な目標は、www.example.com
に関するクエリのDNS応答がサーバーBのIPアドレスで応答するようにすることです。HTTPホストヘッダーには、www.example.comのDNS名が付けられます、ただしサーバーBを対象としています。
マジック!
このようなHTTPのテストを行うために重要なことは、実際にはDNSとはまったく関係ありませんが、HTTPクライアントがHost
ヘッダー値として送信するものに注意することが重要です。
クライアントは正しいIPアドレスとポートに接続する必要がありますが、それを超えると、HTTPリクエスト自体にインライン化されているHost
ヘッダーにすべて到達します。
簡単なテストのために、クライアントのオペレーティングシステムレベルの設定を変更せずに次のコマンドを使用できます。
$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar
または、さらに言えば、
$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar
通常のWebブラウザーで同じことを行うには、要求ヘッダーを変更できるブラウザー拡張機能(またはヘッダーを変更するHTTPプロキシ)が必要か、クライアントマシンの構成を変更する必要があります。オペレーティング・システム。
すでに述べたように、このような構成変更を行う最も簡単な方法は、hosts
ファイルにエントリを追加することです。このようにして、クライアントOSリゾルバーライブラリは、hosts
ファイルを参照するときにすでにヒットし、DNSルックアップを実行する必要さえありません。
その他のオプションには、クライアントで構成されたDNSリゾルバーサーバーを、必要に応じて応答するように設定されているネームサーバーに変更することが含まれます。
これはtelnet
でテストできます。コマンドを入力して、生のHTTPリクエストを作成する必要があります。間違いを犯すことはできず、一部のサーバーにはタイムアウトがあるため、その時間内にリクエスト全体を入力する必要があります。
コマンドは次のようになります。
telnet serverb 80
リクエストは次のようになります。
GET / HTTP/1.1
Host: www.example.com
空白行で終了する必要があるので、ホストヘッダーの後にEnterキーを2回押すことに注意してください。
動作するかどうかを確認する必要がある場合は、Firefox用のModify Headers
のような単純なブラウザプラグインをアドバイスし、Host
をwww.mydomain.com
に変更します。
私が通常行うことは、www.example.comに/ etc/hostsのサーバーBのIPアドレスを強制することです。私はMosaicを使用して以来、それを行ってきましたが、使用頻度が低いため、より良いものを見つける必要性を感じていません。
あなたのために少し見てみると、私は https://superuser.com/questions/403042/custom-Host-file-for-firefox を見つけました https:// addons .mozilla.org/es/firefox/addon/foxyproxy-standard / ですが、放棄されたという非常に最近のメモがあります。