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それに対応するレコードがCNAME他のシステムに対応するレコードまたはA別のホスト名のレコードの前に表示されないようにできますか?

たとえば、次の点に集中しますmail.yahoo.com(該当するIPのみをmail.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最初の項目の最初の列です。それからCNAMES私はあまり気にしないものがたくさんあり、それからA(私が気にする)実際のIPを含む記録があります。

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

dig結果は並べ替えられず、ネームサーバーが結果を返す順序で表示されます。ネームサーバーは通常、特定のレコードが照会されるたびに(単純な形式のロードバランシングを達成するために)結果を混在させます(ランダムまたはラウンドロビン)。ただし、この設定を上書きするサーバー構成オプションがある可能性があります。 BINDの場合、関連するオプションは次のとおりです。rrset-orderそしてsortlist

私が知っている限り、1回の呼び出しで複数のクエリを実行すると、各名前に対して順番に個別に実行するのとdig同じです。digコードがコマンドラインに表示される順序で繰り返されない理由を想像することはできません。

サーバーがCNAME最終回答を得るために記録に従う必要がある場合DNS仕様各エイリアスが処理順に応答に追加されることを示します。したがって、入力した元の名前が最初のランクに上がり、最終結果は最後にランク付けされることを保証できます。

関連情報