Unbound,知ってる? この先10年を見据えたDNS

第2回 Unboundの導入(新規導入編)

この記事を読むのに必要な時間:およそ 3 分

動作確認

Unboundはデフォルトの設定のままで利用できますが,IPv6での通信ができない場合には設定ファイルunbound.confに次のように「do-ip6: no」を加えてください。

server:
    do-ip6: no

それではunboundを起動させてみましょう。

# /etc/init.d/unbound start

drillを使って動作確認をしてみます。drillの使い方はdigとほとんど同じです。

次の例ではgihyo.jpを正引きしてみました。Aレコードが正しく取得できれば成功です。

$ drill gihyo.jp. @127.0.0.1 A
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 19777
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;; gihyo.jp.    IN      A

;; ANSWER SECTION:
gihyo.jp.       86400   IN      A       219.101.198.19

;; AUTHORITY SECTION:
gihyo.jp.       86400   IN      NS      ns2.iprevolution.co.jp.
gihyo.jp.       86400   IN      NS      mail0.gihyo.co.jp.

;; ADDITIONAL SECTION:

;; Query time: 507 msec
;; SERVER: 127.0.0.1
;; WHEN: Fri Oct 31 18:32:59 2008
;; MSG SIZE  rcvd: 102

問題がなければ,リゾルバの設定ファイル/etc/resolv.confを次のように書き換えてください。

nameserver 127.0.0.1

設定例

ここではいくつかの設定例を紹介します。

ホスト自身のリゾルバとして使う場合

ホスト自身のDNSキャッシュサーバとして使う場合には,先ほどの動作確認で行った設定のままで利用できます。

LAN内の他のホストのリゾルバとして使う場合

LAN内の他のホストからの再帰問い合わせを受け付けるDNSキャッシュサーバとして使用する場合には,設定ファイルにバインドするインターフェースの設定「interface」とアクセス許可の設定「access-control」を追加する必要があります。access-controlには「deny」⁠応答しない⁠⁠,⁠refuse」⁠エラーを返す⁠⁠,⁠allow」⁠許可する)の制御が出来ます。

interfaceとaccess-controlにはデフォルトで次のような設定が暗黙で設定されています。つまり,localhostからのみアクセスを許可しているということです。

    interface: 127.0.0.1
    interface: ::1
    access-control: 0.0.0.0/0 refuse
    access-control: 127.0.0.0/8 allow
    access-control: ::0/0 refuse
    access-control: ::1 allow
    access-control: ::ffff:127.0.0.1 allow

このことをふまえた上で設定を追加してください。設定例は次の通りです。

    interface: 0.0.0.0
    interface: ::0
    access-control: 192.168.0.0/24 allow
    access-control: 2001:DB8::/64 allow

設定が終わったら,unboundを再起動します。

他のホストから,このホストを指定してドメイン名の検索などを行ってみてください。なお,パケットフィルタリングの設定でTCPとUDPの53番ポートを開けるのを忘れないでください。

LAN内のホストの名前の解決をする場合

ちょっとしたLAN内のホストの名前の解決のために,DNSコンテンツサーバを別途立ち上げるのもどうかなと思うときには,Unboundを簡易的なDNSコンテンツサーバとして利用することもできます。

ローカルデータ「local-data」を設定することで,この機能を利用することができます。設定方法は「local-data」の値として次のようにリソースレコードを記述するだけです。リソースレコードの書き方はBINDのゾーンデータの書き方と同じです。TTLとCLASSは省略可能です。

    local-data: "hogohoge.example.org.     A   192.168.0.1"
    local-data: 'hogohoge.example.org.     TXT "text record"'
    local-data: "1.0.168.192.in-addr.arpa. PTR hogohoge.example.org."

設定が終わったらunboundを再起動して,drillで確認してください。

まとめ

今回はUnboundを新規導入する方法を紹介しました。DNSキャッシュサーバとして動かすだけであればデフォルトの設定で簡単に動きます。簡易的なDNSコンテンツサーバとしても利用することができます。

設定や運用のTIPSなどについては次回以降にて紹介します。

著者プロフィール

滝澤隆史(たきざわたかし)

株式会社サードウェアに所属。

OSSの活動としては,メールシステム全般に興味があり,TTYベースのメーラMuttの開発に参加したり,qmailのアドオンパッケージを開発したり,SpamAssassinの日本語対応パッチの開発をしてきた。メールだけではなく,DNSにも興味があり,先日,日本Unboundユーザ会を立ち上げた。