Dig コマンド: 出力は必ずソートされますか?

Dig コマンド: 出力は必ずソートされますか?

IPアドレスを調べようとしていてmail.yahoo.comgmail.commail.google.com

実行した場合:

dig @8.8.8.8 +nocomments +noquestion \
    +noauthority +noadditional +nostats +nocmd \
    gmail.com mail.yahoo.com mail.google.com

次のような結果になります:

gmail.com.                       299    IN  A       173.194.123.21
gmail.com.                       299    IN  A       173.194.123.22
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

CNAMEレコードを表示する場合、それに対応するレコードが別のマシンに対応するレコードや他のホスト名のレコードAの前に表示されないようにできますか?CNAMEA

たとえば、次の点に焦点を当てますmail.yahoo.com(IP または IPmail.yahoo.comを解決したいだけです):

出力は次のようになります。

mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

私が探しているホスト名 ( ) は、最初のエントリの最初の列にあります。その後に、私が本当に気にしないものmail.yahoo.comが多数あり、その後に実際の IP (これは重要です) のレコードがあります。CNAMESA

CNAMESまたはレコードの順序が乱れる可能性はありますかA? たとえば、次のようになります。

ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net. #(!)BAD
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net. #(!)BAD
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

あるいはさらに悪い例(実際のA記録は上にあります):

any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.

あるいは、最悪の場合(dig投稿の上部に示されているように、マルチ解像度で実行した場合):

ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.  # This one I want
gmail.com.                       299    IN  A       173.194.123.21            # This one I want
gmail.com.                       299    IN  A       173.194.123.22            # This one I want
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.          # This one I want
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

よろしくお願いします。

答え1

いいえ、返される結果の順序は DNS サーバー次第であり、それを制御することはできません。したがって、特定の DNS サーバーからの順序に依存することはありません。

実際のクエリは順番に実行されると私は信じており、これまでのテストでもこれが確認されています。あなたのケースでは、最初に google.com、最後に mail.google.com です。これは、dig がコマンド ラインで指定した順序でクエリを実行するためです。

コマンドライン構文の設定方法により、順序が重要になります。これが私の答えです。指定された順序でアプローチしないと、非グローバル修飾子が台無しになります。

man ページから:

dig の BIND 9 実装では、コマンド ラインで複数のクエリを指定することをサポートしています (-f バッチ ファイル オプションのサポートに加えて)。これらの各クエリには、独自のフラグ、オプション、およびクエリ オプションのセットを指定できます。

この場合、各クエリ引数は、上記のコマンドライン構文の個々のクエリを表します。各クエリ引数は、標準オプションとフラグ、検索対象の名前、オプションのクエリ タイプとクラス、およびそのクエリに適用するクエリ オプションで構成されます。

関連情報