プロトコルfooをホスト名対応にするにはどうすればよいですか?


10

これは、ホスト名認識とプロキシについての標準的な質問です。

一部のプロトコルはホスト名に対応しています。つまり、HTTPサーバーに接続すると、同じIPアドレス上にあっても、ではなくのHTTPサービスがwww.example.com必要であることがわかります。プロトコルfooに対してこれを行うにはどうすればよいですか?www.example.comwww.example.net

(一時的なメモ:この質問は、このメタディスカッションに従って表示されます。)

回答:


14

何が起こっているのかを理解するには、DNSについて少し知っておく必要があります。

クライアントが特定のホストのサービスに接続する場合、クライアントはローカルDNSインフラストラクチャを介してホスト名を検索し、応答としてIPアドレスを受け取ります。次に、そのIPアドレスに接続し、実装するために構築されたプロトコルによって規定された方法でサービスを要求します。

場合によっては、そのプロトコルの一部に、最初に検索されたホスト名の2回目の送信が含まれます。この場合、ホスト名はDNSインフラストラクチャではなくサーバーに送信されます。HTTPの場合、これはRFC 2616でHTTP / 1.1の一部として追加されました。HTTPSの場合、これはRFC 4366でサーバー名表示(SNI)として実装されました。FTPの場合、これはコマンドによってRFC 7151に追加されました(ただし、後の警告を参照)。 このような2回目の送信が行われない場合、サーバーは、サーバーのIPアドレスを取得するためにクライアントがローカルDNSに入力したホスト名を知る方法がありません。HOST

すべてのケースで、この2回目の送信を行うためにプロトコルの変更が必要であり、クライアントとサーバーの相互作用をホスト名対応にすることに注意してください。プロトコルが変更された後、それを実装するためにサーバーコードを更新する必要がありました。そして最後に、新しいプロトコルをサーバーに伝えるためにクライアントを更新する必要がありました。その最後のステップは特に遅くなる可能性があります。SNIの場合、Windows XPのInternet Explorerはこれを実装しなかったため、かなりの数のIE-on-XPユーザーがいまだに存在している間はプロトコルに依存できず、十分な時間がかかるまでに約10年かかりました。 SNIが確実に展開可能なアップグレードを終了または取得します。

これが、ホスト名を認識しないプロトコルをホスト名を認識するようにするために必要なことです。これは単純なフラグ設定や構成変更ではありません。状況、および特にそのプロトコルについて考えられる緩和策に対処するプロトコル固有の回答がいくつかあります 。SSH(したがってSFTP)および FTPHOSTFTPのサポートは現在パッチ適用中であることを示しています) -サポートフェーズなので、まだ信頼できません)。

短い答えは、クライアントとサーバーの両方の間で十分なサポートがあり、プロトコルが現在ホスト名認識を実装していない場合、それを忘れるということです。それはあなたができることではありません。


6
一部のプロトコルは真新しい製品用であるか、1つの会社がサーバーとクライアントのすべてのインスタンスを制御するのに十分ローカルであるという事実で、この答えを和らげると思います。このような場合、ホスト名コマンドまたはパケットを追加するだけで、非常に簡単に実装できます。多くのベンダーがすでに広く使用している既存のプロトコルに新しい機能を追加することの難しさについて説明します。
JPhi1618 2017年

4
@ JPhi1618聞きましたが、私の意見では、単一の企業によって作成および実装され、RFCに埋め込まれていない「プロトコル」は、プロトコルではありません。これは内部のエンジニアリング上の決定に過ぎず、そのような独自の製品には興味がありません。ご指摘のとおり、ベンダーはホスト名認識を実装するように即座に変更できます。しかし、ベンダー以外の誰もそれを行うことができないので、それがOPにどのように大きな関心を持っているかはわかりません。
MadHatter 2017年

関連する質問は、新しいプロトコルを設計するのか、それとも既存のプロトコルを変更する方法を尋ねるのかということだと思います。
Barmar

独自のプロトコルは、まだプロトコルです。
Barmar

@Barmarそれはおそらくここに入るのに良い議論ではありません。この質問は既存のプロトコルの変更に関するものであり、前述したように、所有権のあるエンジニアリングの決定/プロトコルbazを所有者と唯一の実装者しか変更できない場合、ホスト名を認識させる唯一の方法は所有者にアピールすることです。それはSFの興味深い答えにはなりませんし、さらに(私の心には)話題にはなりません。「どのようにしてホスト名対応プロトコルを設計するのか」は、まったく別の質問であり、私が尋ねるのではありません。
MadHatter 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.