DNSコマンドラインツールのdrillをソースコードからコンパイルしてみた

LDNS drillをソースコードからインストールしてみました。
2021.07.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

DNSサーバーへ問い合わせるツールとしては BIND に付属する dig が定番です。

dig で足りない機能やDNSSECをいい感じにやりたいときの代替ツールの一つとして、ldns に付属する drill があります。

drill の最新機能を使いたいために、drill をソースコードからインストールする機会があったので、その手順を紹介します。

環境

  • Ubuntu 20.04(EC2を利用)

パッケージからインストール

特殊な要件がなければ、ソースコードからインストールする必要はありません。

素直に ldnsutils パッケージからインストールしましょう。

$ sudo apt install ldnsutils

ソースコードからインストール

やんごとなき理由により、ソースコードからインストールする手順です。

まず、コンパイルに必要なパッケージをインストールします。

$ sudo apt install unzip build-essential libtool libssl-dev

次にソースコードを取得します。

ソースコードは https://github.com/NLnetLabs/ldns で管理されています。 ソースコードを展開します。

git レポジトリを clone しても OK です。

$ curl -L -o ldns.zip https://github.com/NLnetLabs/ldns/archive/refs/heads/develop.zip
$ unzip ldns.zip
$ cd ldns-develop/

最後に、コンパイルします。

コンパイル手順は README.git にあります。

configure 時に --with-drill をつけ忘れないようにしてください。

$ libtoolize -ci
$ autoreconf -fi
$ ./configure --enable-rrtype-svcb-https --with-drill
$ make
$ sudo make install
$ sudo ldconfig  # drill は共有ライブラリ LDNS に依存するため

インストールした drill コマンドを確認します。

$ which drill
/usr/local/bin/drill

$ drill -v
drill version 1.7.2 (ldns version 1.7.2)
Written by NLnet Labs.

Copyright (c) 2004-2008 NLnet Labs.
Licensed under the revised BSD license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.

最後に、最新の drill 1.7.2 で追加された HTTPS リソースレコード機能を確認します。

$ drill https cloudflare.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 17104
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; cloudflare.com.      IN      HTTPS

;; ANSWER SECTION:
cloudflare.com. 300     IN      HTTPS   1 . alpn=h3-29,h3-28,h3-27,h2 ipv4hint=104.16.132.229,104.16.133.229 ipv6hint=2606:4700::6810:84e5,2606:4700::6810:85e5

...

めでたしめでたし。

参考