DNS CentOS 6.6に名前解決テスト用のdrillコマンドをインストールする(rpmでインストール)

はじめに
===

CentOS 6.6サーバに対して、DNS/DNSSEC名前解決用のdrillコマンドをインストールする手順です。

drillコマンドとは、NDSやunboundを開発したNLnet Labs様が開発したDNS/DNSSEC名前解決用コマンドになります。

drillコマンドはldnsパッケージに含まれております。今回はrpmでldnsをインストールして、drillコマンドをインストールします。

drillコマンドインストール対象の環境について
===

・CentOS release 6.6 (2.6.32-504.3.3.el6.x86_64)

参考サイト
===

以下のサイトを参考にさせて頂きました。
http://unbound.jp/ldns/drill/
https://www.nlnetlabs.nl/projects/drill/

drillコマンドインストールにあたり、以下のサイトのrpmを利用させて頂きました。
http://rpmfind.net/linux/rpm2html/search.php?query=ldns
ftp://rpmfind.net/linux/epel/6/x86_64/ldns-1.6.17-1.el6.x86_64.rpm

CentOS 6.6サーバへのdrillコマンドインストール手順
===

・drillコマンドはデフォルトではCentOS 6.6にはインストールされていないと思います。

```
# rpm -qa | grep ldns
#
# which drill
/usr/bin/which: no drill in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
#
```

・まずは、CentOS 6.6にdrillコマンドを動かす上で必要なパッケージをインストールします。

openssl-develはインストールしなくてもdrillコマンドは動きましたが、drill -TDオプションでOpenSSLが必要そうなので、openssl-develもインストールする事にしました。

```
# cat /etc/redhat-release
CentOS release 6.6 (Final)

# uname -a
Linux *********** 2.6.32-504.3.3.el6.x86_64 #1 ******** x86_64 x86_64 x86_64 GNU/Linux
#

# yum -y install wget
# yum -y install gcc
# yum -y install glibc-devel
# yum -y install libpcap-devel
# yum -y install openssl-devel
```

・drillコマンドを含んでいるldns 1.6.17をインストールします。

```
# cd /usr/local/src
# pwd
/usr/local/src

# wget ftp://rpmfind.net/linux/epel/6/x86_64/ldns-1.6.17-1.el6.x86_64.rpm

# ll /usr/local/src/ldns-1.6.17-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 290556 Jan 20 00:51 /usr/local/src/ldns-1.6.17-1.el6.x86_64.rpm
#

# rpm -ivh /usr/local/src/ldns-1.6.17-1.el6.x86_64.rpm
warning: /usr/local/src/ldns-1.6.17-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:ldns                   ########################################### [100%]
#
```

・ldnsとdrillコマンドがインストールされた事を確認します。

```
# rpm -qa | grep ldns
ldns-1.6.17-1.el6.x86_64
#

# which drill
/usr/bin/drill
#
```

drillコマンドを使用した名前解決テスト
===

以下のようにdrillコマンドを利用して、DNS名前解決をテストする事が出来ます。

```
# drill www.google.co.jp A
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 47537
;; flags: qr rd ra ; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; www.google.co.jp.    IN      A

;; ANSWER SECTION:
www.google.co.jp.       220     IN      A       173.194.120.87
www.google.co.jp.       220     IN      A       173.194.120.88
www.google.co.jp.       220     IN      A       173.194.120.95
www.google.co.jp.       220     IN      A       173.194.120.79

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: XX.XX.XX.XX
;; WHEN: Tue Jan 20 01:10:57 2015
;; MSG SIZE  rcvd: 98
#
```

以下はdrillコマンドで、ルートサーバからwww.google.co.jpまでDNSSEC(-D)の追跡(-T)をする例です。

```
# drill -TD www.google.co.jp
Warning: No trusted keys were given. Will not be able to verify authenticity!
;; Domain: .
;; Signature ok but no chain to a trusted key or ds record
[S] . 172800 IN DNSKEY 257 3 8 ;{id = 19036 (ksk), size = 2048b}
. 172800 IN DNSKEY 256 3 8 ;{id = 16665 (zsk), size = 1024b}
Checking if signing key is trusted:
New key: .      172800  IN      DNSKEY  256 3 8 AwEAAe3fSrbLBy3LOS7pnxEUhvPZTE2H5dIGsI/UfruI/nOEvWWa/PSX2BFedBkEqOlYdjdNF2f+6lmfk2Od/xu0v5bVqxFE+/24v3hZSlWBxvXzPTAGHrbW/IJYEPqlzVOAS4XdUgHg0N7IbLywNHMvB+Yf+Nm6ctyXXFLV4WTNnzs7 ;{id = 16665 (zsk), size = 1024b}
[S] jp. 86400 IN DS 36484 8 1 4b95f2d988e20f5ed9a9207782e933f8b0db089e
jp. 86400 IN DS 36484 8 2 f45229ac573050e1d4b3089943bdb1d38704b827c441a4fa5ff43bb03f7b3b58
;; Domain: jp.
;; Signature ok but no chain to a trusted key or ds record
[S] jp. 86400 IN DNSKEY 256 3 8 ;{id = 5511 (zsk), size = 1024b}
jp. 86400 IN DNSKEY 257 3 8 ;{id = 36484 (ksk), size = 2048b}
jp. 86400 IN DNSKEY 256 3 8 ;{id = 61398 (zsk), size = 1024b}
[S] Existence denied: co.jp. DS
;; No ds record for delegation
[S] Existence denied: co.jp. NS
#
```

以上になります。