メインコンテンツまでスキップ

4. サーバー応答の送信元アドレス選択 (Server Reply Source Address Selection)

ほぼすべて (もしすべてでなくても) の DNS クライアントは、応答を受信するアドレスが、 その応答を引き起こした問い合わせを送信したアドレスと同じであることを期待します。 これは、再帰問い合わせ解決の目的でクライアントとして動作するサーバーであれ、単純な リゾルバクライアントであれ、当てはまります。アドレスは、応答中の識別子 (ID) と共に、 応答の曖昧性を解消し、偽の応答をフィルタリングするために使用されます。これが DNS 設計 時に意図されたものかどうかは不明ですが、今や事実です。

このような問題を回避するため、UDP については、応答の IP ヘッダーの IP アドレスは、 その応答を引き起こした問い合わせを含むパケットの IP ヘッダーの宛先アドレスフィールド にあるアドレスでなければなりません (must)。すなわち、サーバーが UDP 経由で到着した 問い合わせに対する応答を生成する際、サーバーは応答の IP ヘッダーの送信元アドレスを、 その問い合わせを含むパケットの IP ヘッダーの宛先アドレスフィールドにあるアドレスに 設定しなければなりません (must)。これは、応答の送信元として使用されるアドレスが、 問い合わせ (または要求) の送信元アドレスと異なる可能性がある唯一の場合です。なお、 応答に使用される送信元アドレスは問い合わせに使用された宛先アドレスと同じであるため、 「なりすまし」られたアドレスではない点に注意してください。

応答の送信元として使用されるアドレスは常に問い合わせの宛先アドレスと同じであり、 応答の送信元ポートは常に問い合わせの宛先ポートと同じです。これは TCP プロトコルに 固有のものです。

UDP については、応答の送信元アドレスは問い合わせの宛先アドレスでなければならず (must)、応答の送信元ポートは問い合わせの宛先ポートでなければなりません (must)。 サーバーがセキュリティその他の理由で異なるポートを使用している場合を除き、応答は それが向けられたポートから送信されなければなりません (must)。

4.1. UDP 送信元アドレス選択 (UDP Source Address Selection)​

(上記のとおり、UDP では応答の送信元アドレスを問い合わせの宛先アドレスに設定します。)

4.2. ポート番号選択 (Port Number Selection)​

問い合わせに対するすべての応答は、問い合わせが送信されたポートに向けられなければ なりません (must)。問い合わせが TCP 経由で受信された場合、これはトランスポート プロトコルに固有のものです。UDP 経由で受信された問い合わせについては、サーバーは 送信元ポートに注意し、それを応答の宛先ポートとして使用しなければなりません (must)。 サーバーがセキュリティその他の理由で異なるポートを使用している場合を除き、応答は 常にそれが向けられたポートから送信されるべきです (should)。これは通常、DNS 問い合わせ に割り当てられた既知のポートです [RFC1700]。