web-dev-qa-db-ja.com

DNSサーバーがDiGでマスターかスレーブかを判断する

Digまたはnslookupを使用して、サーバーがマスターまたはスレーブのどちらに設定されているかを判断する方法はありますか?サーバーがスレーブの場合、マスターのIPアドレスを返しますか?

4
Michael Moser

私の知る限り、答えはノーです。DNSサーバーには数十億のバリエーションがあるため、確かに標準的な方法はありません。 1つのオプションは、マスターのIPアドレスが含まれていることが保証された「masterdns.mydomain.com」レコードを作成することです(公開しないでください。必要ありません)。次に、必要なのは、マスターに提供するIPへのDNSサーバーで、準備は完了です。エイリアシング/マルチホーミング/何でも(別のサーバーであることを保証することはできません)のため、これも不完全ですが、..

..これらすべてを自分で設定していることを暗示しているようです。その場合は、masterdns.mydomain.comレコードが必要です。

0
Maas

いいえ、方法はありません。 DNSプロトコルは、外部からマスター/スレーブの関係を学習するために何も提供しません。

また、この区別は今日ではしばしばなくなっています。多くのドメインにはマスターのみがあり、共通のデータベースで同期されています。

ヒューリスティックを使用することはできますが(Maasの提案を参照するか、シリアル番号の増加を使用してください。増加する最初のネームサーバーがマスターになります)、明らかに信頼性がありません。

3
bortzmeyer

まず、技術的には、DNSサーバーは必ずしもマスターまたはスレーブだけである必要はありません。これは、ドメインごとに異なる場合があります。一部のドメインではマスターであり、他のドメインではスレーブである可能性があります。

ドメイン名のDNSゾーンが正しく構成されている場合は、ゾーンのSOAレコードを要求できます。このレコードには、(とりわけ)プライマリDNSサーバー(マスター)のホスト名が含まれています。

例えば:

C:\>nslookup
Default Server:  UnKnown
Address:  192.168.1.1

> set type=SOA
> google.com.
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
google.com
        primary name server = ns1.google.com
        responsible mail addr = dns-admin.google.com
        serial  = 1396486
        refresh = 7200 (2 hours)
        retry   = 1800 (30 mins)
        expire  = 1209600 (14 days)
        default TTL = 300 (5 mins)

これで、プライマリサーバー名(SOAレコードから-この場合は「ns1.google.com」から)で別のルックアップを実行して、マスターのIPアドレスを取得できます。

C:\nslookup ns1.google.com.
Server:  UnKnown
Address:  192.168.1.1

Non-authoritative answer:
Name:    ns1.google.com
Address:  216.239.32.10

この場合の答えは216.239.32.10です。

2
Jesper