サーバーのCNAMEについてDNSを照会する


回答:


6

環境を指定しませんでしたが、Unixを使用している場合は、digとgrepの組み合わせが機能するはずです。ns.example.comネームサーバーのホスト名、ホストが属するexample.comドメイン、HOSTはすべてのCNAMEレコードを検索するホストです。これは、実際にはgrepコマンドのタブ文字であり、文字通りではありません<TAB>(grep文字列を調整する必要がある場合があります)。

また、ネームサーバーは、ゾーン転送を許可するように構成する必要がありますが、その詳細は実装に依存します。

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

または、Windowsを使用している場合は、nslookupを使用できます。

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

これにより、「知ってexample.comいるns.example.com」ドメインのすべてのレコードがFILEに出力されます。その後、対応するCNAMEを探してテキストファイルをソートするためのツールを使用できます。

それともこれでテストされていない(しかし、探して上品正しい)perlのスクリプト

#!/usr/bin/perl

use Net::DNS;

($target, $zone) = @ARGV;

$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
     print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}

完全性のためのいくつかのポイント:

  • @wombleが述べたように、CNAMEのPTRレコードに相当するものはありません。ホストのAレコードに対応するCNAMESのすべてのゾーン情報をソートすることにより、コンテキスト認識を使用する必要があります。
  • これは、DNSサーバーでのみ機能します(ゾーン情報を表示する権限がある場合)。他のゾーンに属するホストのCNAMEを「トレース」する方法はありません。
  • @BillThorが述べているように、CNAMES以外にホスト名をエイリアスする他の方法があります。繰り返しますが、いくつかのコンテキスト認識が必要になります。

質問が更新されました。Windowsを使用しています。
-PhilPursglove

4

DNS構成にアクセスできる場合、このデータを発見するのはかなり簡単です。ただし、誰でもサーバーを指すCNAMEを持つことができます。これらをトレースすることはできません。

@wombieが指摘したように、CNAMESの逆ルックアップはできません。CNAMESに相当するPTRはありません。たとえそれが存在する可能性がある場合でも、いくつかのレコードのみが存在します。ランダムに選択されたドメインを簡単に確認すると、PTRレコードがAレコードを指し示していないことがよくあります。同様に、ランダムアドレスのPTRレコードの逆ルックアップを実行しても、対応するAレコードが見つからないことがよくあります。

編集:CNAMEはシステムをエイリアスする唯一の方法ではありません。DNSでは、複数のAレコードが同じアドレスを指すことができます。機能的には、これはCNAMEの追加と同じですが、方法は異なります。ドメイン外でも同じ問題が発生します。さまざまなAレコードを検索するには、問題のシステムのIPアドレスを検索します。


3

DNSプロトコルでは、そのような「逆」ルックアップを行うことはできません。kceが提供するgrepの提案を使用するなど、プロトコルを終了する必要があります。


2

PowerShellを使用してください:

Microsoft DNSサーバーのプライマリ名を確認します。

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx(IP)'" -ComputerName mydnsservername

Microsoft DNSサーバーからそのホストのすべてのcnameを取得します。

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "primaryname = 'ドットで終了した最初のクエリのプライマリ名'" -ComputerName mydnsservername | select ownername、primaryname


1
  1. マシンがサービスを提供するすべてのゾーンを見つけます。
  2. ゾーンごとにdnscmd、ゾーンデータのエクスポートに使用します。
    dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
  3. エクスポートされたファイルでCNAME、ターゲットドメイン名を指すリソースレコードを検索します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.