DNS周辺技術勉強会 #dnstudy 01 に参加してきた
6/18 に、DNS周辺技術勉強会 #dnstudy 01 に参加してきました。
お題は、以下の 2 つでした。
- DNS 再入門
- Unbound 入門
Unbound の話が聞ける!ということで参加したのですが、"DNS 再入門" の方の内容も予想以上にすばらしかったです。
自分的に勉強になった点を、かいつまんで書いてみようと思います。
DNS 再入門
ドメイン名
絶対ドメイン名 (完全ドメイン名)
各ノードのラベルを下位のノードから上位のノードへドットでつないだ物。
空のラベルがつくルートノードまでをつなぐので、最後はドットで終わる。
相対ドメイン名
最後がドットで終っていないと、相対ドメイン名として扱われる。
親のドメイン名に対して相対的に表したドメイン名。
FQDN
トップレベルドメインまでをドットでつないだ物。
ルートドメインに対する相対ドメイン名と考えると良い。
※ 情報源が wiki ですが、FQDN の厳密な定義は無いようです。
Fully Qualified Domain Name
ドメイン名の管理
各ドメインの権威ネームサーバは、そのドメインから始まるツリーを管理している。
ドメインツリーを管理する単位をゾーンと呼ぶ。
各ドメインのゾーンは、サブドメインのゾーンを分割することができ、分割されたゾーンの管理権限を他のネームサーバに譲ることができる。
これを権限委譲とよぶ。
サブドメイン毎にゾーンを分割しなければならないという勘違いが多い。
DNS のプレイヤー
スタブリゾルバ
名前解決を要求するクライアント側の機能。
OS やライブラリの機能として実装されている。
フルサービスリゾルバに要求を出すのみ。
キャッシュ機能を持っても良い。
フルサービスリゾルバ
スタブリゾルバから要求を受け、権威ネームサーバに対して反復的な問い合わせを行なう。
"ネームサーバ"、"キャッシュサーバ" といったら通常はこれを指す。
キャッシュ機能を持たなければならない。
権威ネームサーバ
権威をもっていない情報については提供しない。
"コンテンツサーバ" はこれを指す。
リソースレコード
SOA
ゾーンの権威の開始を示すレコード。
ゾーンについての情報を記載する。
@ IN SOA ns.example.jp. hostmaster.example.jp. (
2011062401 ;Serial
3600 ;Refresh
600 ;Retry
604800 ;Expire
600 ) ;Minimum
Serial
ゾーンを更新したら増やす。
慣例的に、日付++連番が使われることが多い。
Refresh
セカンダリネームサーバが、プライマリネームサーバに更新を確認する間隔。
Retry
セカンダリネームサーバが更新に失敗した際、再度更新を試みるまでの間隔。
Expire
セカンダリネームサーバが情報を更新できないとき、セカンダリネームサーバが情報を利用していい時間。
Minimum (Negative Cache TTL)
ネガティブキャッシュを保持する時間。
ネガティブキャッシュは、"ドメインが存在しない" といったような結果をキャッシュすること。
元々はゾーンのリソースレコードの最小の TTL を表した。
PTR
"1 つの IP アドレスに対して PTR レコードは 1 つだけしか記述できない" というのは誤り。
複数の PTR レコードを記述できる。
Unbound 入門
Unbound とは
BIND の代替をめざしたキャッシュサーバで、
- 設定が容易
- フルスペックなキャッシュサーバ
- 機能限定の権威サーバ
- 高い処理性能
などが特徴である。
NLnet Labs が開発・保守を行なっている。
NLnet Labs は、ルートサーバでも利用されている権威ネームサーバ NSD の開発元。
設定や留意点など
設定ファイルは、unbound.conf のみ。
デフォルトでは localhost からのみアクセス許可。
お決まりのゾーン (ループバックの正引き逆引き等) は組み込み済みなので、ゾーンファイルを記述する必要がない。
DNS ラウンドロビンには非対応で、キャッシュした内容をそのままの順番で回答する。
プライベートアドレスの逆引き用にキャッシュサーバ・権威サーバを指定する場合、AS112 対策で NXDOMAIN が返される。
stub-zone:
name: "0.168.192.in-addr.arpa."
stub-addr: 192.0.2.1
このようなときは、local-zone で transparent を指定する。
local-zone: "0.168.192.in-addr.arpa." transparent
キャッシュ汚染への高い耐性
- ランダムなクエリー ID
- ランダムなソースポート番号
- ランダムなディスティネーションアドレスの利用
- ランダムなソース IP アドレスの利用
- クエリーの際に、大文字小文字をランダムに混ぜる
によって、キャッシュ汚染への高い耐性がある。
感想など
DNS 再入門、とても勉強になりました。
スタブリゾルバ・フルサービスリゾルバ・権威ネームサーバの違いや、SOA レコードの意味など、いままでなんとなくの理解だった事について、詳しく知ることができました。
さっそく、自宅の内向き DNS を djbdns から NSD+Unbound に変えてみました。
設定簡単でとてもいいです。