CNAMEを解析せずにdigを使用したアドレスのクエリ

CNAMEを解析せずにdigを使用したアドレスのクエリ

マニュアルページを詳しく見てみると、答えは「いいえ」と確信しています。しかし、ホストレコードがdig解析されるのを防ぐ方法はありますかCNAME

たとえば、

$ dig +short mail.yahoo.com A
edge.gycpi.b.yahoodns.net.
66.218.84.40
66.218.84.44
66.218.84.41
66.218.84.45
66.218.84.42
66.218.84.43

このホストの記録がないため、回答を受け取ることがAできません。そういう点でA他の記録型とは異なって扱われているようです。AAAA

私は成功しなかったとオプションを試しました+norecurse+noadditional最初の行がFQDNである複数行があるかどうかを確認するために、スクリプトの応答を簡単に解析できますが、これを行うべきではないようです。

答え1

~によるとRFC 1034レコードタイプを要求できCNAME、存在する場合はそのレコードタイプを受け取ります。

dig -t cname +short www.bbc.co.uk
www.bbc.co.uk.pri.bbc.co.uk.

Aただし、記録を要求するが、次の方法で照会を許可しない方法はないようですCNAME

dig -t cname +short uk.www.bbc.co.uk.pri.bbc.co.uk    # No output

もちろん、RFC 1034セクション3.6.2書いた、

ネームサーバーがドメイン名に関連付けられているリソースセットで必要なRRを見つけることが失敗した場合は、リソースセットに一致するCNAMEクラスのレコードが含まれていることを確認してください。その場合、ネームサーバーはCNAME応答にレコードを含め、レコードのデータフィールドで指定されたドメイン名からクエリを再開しますCNAME。このルールの1つの例外は、CNAMEこのタイプに一致するクエリが再起動されないことです。

RFC用語によると、しなければならない「この説明には明確な措置が記載されています。

必要な動作を得るには、dig次のようないくつかのカスタムコードをラップする必要があります。

query=www.bbc.co.uk

result=$(dig -t cname +short "$query" | xargs)
[ -z "$result" ] && result=$(dig -t a +short "$query" | xargs)

printf "Result: %s\n" "$result"

関連情報