こんにちはやまぱんです。
名前解決するとよく、"権限のない回答 / Non-authoritative answer" とでると思います。
今回はその表示がない回答、つまり権限がある回答を出す方法について書きます。
前書き
そもそも権限のない回答とは
キャッシュDNSサーバ(権威DNSサーバでない)が回答したということ。
つまり、そのレコード情報を持ってる本人に聞いたわけじゃないけど、そういってた人がいるよ、とまた聞きのような回答を得たイメージです。
確かに信用性に欠ける回答って感じはします。
やりたいことのイメージ
つまり、また聞きではなくて、その情報を持ってる張本人にききましょう。
(≒権威DNSサーバを使って名前解決しましょう)
検証
対象ドメイン:az.yamapan.tokyo
*事前に検証用に用意したものです。(AzureDNSサービスを使って管理しています。)
digでも同様のことができるが、今回は nslookup を用いる
普通に名前解決する
下記のような表示となります。
権限がないですね。
$ nslookup az.yamapan.tokyo
サーバー: UnKnown
Address: 2400:4150:9c2:500::1
権限のない回答:
名前: az.yamapan.tokyo
Address: 20.210.114.52
ns レコードをひく
普段 nslookup をオプションを付けずにするとAレコードにの問い合わせをして、その結果を返しています。
つまり A レコードに FQDN とIPアドレスの紐づけ情報が入っています。
今回はAレコードではなくて nsレコード、ネームサーバレコードをひいてみます。
このクエリのネームサーバはどこですか?ときくようなイメージです。
- オプションは -type=ns を使います
下記のような権限が確認できます。
az.yamapan.tokyo のネームサーバは nameserver = ns1-38.azure-dns.com などで、IPアドレスは 150.171.10.38 などであるということが分かります。
nslookup -type=ns az.yamapan.tokyo
$ nslookup -type=ns az.yamapan.tokyo
サーバー: UnKnown
Address: 2400:4150:9c2:500::1
権限のない回答:
az.yamapan.tokyo nameserver = ns1-38.azure-dns.com
az.yamapan.tokyo nameserver = ns2-38.azure-dns.net
az.yamapan.tokyo nameserver = ns3-38.azure-dns.org
az.yamapan.tokyo nameserver = ns4-38.azure-dns.info
ns1-38.azure-dns.com internet address = 150.171.10.38
ns1-38.azure-dns.com AAAA IPv6 address = 2603:1061:0:10::26
ns2-38.azure-dns.net internet address = 150.171.16.38
ns2-38.azure-dns.net AAAA IPv6 address = 2620:1ec:8ec:10::26
ns3-38.azure-dns.org internet address = 13.107.222.38
ns3-38.azure-dns.org AAAA IPv6 address = 2a01:111:4000:10::26
ns4-38.azure-dns.info internet address = 13.107.206.38
ns4-38.azure-dns.info AAAA IPv6 address = 2620:1ec:bda:10::26
権限のある回答を確認する
ネームサーバに対して直接名前解決してみることで権限のある回答を確認することができます。
先ほどの結果より、ネームサーバのIPアドレスの一つが 150.171.10.38 であることが分かったので、そこに向けて名前解決します。
下記のように後ろのDNSサーバのアドレスを入れることでDNSサーバを指定して名前解決することができます。
nslookup az.yamapan.tokyo 150.171.10.38
"権限のない回答"がない、つまり権限がある回答です!
以上。