unboundとbind9の違い
CentOS7ではDNSサーバとして主に2つのパッケージが用意されています。 2つの違いを調べました。
Unboundとは?
Unboundは主にキャッシュDNSサーバを運用する際に用いられるソフトウェアです。 アーキテクチャはVerisignなどが開発し、そのC言語版のメンテナンスはNLnet Labsという会社によって行われています(公式ウェブより)。 OSSですが、有償サポートも行われています。 http://unbound.net/
UnboundとBindの違い
Redhat系のOSを使用してDNSサーバを設置する場合、bindというOSSを利用することが定石でした。 なぜUnboundが新たに登場して活躍しているのでしょうか。違いを見てみましょう。
Bind | Unbound | |
---|---|---|
キャッシュサーバ | ○ | ○ |
コンテンツサーバ | ○ | △ |
権威サーバ | ○ | × |
リリース | 2000(Ver.9) | 2008(Ver.1) |
ライセンス | ISC(≑BSD) | BSD |
bindとUnboundのライセンスは変わりありません。機能はむしろbindの方が多くこちらを使った方が良いように感じます。 しかしbindは古くから開発された巨大なOSSであり、脆弱性を狙った攻撃が多いように感じます。(名前解決の仕組みそのものが脆弱性の温床であることもありますが。) この点、Unboundはまだbindほどメジャーではない上にアーキテクチャが新しいので攻撃される可能性は低いです。 また、権威DNSサーバを設置する必要のあるユーザはそう多くはないので、多くの人は機能制限版のunboundの方がむしろ安全とも言えます。
では、unboundの使い方を見てみましょう。
UnboundをDNSキャッシュサーバとして利用する
まずは設定ファイルを編集します。なお、DNSSECの設定はしないものとします。
# comment unboundのIPアドレスを設定
interface: 127.0.0.1
interface: 192.168.12.43
# comment IPv6が不要の場合
do-ip6: no
# comment 応答するIPアドレスを指定
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: 192.168.1.0/24 allow
DNSの問い合わせをフォワーディングするには、conf.dディレクトリ内に新たにforward.confを作成すれば良いです。
forward-zone:
# ドメインに応じて問い合わせ先を変更可能
name: "."
# 上位のDNSサーバを指定
forward-addr: 133.11.58.3
forward-addr: 133.11.58.4
forward-addr: 133.11.100.151
forward-first: yes
設定し終わったら、サービスを開始します。
# systemctl start unbound.service
基本はこれだけで動作するはずです。他のマシンからnslookupコマンドで動作を確認してみてください。
$ nslookup
# DNSサーバアドレスを指定
> server 192.168.1.XX
> www.google.com
# comment 以下に解決結果が表示されればOK