C#でDNSレコードの存在確認をしたのでそのメモ

環境


DnsClient.NET


今回、DNSレコードの存在確認にDnsClient.NETというライブラリを使用しました。スッゲー楽でした。

サンプルコード


機械的にDNSの存在確認を行う必要があったので、調べたい対象のDNSのリストが記述されたファイルを順番に読み込んで存在しない場合は別ファイルに書き出すというような処理をやってみました。

1
using System;
2
using System.IO;
3
//DnsClientを参照に加える
4
using DnsClient;
5
6
namespace DNSRecordCheck
7
{
8
    class Program
9
    {
10
        static void Main(string[] args)
11
        {
12
            //LookupClientクラスのインスタンスを生成
13
            var lookupClient = new LookupClient();
14
15
            using (var sr = new System.IO.StreamReader(@"c:\domains.txt"))
16
            {
17
                while (!sr.EndOfStream)
18
                {
19
                    //調査対象のリストから1行ずつ読み込み
20
                    var line = sr.ReadLine();
21
22
                    using (var sw = File.AppendText("./ignores.txt"))
23
                    {
24
                        //読み込んだDNSを問い合わせ(今回はMXレコードを対象)
25
                        var result = lookupClient.Query(line, QueryType.MX);
26
27
                        //結果が0件だと存在しないと判断する
28
                        if (result.Answers.Count == 0)
29
                        {
30
                            //別ファイルに書き出し
31
                            sw.WriteLine(line);
32
                        }
33
                    }
34
                }
35
            }
36
        }
37
    }
38
}

LookupClientQueryメソッドで対象のドメインとレコードの種類(AとかNS)を指定して、結果が0件なら存在しないと判断させてます。

今回はMXレコードを対象としていますがQueryTypeというEnumでレコードの種類(AとかNSとか)が定義されているので、様々な種類のレコードを対象に調べることもできます。