FreeBSD  10でunboundを使ってみる
⼒力力武  健次  （りきたけ  けんじ）/  @jj1bdx  2013年年11⽉月28⽇日  DNSOPS.JP  BoF1

rikitake-freebsd10-unbound-public.key - December 10, 2013そもそもなんでUnboundを使うことになったのか2

rikitake-freebsd10-unbound-public.key - December 10, 2013

• BINDのサポートが⼤大変  • リリーススケジュールとの調整が難しい  • DNSSEC  validationの効率率率的実装をしたい  • libcを書き換えたくない  • local  caching  resolverが欲しい  • さらに詳しい事情はこちらを  • http://blog.des.no/2013/09/dns-‐‑‒in-‐‑‒freebsd-‐‑‒10/3

rikitake-freebsd10-unbound-public.key - December 10, 2013

PortsからUnboundもBINDも  なくなるということはありません• FreeBSD  10のbaseに組み込む実装は全部/usr/sbinの下に⼊入るが，Portsは/usr/localの下なので関係ない  • baseのライブラリは/usr/lib/private  (!)というなかなか変な名前のディレクトリに⼊入る（ここのライブラリの中⾝身をbase以外で触ったらどうなるのかは予想がつかない）  • BINDを使いたければPortのdns/bind99あたりが良良  • baseのUnboundはlibeventをリンクしてないので，⼤大規模なcache  resolverならPortのdns/unboundがおすすめ

4

rikitake-freebsd10-unbound-public.key - December 10, 2013

実際の設定は?
• /etc/rc.confにこの1⾏行行だけ  local_̲unbound_̲enable=“YES"  • service  local_̲unbound  start  で起動します  • 実際には  /usr/sbin/local-‐‑‒unbound-‐‑‒setup  が動いてセットアップをしてくれます5

rikitake-freebsd10-unbound-public.key - December 10, 2013

/etc/resolv.confが  消えてなくなるわけではありません• resolvconf(8)  というコマンドで⾃自動設定  • こんな感じです  search  priv.example.com  options  no_̲tld_̲query  #  nameserver  172.xx.yyy.1  #  nameserver  172.xx.yyy.2  nameserver  127.0.0.1  options  edns0  • 127.0.0.1に他のcache  resolverを動かしている
場合は設定変更更が当然ですが必要です6

rikitake-freebsd10-unbound-public.key - December 10, 2013

Unboundのデフォルト設定で  困ること
• man  5  unbound.conf  を良良く読む必要あり  • プライベートアドレスの逆引きはデフォルト

ではnxdomainを返すようになっている  • ローカルゾーンを定義してやる必要あり

7

rikitake-freebsd10-unbound-public.key - December 10, 2013

ローカルゾーン⽤用設定例例(1)#  /var/unbound/private.conf  server:                  #  these  local-‐‑‒zones  are                  #  to  unblock  private  address  reverse  lookups                  local-‐‑‒zone:  “priv.example.com."  nodefault                  local-‐‑‒zone:  "xx.172.in-‐‑‒addr.arpa."  nodefault                  local-‐‑‒zone:  "d.f.ip6.arpa."  nodefault  !                #  insecure  domains  for  DNSSEC                  domain-‐‑‒insecure:  "priv.k2r.org"                  domain-‐‑‒insecure:  "xx.172.in-‐‑‒addr.arpa"                  domain-‐‑‒insecure:  "d.f.ip6.arpa"  8rikitake-freebsd10-unbound-public.key - December 10, 2013

ローカルゾーン⽤用設定例例(2)#  /var/unbound/forward.conf  forward-‐‑‒zone:                  name:  .                  forward-‐‑‒addr:  172.xx.yyy.1                  forward-‐‑‒addr:  172.xx.yyy.2                  forward-‐‑‒addr:  fdxx:yyy:zzz:qqq::ww:1                  forward-‐‑‒addr:  fdxx:yyy:zzz:qqq::ww:2

9rikitake-freebsd10-unbound-public.key - December 10, 2013

ローカルゾーン⽤用設定例例(3)#  /var/unbound/unbound.conf  #  Generated  by  local-‐‑‒unbound-‐‑‒setup  server:                  username:  unbound                  directory:  /var/unbound                  chroot:  /var/unbound                  pidﬁle:  /var/run/local_̲unbound.pid                  auto-‐‑‒trust-‐‑‒anchor-‐‑‒ﬁle:  /var/unbound/root.key  #  ここからは⼿手動で追加  include:  /var/unbound/private.conf  include:  /var/unbound/forward.conf10

rikitake-freebsd10-unbound-public.key - December 10, 2013

Unbound+ldns他の変化による  メリット
• OpenSSHでSSHFP  RRのvalidationができるようになった  • local_̲unboundをenableすることで，resolv.confのresolver数制限(3)を気にせずに，好きなだけforwarderの相⼿手が増やせる  • DHCPなどの動的設定にも⾃自動で対応できる

11

rikitake-freebsd10-unbound-public.key - December 10, 2013

余談:  FreeBSD  10の開発状況• 現在テスト中  (10.0-‐‑‒RC1)  (2013-‐‑‒12-‐‑‒09現在)，2014年年初めにリリースの予定  • 基本的には磐⽯石かつ安定している  • libiconvがCitrusベースとなりlibcに組み込まれたことによる問題が10.0-‐‑‒BETA3まではあったが，現在は解消している．この問題に関する共有ライブラリのoverloadingによる対策はこちら:  https://github.com/jj1bdx/freebsd-‐‑‒gnu-‐‑‒libiconv-‐‑‒hack  • 9.2-‐‑‒RELEASEを使っていれば移⾏行行は苦労しないはず12

rikitake-freebsd10-unbound-public.key - December 10, 2013

要約
• FreeBSD  10からはUnbound+ldnsが標準装備  • 今までのPortsとは⼀一切切⼲干渉しない  • とはいえUnboundなのでプライベートアドレスだとそれなりの設定は必要  • FreeBSDの中では/usr/lib/privateとか作って結構ややこしいことになっているが，今後のことを考えて今回の実装変更更を⾏行行った
13

rikitake-freebsd10-unbound-public.key - December 10, 2013