Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)

5,401 views

Published on

オープンソースカンファレンス2014 Tokyo/Spring
Unbound/NSD最新情報

Published in: Technology
  • Be the first to comment

Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)

  1. 1. 1 オープンソースカンファレンス  2014  Tokyo/Spring Unbound/NSD最新情報 滝澤  隆史 ⽇日本Unboundユーザー会    http://unbound.jp/ OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  2. 2. 2 私は誰 •  ⽒氏名:  滝澤  隆史  @ttkzw •  DNSとの関わり ▫  システム管理理者として1997年年から2006年年ま でネームサーバの運⽤用 –  BIND4,  BIND8,  djbdns,  BIND9 ▫  現在は個⼈人サーバでネームサーバを運⽤用 –  NSD,  Unbound ▫  ⽇日本Unboundユーザー会 –  Unbound/NSDの⽂文書の翻訳 •  DNSをネタとして遊んでいるおじさんです。 ▫  「DNS  RFC系統図」を作っています。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  3. 3. 3 アジェンダ •  なぜBIND以外のDNSサーバーなのか? •  Unboundの概要 •  Unbound最新情報 •  NSDの概要 •  NSD最新情報 •  おまけ ▫  SSLトンネル ▫  NSD  4  の操作例例 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  4. 4. 4 どうしてこうなった OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  5. 5. 5 ⽇日本Unboundユーザー会 •  何となくノリで作った •  なぜか公式(NLnet  Labs)公認 •  ユーザ会と名乗っている割にはコミュニティー として体をなしていない •  ときどき協⼒力力してくださる⽅方がいるので助かっ ている OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  6. 6. 6 ユーザー会の主な活動 •  ウェブサイトの公開 ▫  http://unbound.jp/ •  マニュアル等の翻訳 •  Unboundだけでなく、ldnsとNSDについてもマ ニュアルを翻訳して公開している(翻訳担当者 の趣味) •  技術検証はほとんどできていない OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  7. 7. 7 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  8. 8. 8 なぜBIND以外のDNSサーバーなのか? •  「BINDがあるのに何で別のDNSサーバーを必 要なの?」 •  BINDがデファクトスタンダード •  BINDしかなかったら、ゼロ  デイ  アタックがあ ると全滅 •  ソフトウェアとしての遺伝的多様性が必要 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  9. 9. 9 BIND  9以外のOSSなDNSサーバー •  権威DNSサーバー ▫  NSD ▫  PowerDNS  Authoritative  Server ▫  Knot  DNS ▫  YADIFA ▫  BIND  10 •  キャッシュDNSサーバー(フルサービスリゾルバー) ▫  Unbound ▫  PowerDNS  Recurser ▫  BIND  10 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  10. 10. 10 BIND  9以外のOSSなDNSサーバー •  権威DNSサーバー ▫  NSD ▫  PowerDNS  Authoritative  Server ▫  Knot  DNS ▫  YADIFA ▫  BIND  10 •  キャッシュDNSサーバー(フルサービスリゾルバー) ▫  Unbound ▫  PowerDNS  Recurser ▫  BIND  10 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  11. 11. 11 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  12. 12. 12 Unboundとは •  BINDの代替を⽬目指したキャッシュDNSサー バー ▫  フルスペックのキャッシュDNSサーバー ▫  限定的な権威サーバー ▫  DNSSEC対応 ▫  キャッシュ汚染への⾼高い耐性 ▫  ⾼高い処理理性能 ▫  設定の容易易さ OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  13. 13. 13 Unboundとは •  NLnet  Labsが開発・保守 ▫  Verisign  labs,Nominet,Kirei,EP.netがプ ロトタイプをJavaで開発した ▫  NLnet  LabsがCで実装し直した •  BSDライセンス •  動作環境 ▫  UNIX系OS(Linux,  *BSD,  MacOS  X,   Solaris) ▫  Windows OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  14. 14. 14 NLnet  Labsとは •  オランダにある研究開発機関 •  主にDNSとDNSSECについての調査研究および ソフトウェア開発をしている •  Unbound,  drill,  ldns,  NSD,  OpenDNSSEC OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  15. 15. 15 詳細は  http://unbound.jp/  へ •  Unboundについての紹介資料料あります。 •  ドキュメントの翻訳あります。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  16. 16. 16 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  17. 17. 17 動作環境/依存ライブラリ •  依存するライブラリ ▫  ldns –  NLnet  Labsが開発しているDNSライブラリ ▫  OpenSSL –  GOSTやECDSAに対応していない場合はldnsや unboundのconfigure時に-‐‑‒-‐‑‒disable-‐‑‒gostや-‐‑‒-‐‑‒ disable-‐‑‒ecdsaを付ける必要がある。 ▫  libexpat –  XML  Parser ▫  libevent –  必須ではないがファイル記述⼦子1024個の制限を超 えたい場合には使⽤用する。 –  outgoing-‐‑‒range,  num-‐‑‒queries-‐‑‒per-‐‑‒thread OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  18. 18. 18 動作環境/パッケージ(Linux系) Linuxディストロ Unbound ldns 備考 Debian  GNU/Linux  wheezy 1.4.17   (1.4.21) 1.6.13   (1.6.16) 括弧内はwheezy-‐‑‒backports Debian  GNU/Linux  jessie 1.4.21 1.6.17 Ubuntu  12.04  LTS  (precise) 1.4.16   (1.4.18) 1.6.11 Ubuntu  14.04  LTS  (trusty) 1.4.21 1.6.16 Fedora  20 1.4.21 1.6.16 RHEL  5/CentOS  5 (1.4.20) (1.6.16) RHEL  6/CentOS  6 (1.4.21) (1.6.16) openSUSE  13.1 1.4.21 1.6.16 Gentoo  Linux 1.4.21 1.6.16 括弧内はprecise-‐‑‒backports 標準パッケージなし。 Fedora  EPEL  5より 標準パッケージなし。 Fedora  EPEL  6より server:dns  project OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  19. 19. 19 動作環境/パッケージ(*BSD系) OS Unbound ldns 備考 FreeBSD 1.4.21 1.6.17 Ports NetBSD 1.4.21 1.6.16 Packages  Collection OpenBSD 1.4.21 1.6.17 Ports Mac  OS  X  (MacPorts) 1.4.21 1.6.16 MacPorts Mac  OS  X  (Homebrew) 1.4.21 1.6.17 Homebrew OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  20. 20. 20 動作環境/Windows •  公式サイトにWindows版が公開されている •  インストーラー付き OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  21. 21. 21 バージョンの履履歴 •  0.0(2007年年02⽉月) 最初の開発版リリースから7年年。 ▫  最初の開発リリース 正式リリースからまもなく6年年。 •  1.0.0(2008年年05⽉月) ▫  正式リリース •  1.1.0(2008年年11⽉月) ▫  DLV対応 •  1.2.0(2009年年1⽉月) ▫  unbound-‐‑‒controlコマンド •  1.3.0(2009年年6⽉月) ▫  Windows版、Python対応 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  22. 22. 22 バージョンの履履歴 •  1.4.0(2009年年11⽉月) ▫  トラストアンカーの⾃自動更更新機能 ▫  RSASHA256とRSASHA512サポート(デ フォルト有効) •  1.4.7(2010年年11⽉月) ▫  unbound-‐‑‒anchorコマンド(トラストアン カーの設置および更更新) ▫  GOSTデフォルト有効 •  1.4.11(2011年年6⽉月) ▫  log-‐‑‒queries(クエリーログ出⼒力力)対応 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  23. 23. 23 バージョンの履履歴 •  1.4.13(2011年年9⽉月) ▫  tcp-‐‑‒upstream対応 •  1.4.14(2011年年12⽉月) ▫  ssl-‐‑‒upstream(DNS  over  SSL)対応 •  1.4.17(2012年年5⽉月) ▫  rrset-‐‑‒roundrobin(ラウンドロビン)対応 ▫  minimal-‐‑‒responses対応 ▫  forward-‐‑‒first,  stub-‐‑‒first対応 ▫  ECDSAデフォルト有効 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  24. 24. 24 バージョンの履履歴 •  1.4.19(2012年年12⽉月) ▫  RSAMD5無効 ▫  includeのワイルドカード対応 •  1.4.21(2013年年9⽉月)-‐‑‒  最新バージョン ▫  max-‐‑‒udp-‐‑‒size対応 ▫  unbound-‐‑‒controlのネガティブトラストアン カーの動的管理理に対応 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  25. 25. 25 ここ1年年のトピック OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  26. 26. 26 脆弱性情報 •  Unbound  1.4.14以降降、この2年年間は脆弱性はみ つかっていない •  CVEデータベースを"Unbound"で検索索した結果 ▫  CVE-‐‑‒2012-‐‑‒1192 ▫  CVE-‐‑‒2011-‐‑‒4869 ▫  CVE-‐‑‒2011-‐‑‒4528 ▫  CVE-‐‑‒2011-‐‑‒1922 ▫  CVE-‐‑‒2010-‐‑‒0969 ▫  CVE-‐‑‒2009-‐‑‒4008 ▫  CVE-‐‑‒2009-‐‑‒3602 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  27. 27. 27 この1年年でリリースされたバージョン •  Unbound  1.4.20  (2013-‐‑‒03-‐‑‒21リリース) •  Unbound  1.4.21  (2013-‐‑‒09-‐‑‒10リリース) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  28. 28. 28 max-‐‑‒udp-‐‑‒size •  UDP応答の最⼤大サイズを設定するオプション ▫  デフォルト値は4096 ▫  実装者は東⼤大亮亮さん •  ⽤用途 ▫  ISPのようにキャッシュDNSサーバーを公開し ているような場合 ▫  UDP応答サイズの最⼤大値を⼩小さく設定するこ とによりDNSリフレクション攻撃の影響を下 げる •  Unbound  1.4.21から利利⽤用可能 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  29. 29. 29 unbound-‐‑‒controlのネガティブトラス トアンカーの動的管理理 •  unbound-‐‑‒controlのコマンド追加 ▫  insecure_̲add –  ネガティブトラストアンカーにゾーンを追加 ▫  insecure_̲remove –  ネガティブトラストアンカーからゾーンを削 除 •  ⽤用途 ▫  ネガティブトラストアンカーの動的管理理に利利 ⽤用 •  Unbound  1.4.21から利利⽤用可能 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  30. 30. 30 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  31. 31. 31 NSDとは •  権威DNSサーバー •  Name  Server  Daemon ▫  DNSのアナグラム? OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  32. 32. 32 NSDとは •  NLnet  LabsとRIPE  NCCの共同チームによる開 発 ▫  NLnet  Labs –  オランダにある研究開発機関 ▫  RIPE  NCC –  欧州・中近東地域のRIR •  BSDライセンス •  動作環境 ▫  UNIX系OS(FreeBSD,  Linux,  Solaris,  etc) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  33. 33. 33 NSDの要求事項 (付属⽂文書"REQUIREMENTS"より) •  DNS関連のRFCへの適合 ▫  曖昧なところを⽂文書で説明   •  他の実装に対するコードの多様性   ▫  新たに書き起こしている •  権威サーバのみ ▫  キャッシュやリゾルバー機能を持たない •  オープンソース ▫  最初の公開から OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  34. 34. 34 NSDの要求事項 (付属⽂文書"REQUIREMENTS"より) •  BIND  8/9に対する回帰試験   ▫  違いを理理解する •  ⾼高負荷への耐性   ▫  DDoS攻撃への対処   •  ドキュメンテーション ▫  他の⼈人がコードを保守できるようにする。 •  レビューされたコード ▫  すべてのコードは少なくとも2⼈人にレビューさ れている。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  35. 35. 35 NSDの要求事項 (付属⽂文書"REQUIREMENTS"より) •  単純さ ▫  必要でないものは⾏行行わない •  移植性 ▫  UNIX系OS(FreeBSD,  Linux,  Solaris)   •  保守期間 ▫  初期リリースから12ヶ⽉月 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  36. 36. 36 明確に不不要な機能 (付属⽂文書"REQUIREMENTS"より) •  キャッシュおよびリゾルバー •  ⾔言いなりの応答性 ▫  悪意のあるあるいは役に⽴立立たない応答を制限する。 •  エンドユーザーの使いやすさ ▫  基礎的なUNIXやネットワークの知識識を持ち、ド キュメントを読んで理理解していることを前提とす る。 •  忍び寄る多機能性 ▫  ラウンドロビンのように権威サーバーとして厳密 な必要性がないものは実装しない OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  37. 37. 37 動作環境/パッケージ(Linux系) Linuxディストロ NSD Debian  GNU/Linux  wheezy 3.2.12 Debian  GNU/Linux  jessie 4.0.1 Ubuntu  12.04  LTS  (precise) 3.2.9 Ubuntu  14.04  LTS  (trusty) 4.0.1 Fedora  20 3.2.15 RHEL  5/CentOS  5 (3.2.15) RHEL  6/CentOS  6 (3.2.15) openSUSE  13.1 4.0.0 Gentoo  Linux 備考 4.0.0 標準パッケージなし。 Fedora  EPEL  5より 標準パッケージなし。 Fedora  EPEL  6より server:dns OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  38. 38. 38 動作環境/パッケージ(*BSD系) OS NSD 備考 FreeBSD 4.0.1 Ports NetBSD 4.0.1 Packages  Collection OpenBSD 3.2.6 Ports Mac  OS  X  (MacPorts) 3.2.8 MacPorts Mac  OS  X  (Homebrew) 4.0.1 Homebrew OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  39. 39. 39 NSDのリリース •  NLnet  Labsからリリース ▫  http://www.nlnetlabs.nl/projects/nsd/ •  最新版 ▫  NSD  3.2.17  (2014年年1⽉月27⽇日リリース) ▫  NSD  4.0.1  (2014年年1⽉月27⽇日リリース) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  40. 40. 40 NSDとルートサーバ •  ルートサーバの遺伝的多様性 ▫  BINDに対するゼロ  デイ  アタックへの対策 •  2003年年2⽉月、RIPE  NCCが運⽤用しているルート サーバk.root-‐‑‒servers.netがBINDからNSDに切切 り替え •  現在、H,  K,  LがNSDで運⽤用している $ dig +norec @h.root-servers.net. version.server. CH TXT (中略略) ;; ANSWER SECTION: version.server. 0 CH TXT "NSD 4.0.0" OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  41. 41. 41 NSDの特徴 •  権威ネームサーバ ▫  主要な機能は実装されている。 ▫  実装されていない機能 –  IXFR(差分ゾーン転送)のマスター側機能 –  Dynamic  Update OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  42. 42. 42 機能  (付属⽂文書"REQUIREMENTS"より) •  NSD  1 ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  ▫  RFC  1183  (Multiple  RRs)   RFC  1706  (NSAP)   RFC  1876  (LOC  RR) RFC  1886  (AAAA  RR) RFC  2230  (KX  RR) RFC  2536  (CERT  RR) RFC  2671  (EDNS0) RFC  2782  (SRV) RFC  2915  (NAPTR  RR) RFC  2915  (SRV  RR) •  NSD  2 ▫  RFC  4033,  4034,  4035   (DNSSEC) ▫  RFC  2673  (Binary  labels) ▫  RFC  2874  (A6) •  NSD  3 ▫  RFC  1995  (IXFR)  (スレーブ側の み) ▫  RFC  1996  (NOTIFY) ▫  RFC  2845  (TSIG) ▫  RFC  2672  (DNAME) ▫  RFC  4509  (SHA-‐‑‒256  DS) ▫  RFC  4635  (HMAC  SHA  TSIG) ▫  RFC  5001  (NSID) ▫  RFC  5155  (NSEC3) ▫  RFC  5702  (SHA-‐‑‒2) ▫  RFC  5936  (AXFR) ▫  RFC  6605  (ECDSA) ▫  RFC  6698  (DANE) ▫  RFC  6742  (ILNP) ▫  RFC  6844  (CAA) ▫  RFC  7043  (EUI48+64) •  サポートしてない機能 ▫  RFC  2136  (Dynamic  update) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  43. 43. 43 NSDの特徴 •  リゾルバー機能無し ▫  ヒントファイルを持たない。 ▫  権威を持たないゾーンへのクエリーに対して SERVFAILを返す。 –  ヒントを持たないし、検索索もしないので referralを返しようがない。 ▫  NOTIFYの通知先やアクセス制御にゾーンの SOA  MNAMEやNSを参照しない。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  44. 44. 44 NSDの特徴 •  静的なメモリデータベースを利利⽤用 ▫  ゾーンファイルをコンパイルしてデータベー スファイルを作成 ▫  NSDのプロセスが起動時にデータベースをメ モリに読み込む OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  45. 45. 45 NSDの特徴 •  設定ファイルがシンプル ▫  カスタマイズできる項⽬目が少ない。 ▫  設定ファイル –  /etc/nsd/nsd.conf ▫  形式 –  属性名:  値 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  46. 46. 46 設定例例(マスター) server: ip-address: 192.0.2.1 key: name: tsig.example.jp algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" zone: NOTIFYによる通知先。 スレーブのIPアドレスを明⽰示的に指定。 name: example.jp. zonefile: example.jp.zone notify: 192.0.2.2 NOKEY provide-xfr: 192.0.2.2 tsig.example.jp ゾーン転送要求に対するアクセス制御。 デフォルト拒否。 スレーブのIPアドレスを明⽰示的に指定。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  47. 47. 47 設定例例(スレーブ) server: ip-address: 192.0.2.2 key: name: tsig.example.jp algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" NOTIFYの受信のアクセス制御。 zone: マスターのIPアドレスを明⽰示的に指定。 name: example.jp. zonefile: example.jp.zone allow-notify: 192.0.2.1 NOKEY request-xfr: AXFR 192.0.2.1 tsig.example.jp マスターがNSDの場合はAXFRを指定。 IXFRに対応していないため。 ゾーン転送の要求先。 マスターのIPアドレスを明⽰示的に指定。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  48. 48. 48 ここ1年年のトピック OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  49. 49. 49 NSD脆弱性情報 •  NSD  3.2.13以降降は脆弱性はみつかっていない。 •  2006年年5⽉月(NSD  3.0.0リリース) 〜~現在(2014年年2⽉月) ▫  2012年年7⽉月  CVE-‐‑‒2012-‐‑‒2979 ▫  2012年年7⽉月  CVE-‐‑‒2012-‐‑‒2978 ▫  2009年年5⽉月  CVE-‐‑‒2009-‐‑‒1755 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  50. 50. 50 この1年年でリリースされたバージョン •  NSD3 ▫  NSD  3.2.15  (2013-‐‑‒02-‐‑‒04) ▫  NSD  3.2.16  (2013-‐‑‒07-‐‑‒22) ▫  NSD  3.2.17  (2014-‐‑‒01-‐‑‒27) •  NSD4 ▫  NSD  4.0.0  (2013-‐‑‒10-‐‑‒29) ▫  NSD  4.0.1  (2014-‐‑‒01-‐‑‒27) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  51. 51. 51 この1年年でリリースされたバージョン •  NSD3 ▫  NSD  3.2.15  (2013-‐‑‒02-‐‑‒04) ▫  NSD  3.2.16  (2013-‐‑‒07-‐‑‒22) ▫  NSD  3.2.17  (2014-‐‑‒01-‐‑‒27) •  NSD4 ▫  NSD  4.0.0  (2013-‐‑‒10-‐‑‒29) ▫  NSD  4.0.1  (2014-‐‑‒01-‐‑‒27) OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  52. 52. 52 NSD4リリース •  2013年年10⽉月29⽇日にNSD  4.0.0がリリースされ た。 •  ⼤大規模向けの機能の強化 ▫  nsd-‐‑‒controlによる制御 ▫  再起動無しに設定やゾーンの更更新が可能 ▫  パターン機能で動的にゾーンの追加・削除 ▫  ⾼高負荷への耐性強化 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  53. 53. 53 NSD3の課題・問題点 •  設定ファイルのリロード(再読み込み)ができ ない。再起動が必要。 ▫  設定ファイルの変更更後には再起動が必要であ る。 ▫  再起動(プロセスの停⽌止と起動)するとサー ビスとしては瞬断が発⽣生する。 ▫  ゾーンの追加や削除も設定ファイルの変更更で あるため、再起動が必要になる。 •  ゾーンファイルの更更新後にはリロード(プロセ スの起動し直し)が必要。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  54. 54. 54 NSD4のプログラム プログラム 説明 nsd デーモン nsd-‐‑‒checkconf nsd.confをチェックするプログラム nsd-‐‑‒control デーモンを制御するプログラム nsd-‐‑‒control-‐‑‒setup nsd-‐‑‒control⽤用のプライベート鍵と公開鍵証明書を 作成するスクリプト nsd-‐‑‒mem メモリ・ディスク使⽤用量量⾒見見積もりツール NSD3のnsdc,  zonec,   nsd-‐‑‒notify,  nsd-‐‑‒patch,   nsd-‐‑‒xferコマンドの廃⽌止 参考:  Unboundの場合 unbound unbound-‐‑‒checkconf unbound-‐‑‒control unbound-‐‑‒control-‐‑‒setup unbound-‐‑‒host unbound-‐‑‒anchor OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  55. 55. 55 アーキテクチャ $ ps axf PID TTY STAT TIME COMMAND 21953 ? Ss 0:00 nsd -c /etc/nsd/nsd.conf 21954 ? S 0:00 _ nsd -c /etc/nsd/nsd.conf 21955 ? S 0:00 _ nsd -c /etc/nsd/nsd.conf 21956 ? S 0:00 _ nsd -c /etc/nsd/nsd.conf (nsd-‐‑‒controlからの)制御、 ゾーン転送の管理理 nsd  (xfrd) メモリDB nsd  (main) UDB xfrd. state zone. list セカンダリゾーンの refreshとexpireの 時間管理理 ⼦子プロセスの 管理理 nsd  (child) nsd  (child) nsd.db クエリーの処理理 ゾーン   データベース 動的に追加された ゾーンの⼀一覧 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  56. 56. 56 ゾーンファイルとデータベース nsd  (xfrd) nsd  (main) メモリDB UDB nsd  (child) nsd  (child) ゾーンの データベース nsdはゾーンファイルを コンパイル時にしか 扱わない。 nsd.db ゾーン ファイル データベースを ロードする。 ゾーンファイルをデータ ベースにコンパイルする。 ⽂文法チェックも実施。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  57. 57. 57 nsd-‐‑‒controlによる制御 •  unbound-‐‑‒controlのNSD版 ▫  TCP  8952番ポート ▫  TLSによる通信の暗号化 ▫  nsd-‐‑‒control-‐‑‒setupスクリプトによるプライ ベート鍵と公開鍵証明書の作成 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  58. 58. 58 nsd-‐‑‒controlのコマンド (サーバーの制御) コマンド 説明 start サーバー(nsd)を起動する。 stop サーバー(nsd)を停⽌止する。 reconfig 設定ファイルを再読み込みする。 TSIG鍵、パターン、ゾーンの変更更を適応する。 repattern reconfigと同じ。 log_̲reopen (ログローテーションのために)ログファイルを開き直す。 status サーバーの状態を表⽰示する。 stats 統計情報を出⼒力力する。 stats_̲noreset 統計情報をリセットせずに出⼒力力する。 serverpid サーバープロセスのPIDを出⼒力力する。 verbosity  数値 ログレベルを変更更する。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  59. 59. 59 nsd-‐‑‒controlのコマンド (ゾーンの制御) コマンド 説明 reload  [ゾーン] ディスクから変更更したゾーンファイルを再読み込 みする。 addzone  ゾーン  パターン パターン機能を使ったゾーンを追加する。 delzone  ゾーン パターン機能を使ったゾーンを削除する。 write  [ゾーン] ディスクにゾーンファイルを書き出す。 notify  [ゾーン] NOTIFYメッセージをスレーブに送信する。 transfer  [ゾーン] ゾーン転送を試みる。 force_̲transfer  [ゾーン] シリアル値のチェック無しにAXFRでゾーン転送 を⾏行行い、スレーブのゾーンを更更新する。 zonestatus  [ゾーン] ゾーンの状態、シリアル値を出⼒力力する。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  60. 60. 60 パターン •  動的にゾーンの追加・削除が可能 •  設定例例 pattern: ゾーンファイルの配置 (マクロ%sを使える) name: "masterzone" zonefile: "zones/%s.zone" notify: 192.0.2.1 NOKEY provide-xfr: 192.0.2.1 tsig.masterzone •  コマンド例例 ▫  nsd-control addzone example.jp masterzone nsd-control delzone example.jp •  パターンの定義そのもののリロードも可能 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  61. 61. 61 ⾼高負荷への耐性 •  libevent対応によるイベント駆動 •  内部データベースの変更更 •  Response  Rate  Limiting  (RRL)対応 ▫  NSD3でも3.2.15で対応 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  62. 62. 62 NSD4のまとめ •  特徴 ▫  nsd-‐‑‒controlによる制御 ▫  再起動無しに設定やゾーンの更更新が可能 ▫  パターンで動的にゾーンの追加・削除 ▫  ⾼高負荷への耐性、RRL対応 •  ⇒  ⼤大規模サイトでも利利⽤用できる OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  63. 63. 63 参考⽂文書 •  公式サイト ▫  http://www.nlnetlabs.nl/projects/nsd/ •  ドキュメントの邦訳(⽇日本Unboundユーザー会) ▫  http://unbound.jp/nsd/ •  NSD3  an  Authoritative  Nameserver:  Technical   ▫  http://www.nlnetlabs.nl/downloads/presentations/ NSD_̲DenicTechnical.pdf •  Response  Differences  between  NSD  and  other  DNS  Servers ▫  http://www.nlnetlabs.nl/downloads/nsd/differences.pdf •  NSD  Evolution  of  a  name  server ▫  http://www.nlnetlabs.nl/downloads/presentations/ NSD_̲Update_̲OARC_̲2011SF.pdf •  nlnetlabs.nl  ::  Blog  ::  NSD4  Features ▫  http://www.nlnetlabs.nl/blog/2012/09/14/nsd4-‐‑‒features/ •  nlnetlabs.nl  ::  Blog  ::  NSD  Response  Rate  Limiting ▫  http://www.nlnetlabs.nl/blog/2012/10/11/nsd-‐‑‒ratelimit/ OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  64. 64. 64 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  65. 65. 65 Unboundを作業PCで動作させるとき に発⽣生する問題の例例 •  ファイアウォールを超えられないことがある ▫  53番ポートをブロックされている。 ▫  ファイアウォールのUDPのNAPTテーブルの オーバーフロー。 –  ウェブブラウザのprefechにより⼤大量量のクエ リーが発⽣生。 –  ソースポートをランダマイズしているため、 クエリーごとにNAPTテーブルを消費する。 •  「そうだ。SSLトンネルを使おう」 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  66. 66. 66 UnboundのSSLトンネル機能の利利⽤用 クラウド(IasS) 仮想マシン クエリーを作成したインス タンスのTCP  443ポートに フォワードする。 利利⽤用時にインスタンスを作成し、 UnboundのサービスをTCP  443 でlistenさせる。 server: interface: 0.0.0.0@443 ssl-service-key: "/etc/unbound/unbound_server.key" ssl-service-pem: "/etc/unbound/unbound_server.pem" ssl-port: 443 server: ssl-upstream: yes forward-zone: name: "." forward-addr: 192.0.2.1@443 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  67. 67. 67 NSD  4を設定して操作する例例を紹介します。 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  68. 68. 68 設定ファイルの編集 $ sudo vim /etc/nsd/nsd.conf server: ip-address:192.0.2.1 remote-control: control-enable: yes 最⼩小限の設定例例 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  69. 69. 69 nsdの起動 $ sudo nsd-control start $ ps axf | grep [n]sd 23398 ? Ss 0:00 nsd -c /etc/nsd/nsd.conf 23399 ? S 0:00 _ nsd -c /etc/nsd/nsd.conf 23400 ? S 0:00 _ nsd -c /etc/nsd/nsd.conf $ sudo nsd-control status version: 4.0.1 verbosity: 0 ratelimit: 200 $ dig +norec @192.0.2.1 version.server. CH TXT ;; ANSWER SECTION: version.server. 0 CH TXT "NSD 4.0.1" OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  70. 70. 70 ゾーンファイルの配置とロード (マスター側) $ sudo mkdir /etc/nsd/primary $ sudo vim /etc/nsd/primary/example.jp.zone $ sudo vim /etc/nsd/nsd.conf key: name: tsig.example.jp algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" zone: name: example.jp. zonefile: primary/example.jp.zone notify: 192.0.2.2 NOKEY provide-xfr: 192.0.2.2 tsig.example.jp $ sudo nsd-control reconfig ゾーンファイルの設置 設定ファイルの 再読み込み OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  71. 71. 71 ゾーンファイルの配置とロード (スレーブ側) ゾーンファイル出⼒力力⽤用 $ sudo mkdir /etc/nsd/secondary のディレクトリの作成 $ sudo chown nsd:nsd /etc/nsd/secondary $ sudo vim /etc/nsd/nsd.conf key: name: tsig.example.jp algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" zone: name: example.jp. zonefile: secondary/example.jp.zone allow-notify: 192.0.2.1 NOKEY request-xfr: AXFR 192.0.2.1 tsig.example.jp $ sudo nsd-control reconfig 設定ファイルの 再読み込み OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  72. 72. 72 ゾーンファイルの出⼒力力 (スレーブ側) ゾーンデータはデータベース として保持しているため、 ゾーンファイルとして出⼒力力す る必要はない点に注意。 $ sudo nsd-control zonestatus ゾーンの状態の出⼒力力 zone: example.jp. state: ok served-serial: "20130211 since 2013-02-11T14:33:07" commit-serial: "20130211 since 2013-02-11T14:33:07" $ ls -l /etc/nsd/secondary/ total 0 $ sudo nsd-control write ゾーンファイルの出⼒力力 ok $ ls -l /etc/nsd/secondary/ total 4 -rw-r--r-- 1 nsd nsd 366 Feb 11 14:36 example.jp.zone OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  73. 73. 73 パターンを利利⽤用する準備 (マスター側) $ sudo mkdir /etc/nsd/primary ゾーンファイル配置⽤用 $ /etc/nsd/nsd.conf のディレクトリの作成 key: name: "master.key" algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" ゾーンファイルの配置 pattern: (マクロ%sを使える) name: "master" zonefile: "primary/%s.zone" notify: 192.0.2.2 NOKEY provide-xfr: 192.0.2.2 master.key $ sudo nsd-control reconfig 設定ファイルの 再読み込み OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  74. 74. 74 パターンを使った動的なゾーンの追加 (マスター側) $ sudo vim /etc/nsd/primary/example.jp.zone ゾーンファイルの設置 $ sudo nsd-control addzone example.jp master sudo nsd-control zonestatus masterパターンを使って zone: example.jp example.jpゾーンを動的に pattern: master 追加 state: master OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  75. 75. 75 パターンの準備 (スレーブ側) $ sudo mkdir /etc/nsd/secondary/ $ sudo chown nsd:nsd /etc/nsd/secondary ゾーンファイル出⼒力力⽤用 $ sudo vim /etc/nsd/nsd.conf のディレクトリの作成 key: name: "master.key" algorithm: hmac-sha1 secret: "lCzS3R+oAZJp607jZ36eKw==" pattern: ゾーンファイルの出⼒力力先 name: "slave" (マクロ%sを使える) zonefile: "secondary/%s.zone" allow-notify: 192.0.2.1 NOKEY request-xfr: AXFR 192.0.2.1 master.key $ sudo nsd-control reconfig 設定ファイルの 再読み込み OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  76. 76. 76 パターンを使った動的なゾーンの追加 (スレーブ側) $ sudo nsd-control addzone example.jp slave slaveパターンを使って example.jpゾーンを動的に 追加 $ sudo nsd-control zonestatus zone: example.jp pattern: slave state: refreshing served-serial: "20130211 since 2013-02-11T14:33:07" commit-serial: "20130211 since 2013-02-11T14:33:07" OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  77. 77. 77 ゾーンの更更新 $ sudo nsd-control reload OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28
  78. 78. 78 OSC  2014  Tokyo/Spring 2014-‐‑‒02-‐‑‒28

×