kohi-p1.pptx

Similar documents
DNS DNS 2002/12/19 Internet Week 2002/DNS DAY 2

目次 1 本マニュアルについて 設定手順 (BIND 9 利用 ) 設定例の環境 設定例のファイル構成 named.conf の設定例 逆引きゾーンの設定例 動作確認 ( ゾーン転送 )

DNSを「きちんと」設定しよう

Contents CIDR IPv6 Wildcard MX DNS

untitled

学生実験

学生実験 3 日目 DNS IP ネットワークアーキテクチャ 江崎研究室

DNS (BIND, djbdns) JPNIC・JPCERT/CC Security Seminar 2005

−uDNSƒzƒXƒeƒB?ƒOƒT?ƒrƒX−v??ƒU?ƒ}ƒj?ƒA?_

PowerPoint プレゼンテーション

DNS DNS(Domain Name System) named(bind), tinydns(djbdns), MicrosoftDNS(Windows), etc 3 2 (1) ( ) IP IP DNS 4

PowerPoint Presentation

jus.ppt

MUA (Mail User Agent) MTA (Mail Transfer Agent) DNS (Domain Name System) DNS MUA MTA MTA MUA MB mailbox MB

DNSサーバー設定について

DNS(BIND9) BIND9.x のエラーをまとめたものです エラーと原因 ジオシティーズ容量大幅アップ セキュリティならお任せ! マイクロソフト 少ない初期導入コストで クラウド環境を構築! Ads by Yahoo!JAPAN 主にゾーン転送に関するエラー

日本語ドメイン名運用ガイド

2 注意事項 教材として会場を提供していただいている ConoHa さんのドメイン名とその権威ネームサーバを使 用しています conoha.jp ns1.gmointernet.jp

目次 1. サービス概要 提供機能... 2 DNS ゾーン... 2 正引き 逆引き... 2 レコードタイプ... 2 初期ゾーン... 3 コントロールパネル操作メニュー一覧 コントロールパネル ユーザ認証 ドメイン所有者確認

2 フルサービスリゾルバ スタブリゾルバ からリクエストを 受け取る フルサービスリゾルバは権威ネームサーバに 対して反復復的に 問い合わせを 行行う ルートゾーンの権威サーバ スタブリゾルバ の IP アドレスを教えて? の IP アドレ

HDE Controller X 1-5. DNS サーバー

Practical DNS Operation: ~ 知ってるつもり の再確認と運用現場で使えるノウハウ ~ Internet Week 2005 チュートリアル 株式会社ブロードバンドタワー 伊藤高一 前口上 Dec/6/2005 Copyright 2005

e164.arpa DNSSEC Version JPRS JPRS e164.arpa DNSSEC DNSSEC DNS DNSSEC (DNSSEC ) DNSSEC DNSSEC DNS ( ) % # (root)

目次 1. サービス概要 提供機能... 2 DNS ゾーン... 2 正引き 逆引き... 2 権威ネームサーバへの反映... 2 レコードタイプ... 2 初期ゾーン... 3 GUI 操作メニュー一覧 エンドユーザ GUI ユーザ認証... 4

Microsoft PowerPoint - IW2011-D1_simamura [互換モード]


新しいDNSサーバ、 NSDの紹介

Microsoft PowerPoint Windows-DNS.pptx

サーバーで安全な設定とは 正しい情報を正しく提供する 不確かな情報を提供したりしない ( 安全というより正しい設定 ) サービス経由で侵入されない 万が一侵入されても被害を最小限にする 2

2.

DNSSECの基礎概要

スライド 1

Microsoft PowerPoint - private-dnssec

DNS浸透の都市伝説を斬る~ランチのおともにDNS~

PowerPoint プレゼンテーション

~IPv6 と DNS の正しい付き合い方~ IPv6時代のDNS設定を考える

PowerPoint プレゼンテーション

Microsoft PowerPoint - DNSSECとは.ppt

2014/07/18 1

目次 1 BIND 9 (UNIX) を利用する 設定例の環境 インストール 設定例のファイル構成 named.conf の設定例 ルート DNS サーバの設定 ループバックアドレス用ゾーンの

< 目次 > スマートコネクトマネージドサーバ DNS サービス 1. サービス概要 サービス概要 特徴 サービス仕様 サービス概要 一覧 登録が不可能なパターン 注意事項...

poisoning_ipsj

DNSの負荷分散とキャッシュの有効性に関する予備的検討

rndc BIND

提案書タイトルサブタイトルなし(32ポイント)

Microsoft PowerPoint - BIND9新機能.ppt

DNS Summer Days 2014 チュートリアル DNS 再 入 門 株式会社ハートビーツ滝澤隆史

untitled

キャッシュポイズニング攻撃対策

ict4.key

I j

ブロードバンドルータにおける問題(オープンリゾルバ)の解説、対策の説明

DNS誕生日攻撃再び

初心者のためのDNSの設定とよくあるトラブル事例

BIND 9 BIND 9 IPv6 BIND 9 view lwres

SOC Report

上位 DNS の設定 YaST > Network Device > Network Card > HostName and DNS Server を開き DNS サーバとなる自分自身と上位となる ( プロバイダの指定 あるいは社内のマスター )DNS サーバを確認します この結果は /etc/re

BIND9.9から9.11へ移行のポイント(権威DNSサーバー編)

enog-ryuichi

DNSOPS.JP BoF nginxを利 した DNS over TLS 対応フルリゾルバの作り ( 株 ) ハートビーツ滝澤隆史

DNS の構築と運用 ~BIND9 時代の設定の常識 ~ Internet Week 2002 チュートリアル 株式会社インターネット総合研究所 伊藤高一 Dec/16/2002 Copyright(C) 2002 Koh-ichi Ito, All rights, r

30分で学ぶDNSの基礎の基礎~DNSをこれから勉強する人のために~

初めてのBFD

rndc BIND DNS 設定 仕組み

DNSハンズオンDNS運用のいろは

1 TCP/IPがインストールされていて正常に動作している場合は ループバックアドレィング5.3 ネットワークのトラブルシューティング スでリプライが返ってきます リプライが返ってこない場合 なんらかの原因でサービスが無効になっていたり TCP/IPプロトコルが壊れていたりする可能性があります 2

DNSとメール

Zone Poisoning

DNSのセキュリティとDNSに関する技術

スマート署名(Smart signing) BIND 9.7での新機能

スライド 1

ご挨拶

目 次 1. サービス 概 要 提 供 機 能... 2 DNS ゾーン... 2 正 引 き 逆 引 き... 2 レコードタイプ... 2 初 期 ゾーン... 3 コントロールパネル 操 作 メニュー 一 覧 コントロールパネル ユーザ 認 証

untitled

Microsoft Word - (修正)101.BLU-103のVoIP設定方法.docx

のコピー

初心者のためのDNSの設定とよくあるトラブル事例

第 5 部 特集 5 YETI - A Live Root-DNSTestbed 第 5 部 特集 5 YETI - A Live Root-DNSTestbed One World, One Internet, One Namespace - Paul Vixie(2014) 加藤朗 第 1 章は

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

DNSSEC性能確認手順書v1.2

058 LGWAN-No155.indd

Microsoft Global Briefing Technical Briefing

アライドテレシス・コアスイッチ AT-x900 シリーズとディストリビューションスイッチ AT-x600 シリーズで実現するACLトラフィックコントロール

030717kuri.txt - メモ帳

DNS Summer Days 2013 チュートリアル DNS 再 入 門 株式会社ハートビーツ滝澤隆史

ドメイン ネーム システムの概要

目次 1. はじめに 動作環境と操作上の注意事項 動作環境 操作上の注意事項 開始と終了 開始 終了 レコード情報編集 レコード情報編集の表示と基本操作

Microsoft PowerPoint - lpi ppt [互換モード]

Microsoft PowerPoint 版_Root_JPの状況.ppt

LGWAN-1.indd

TCP/IP Internet Week 2002 [2002/12/17] Japan Registry Service Co., Ltd. No.3 Internet Week 2002 [2002/12/17] Japan Registry Service Co., Ltd. No.4 2

ict2-.key

untitled

ISP技術者SWG報告書 およびその後の検討状況

「DNSSECの現状と普及に向けた課題」

DNSSEC の仕組みと現状 平成 22 年 11 月 DNSSEC ジャパン

Oracle DatabaseとIPv6 Statement of Direction

A/B WWW MTA/MSP sendmail POP/IMAP apache WWW 1 1 sendmail uw imap apache WWW host host subnet1: /24 IF1: router & server mail and

FutureWeb3サーバー移管マニュアル

2. Save をクリックします 3. System Options - Network - TCP/IP - Advanced を開き Primary DNS server と Secondary DNS Server に AXIS ネットワークカメラ / ビデオエンコーダが参照できる DNS サ

Transcription:

DNS のよくある間違い 伊藤高一 DNS Summer Days 2012 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 1

イントロダクション DNS は 世界で唯一成功した分散データベース って言われています おかげで just put it in the DNS なる風潮も なんで成功したのかって? だってユルいんだもん :-) 多少いい加減でも 何となくそれっぽく動く 成功の影に累々たる結果オーライあり Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 2

イントロダクション ( 続き ) 今日の黒幕から言い渡されたお題の よくある間違い は ある程度 散りばめておきました よくわかんないけど 設定例でこうなっているから で流しがちな事とか 逆に設定例では取り上げられる機会が少ない事もちょっと追及してみました カルトネタではなく 実用的な範囲で 午前中の話は理解されていることを前提にさせていただきました Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 3

Start Agenda secon dary serial SOA アーキテクチャ寄りの話 lame delegation NOTIFY トランスポート層 ゾーンデータ寄りの話 内部名外部名 CNAME END 小ネタ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 4

アーキテクチャ寄りの話 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 5

DNS ってどんなアーキテクチャだっけ? サービス内容 サービス対象 authority recursive サーバ Worldwide 自ネットワーク内 なし authoritative サーバ 特定ゾーン Worldwide あり / 委任先の提示 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 6

DNS ってどんなアーキテクチャだっけ?( 続き ) アプリケーション recursive サーバ com アプリケーション recursiveサーバ.(root) jp アプリケーション recursive サーバ kr ns www A 192.0.2.80 example.jp mail Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 7

関連 RFC RFC 1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 8

上位サーバ ユーザ : 上位サーバの IP アドレスを教えて下さい xsp: 上位サーバって何ですか??? Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 9

上位サーバ recursive query は root サーバを起点として下降探索するという動作が理解されていない ユーザの recursive サーバは 上位サーバ なる物に問い合わせるんだ という誤解 かつては authoritative サーバと recursive サーバを兼用するのが常識で 両者の分担が認識されていなかった 確かに forwarder を使えば そういうアーキテクチャも実装できるが Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 10

上位サーバ こんな感じ?.(root) com kr 上位サーバ authoritative 兼 recursive ns www A 192.0.2.80 Aug/31/2012 mail アプリケーション DNS Summer Days 2012, Koh-ichi Ito 注 : これは誤解を想像した図です!! 11

primary/secondary/master/slave primary v.s. secondary ゾーンデータの出所に注目 primary ローカルファイルなど ゾーン転送以外で得たゾーンデータを参照する authoritative サーバ master はいない secondary master からのゾーン転送により得たゾーンデータを参照する authoritative サーバ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 12

primary/secondary/master/slave( 続き ) master v.s. slave ゾーン転送の送出側 / 受け側に注目 master あるゾーン転送に注目したときの送出側 slave あるゾーン転送に注目したときの受け側 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 13

primary/secondary/master/slave( 続き ) primary master slave secondary secondary master slave Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 14

関連 RFC RFC 1034: DOMAIN NAMES - CONCEPTS AND FACILITIES RFC 1996: A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 15

secondary の IP アドレス ユーザ : secondary の IP アドレスを教えて下さい Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 16

secondary の IP アドレス : 昔 昔は secondary の名前に関してゾーン外のデータを書こうとする間違いだった Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 17

secondary の IP アドレス : 昔 ( 続き ) $ORIGIN example.jp. @ IN SOA... NS ns.example.jp. NS ns.example9.ad.jp. ns A 192.0.2.53 ns.example9.ad.jp. A 198.51.100.1 これを書こうとしている authoritative データにならない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 18

secondary の IP アドレス : 昔 ( 続き ) 昔は secondary の名前に関してゾーン外のデータを書こうとする間違いだった 不要な設定であることをご説明した 一度開示した IP アドレスは独り歩きしてしまい renumber するときにトラブルが起こるのが目に見えている Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 19

secondary の IP アドレス : 今 今どきは 正当な設定をするために secondary の IP アドレスが必要なケースもある アクセス制限 primary の allow-transfer{} ( に相当する設定 ) 内部名での NS もはや secondary の IP アドレスは死守すべきマジックナンバ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 20

secondary って? 誤 : recursive サーバは まず primary に問い合わせて ダメならはじめて secondary に問い合わせる 正 : recursive query の動作では primary と secondary は対等 recursive サーバが参照するのは NS だが NS を見ても primary か secondary かはわからない SOA の mname を見るのは NOTIFY と dynamic update 正 : primary が正常に動いていても secondary からデータを受け取ることもある 順序は規定されていない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 21

Summer Days だし怪談 浸透する DNS 浸透 って? 確かに伝搬遅延を伴う場面はある 誤 : 人事を尽くして浸透を待つ 正 : 主に自分が世間様のキャッシュたちにバラ撒いてしまった旧データの賞味期限切れ待ち DNS 以外の原因による遅延 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 22

確かに伝搬遅延を伴う場面はあるが 孫 secondary secondary 新 primary recursive サーバ 旧 旧 forwarders 新 recursive サーバ 新 旧 旧 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 23

伝搬遅延を斬る! 孫 secondary secondary 新 primary recursive サーバ 旧 旧 forwarders 新 recursive サーバ 新 旧 旧 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 24

DNS 以外の原因による遅延 旧データがキャッシュに残存する時間はここの TTL が支配する 親 glue と NS の書き換え 旧 人力とか業務系経由 新 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 25

親ゾーンでの glue と NS の書き換え 自営サーバがオフィスなどにあり 対外接続を並行運用なしで切り替える場合 昔はよくあったが 今ではレアケース? 技巧をこらし かつ secondary が協力的なら かなり詰められる secondary が協力的 の部分が望みにくい レンタルサーバなどで並行運用できる場合 Web 等は DNS の切り替えが終わるまで 旧でも均質なサービスを提供し続ける 新が動き出したら 旧でも新の A/AAAA を提供する 親での書き換え 旧のアドレスをキャッシュに撒かない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 26

zone cut 2 種類の NS zone cut に現れる 2 種類の NS RR 親側 子ゾーンの authority を委任する先のネームサーバの提示 暗にそのサブドメインが独立したゾーンであることも表現している '.' から その NS RR の RDATA への連鎖を確立するために必要であれば glue として A/AAAA を伴う 親側の NS と glue は authoritative データではない 子側 zone apex に NS RR を対応付けることにより そのゾーンの authority の所在を表現している authoritative データである Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 27

zone cut 2 種類の NS( 続き ) root から順に委任をたどるとき 子が返す authoritative データに出会うまでは止まらない authoritative answer に由来するデータがキャッシュに載っていたら 親が返してきた non-authoritative データに出会っても捨てる 親ゾーンで NS や glue を書き換えても キャッシュに残存している旧データは強い 詳しくは RFC 2181 5.4.1. Ranking data に載っている Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 28

関連 RFC RFC 2181: Clarifications to the DNS Specification Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 29

dual stack dual stack の recursive サーバでは クライアントから受けた query と それを解決するために root から順に recursive query するときのアドレスファミリとは 必ずしも一致しない A や v4 の PTR が v6 トランスポートでやりとりされることもあるし AAAA や v6 の PTR が v4 トランスポートでやりとりされることもある BIND の AAAA filter は特別な仕様あり Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 30

関連 RFC RFC 4472: Operational Considerations and Issues with IPv6 DNS Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 31

SOA のおさらい owner mname rname example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 serial 10800 refresh 3600 retry 2419200 expire 900 ) minimum 後ほど Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 32

SOA のおさらい ( 続き ) owner owner は RR の一部ではない RR が対応付けられる名前 SOA は zone apex に対応付いていなければならない たいていの設定例で '@' が書いてあるが zone apex を指せば表現は自由 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 33

SOA のおさらい ( 続き ) example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 10800 3600 2419200 900 ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 34

SOA のおさらい ( 続き ) class IN HS とか CH とかを使う機会は まずないでしょう type SOA の話をしてるところですよね 今 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 35

SOA のおさらい ( 続き ) mname example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 10800 3600 2419200 900 ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 36

SOA のおさらい ( 続き ) mname そのゾーンデータの原本のありか = primary dynamic update は mname めがけて飛んでくる dynamic update を使っているつもりはなくても DHCP との連携で飛んでいることもある jp ゾーンの z.dns.jp は 不正な dynamic update を吸い込むために NS RR には登場しないサーバが意図的に設定されている NOTIFY は mname には送らない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 37

SOA のおさらい ( 続き ) rname example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 10800 3600 2419200 900 ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 38

SOA のおさらい ( 続き ) rname そのゾーンに関する連絡先 ちゃんと届くアドレスを書くべき だったが harvesting のことを考えると どうしたものか メールアドレスには必ず '@' が登場するが ゾーンデータでは '@' は origin を意味する '.' に書き換える '@' の前に登場する '.' は '\.' に書き換える Erai.Hito@example.jp Erai\.Hito.example.jp. 末尾の '.' を忘れずに or 相対表記 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 39

SOA のおさらい ( 続き ) hostmaster RFC 2142 に載っています 7. DOMAIN NAME SERVICE ADMINISTRATION MAILBOX In DNS (see [RFC1033], [RFC1034] and [RFC1035]), the Start Of Authority record (SOA RR) has a field for specifying the mailbox name of the zone's administrator. : : For simplicity and regularity, it is strongly recommended that the well known mailbox name HOSTMASTER always be used <HOSTMASTER@domain>. Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 40

関連 RFC RFC 2142: MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 41

SOA のおさらい ( 続き ) example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 serial 10800 3600 2419200 900 ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 42

SOA のおさらい ( 続き ) serial secondary が master のゾーンデータが更新されたかどうかを判断する材料 secondary は refresh の間隔で master に SOA を query し master からの応答の serial が自分の手許にあるゾーンデータより大きければ ゾーン転送を要求して新しいゾーンデータを得る NSD はいきなり IXFR を要求する 大事なのは増えること YYYYMMDDXX という流儀をよく見るが 技術的必然性はない ツールでゾーンデータを自動生成するときには unixtime もよく使われる Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 43

SOA のおさらい ( 続き ) よくある失敗 ゾーンデータを変更したのに serial を増やすのを忘れた primary のデータを更新したのに secondary に伝搬しない 食い違い エディタでゾーンファイルを開いたら とにかく最初に serial を増やす習慣付け Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 44

serial, comin back! serial 32bit 0~4,294,967,295=(2^32)-1 ある数 n から次の 2,147,483,647(=(2^31)-1) 個の数は n より大きい n の前 2,147,483,647 個の数は n より小さい 4,294,967,295 の次は 0 0 2004120201 2004120201 +2147483647 =4151603848 42949672295 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 45

serial, comin back!( 続き ) 4294967295 より大きな値だとエラーになる Sep 4 14:43:18 ns named[35341]: general: error: dns_rdata_fromtext: localhost:3: near '4294967297': out of range Sep 4 14:43:18 ns named[35341]: general: error: zone localhost/in: loading master file localhost: out of range 2004120201 に設定したかったのに 3004120201 とタイプしてしまい reload してから気付いた ;_; 3004120201 より 大きく 2004120201 より 小さな 番号に設定 secondary にゾーン転送 2004120201 に設定 secondary にゾーン転送 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 46

serial, comin back!( 続き ) n=3004120201+(2^31)-1=5151603848>2^32 n'=n-2^32=856636552 3004120201 < n' n' < 2004120201 0 n' 3004120201 (2^32)-1 n 2004120201 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 47

関連 RFC RFC 1912: Common DNS Operational and Configuration Errors RFC 1982: Serial Number Arithmetic Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 48

SOA のおさらい ( 続き ) example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 10800 refresh 3600 retry 2419200 expire 900 ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 49

SOA のおさらい ( 続き ) refresh secondary が master に serial を query する間隔 retry 前回の refresh 後の query が失敗したときに retry するまでの間隔 expire retry して retry して retry して も成功しないときに 賞味期限切れとして扱うまでの猶予 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 50

SOA のおさらい ( 続き ) serial チェック serial チェック refresh x master 更新 refresh retry serial チェック増加 -> ゾーン転送 serial チェック失敗 serial チェック expire serial チェック失敗 serial チェック失敗 serial チェック失敗 refresh serial チェック失敗 serial チェック serial チェック失敗 ->expire Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 51

SOA に関する失敗例 expire < refresh にしてしまった slave は refresh の間隔で master の更新をチェックするが その間に必ず expire してしまう 時の運で slave が正常に応答したりエラーになったり refresh expire t Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 52

SOA のおさらい ( 続き ) example.jp. IN SOA ns.example.jp. hostmaster.example.jp. ( 12345 10800 3600 2419200 900 ) minimum Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 53

SOA のおさらい ( 続き ) minimum 昔と今とで意味が変わりました! 昔は明示的に TTL を指定していない RR に対するデフォルトの TTL だった www 86400 IN A 192.0.2.80 今は negative cache の TTL そのゾーンの名前空間の中の名前だが RR が定義されていない owner/type を索いてしまったとき wwww.example.jp (w が 4 つ!) www.example.jp の A はあるが AAAA がないときに AAAA を索いた recursive サーバは minimum の間は authoritative サーバに query せずにクライアントに ないよ と答えていい Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 54

SOA のおさらい ( 続き ) 注意 SOA の minimum に 86400 と書くのは 今日では不適切 86400 と書くべきは $TTL RFC 2308 には 特に推奨値はないが 例では 1200=20 分となっている BIND 9 の max-ncache-ttl のデフォルト値は 3h $TTL を忘れずに デフォルトの TTL は 今では $TTL ディレクティブに書く ゾーンデータの先頭には必須 SOA より前 ゾーンの途中にも書ける そこからデフォルト値が変わる Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 55

関連 RFC RFC 1033: DOMAIN ADMINISTRATORS OPERATIONS GUIDE RFC 1912: Common DNS Operational and Configuration Errors RFC 2308: Negative Caching of DNS Queries (DNS NCACHE) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 56

NOTIFY ゾーンデータ中の RR が更新されたときに そのことを master から slave に能動的に通知する secondary が refresh を待たずにゾーン転送を要求することを期待する とりこぼす可能性もあるので refresh が要らなくなるわけではないが 念押しの意味合いが強くなった Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 57

NOTIFY を導入すると primary secondary NOTIFY RR 更新 response AXFR response NOTIFY (retry) NOTIFY response AXFR secondary retry の default: 60 秒間隔 /max 5 回 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 58

関連 RFC RFC1996: A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 59

トランスポート層 primary 通常の query passive open 側なので 53 ゾーン転送 リクエストを受ける側 =passive open 側なので 53 NOTIFY active open 側なので 53 以外のポート secondary ゾーン転送 リクエストする側 =active open 側なので 53 以外のポート NOTIFY 受けるだけでなく Notify Set 同士も NOTIFY を送り合う Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 60

トランスポート層 Notify Set NS RRset に書いてあるサーバ全部 だけど mname に書いてあるの (RFC 1035 的には primary) は除く ので 整理すると 一般的には全 secondary Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 61

トランスポート層 ( 続き ) primary ゾーン転送 secondary NOTIFY 53 見落としがち リクエストの向き recursive サーバ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 62

DNS が動かない : 事例 お客様からサポート要請 自分のドメインはアクセスできるが 外がアクセスできない 回線 / ルーティング障害?? すわ一大事!! 詳しくヒアリングしてみると IP アドレスでアクセスすればコネクティビティは O.K. 中からは authority を持っている名前は索けるが 外部の名前が索けない 外からはそのサーバが索けない 実際にアクセスしてみると. の NS が索けない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 63

DNS が動かない : 事例 ( 続き ) 推測 named.root が悪い? 結論 正しく入手したものだった 外部から索けないことの説明がつかない BIND4 時代の知識でファイアウォールで 53 番同士のパケットしか通してなかった 使っていたのは BIND8 query-source port 53; を仮に設定してもらい切り分け Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 64

トランスポート層 ( 続き ) ゾーン転送は最初から TCP を使う それ以外の query は まず UDP を使う でも パケットサイズがある大きさを越えると TCP に切り替える EDNS0(RFC 2671) を使わなければ 512 octet EDNS0 では 受信できるサイズを相手に通知 query 送出側は不特定のポート番号を使う BIND 4.x は 53<->53 だった 大昔の参考書を読むときは注意 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 65

EDNS0 EDNS0 の拡張を使うと UDP で送れるデータサイズを拡大できる requester は additional section に 自分が受け入れられる UDP のサイズなどを設定した pseudo-rr を入れて query を送出する 対応していない responder は NOTIMPL FORMERR SERVFAIL を返すだろう そうしたら EDNS0 なしで retry 自分が EDNS0 に対応していても 相手が対応していなければ EDNS0 は使われない EDNS0 に対応している responder なら 平然と応答する パケットサイズの上限は requester の要求に沿う Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 66

EDNS0 なしで retry ある実装 別の実装 まず EDNS0 なし truncate したら EDNS0 を使ってみる エラーだったら TCP とにかく EDNS0 を使う エラーだったら EDNS0 なし truncate したら TCP Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 67

トランスポート層 ( 続き ) ゾーン転送以外にも TCP が使われることはある 誤 : パケットフィルタで TCP は secondary だけに許可 正 : ゾーン転送のアクセス制限はアプリケーション層で フラグメントは大丈夫ですか? ブロードバンドルータなど 宅内小箱たち Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 68

トランスポート層 ( 続き ) アタック warm に対する防御のために特定ポート宛のパケットをフィルタリングするときに DNS パケットを巻き添えにしないように ソースポートが 53 番だったら DNS パケットの可能性あり 53/udp たまたま 1434/udp? 1434/udp retry に陥って社会の迷惑 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 69

関連 RFC RFC 1035: Domain names - implementation and specification RFC 2671: Extension Mechanisms for DNS (EDNS0) RFC 5966: DNS Transport over TCP - Implementation Requirements Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 70

lame delegation 正しい委任とは 親が NS RR( と glue) で委任を提示している先のネームサーバが そのゾーンの authoritative answer を返す 子が NS RR で authority の所在を主張しているネームサーバが そのゾーンの authoritative answer を返す それぞれのネームサーバが同じ応答を返す キャッシュ上のデータを考慮しても これらが成立する lame delegation とは 正しい委任が成立していないこと Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 71

lame delegation( 続き ) 例えば authoritative サーバを変更するとき 旧サーバが提供したデータは 最長で TTL の間は世の中のキャッシュに載り続ける これは親ゾーンの委任情報に由来するデータより強い だから 親ゾーンの委任情報を更新したから といって 旧サーバが旧データを提供し続けたり 逆にすぐ停止してしまったら TTL が満了するまで lame delegation が発生し得る Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 72

lame delegation( 続き ) 複数の authoritative サーバがあるとき 一部が応答しないこと自体は異常ではない それを認めなきゃ 何のための secondary なんだか 応答の不一致も 即 異常ではない primary secondary の伝播遅延 過渡的ではなく継続的だと異常 ウソを答える奴が混じっていてはいけない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 73

lame delegation( 続き ) example.jp. IN NS ns.example.jp. NS ns.example9.ad.jp. ns.example.jp example.jp の authority を持っている ns.example9.ad.jp example.jp の authority を持っていない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 74

何が起こる? : 非効率編 recursive サーバ root jp www.example.jp? ns.example.jp root への referral を返す SERVFAIL を返す など ns.example9.ad.jp www Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 75

なぜ起こる? authority を持っているはずのネームサーバが authority を失くした 設定ミス secondary が expire した authority を持っていないネームサーバに authority を委任する設定 / 手続きをしてしまった xsp に secondary を依頼するときの手続きミス ISP を替えたのに レジストリの登録を変更し忘れた 旧 ISP は解約されたので設定を消した primary も renumber glue との食い違い etc,etc Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 76

何が起こる? : ヤバい編 example.jp. IN NS ns.example.jp. NS ns.example9.ad.jp. example9.ad.jp ドメインが な理由で消滅 には 買収 事業撤退 などお好きな言葉を当てはめて下さい lame delegation が発生 別の組織が example9.ad.jp というドメイン名を登録して ns.example9.ad.jp という名前でネームサービスを提供 悪意の有無は別としてトラブルの元 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 77

何が起こる? : ヤバい編 ( 続き ) www.example.jp Phishing ns.example9.ad.jp ns.example.jp 偽コンテンツ A 203.0.113.80 正コンテンツ DoS attack A 192.0. 2.80 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 78

ゾーンデータ寄りの話 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 79

コメント記号 コメント記号は ';' '#' はコメント記号ではない UNIX の常識に反している DNS サーバの最初の実装 Jeeves は UNIX ではなく TOPS-20 で開発された named.conf と不統一でまぎらわしい Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 80

相対表記に関する失敗例 名前の末尾に. を忘れる $ORIGIN example.jp. @ IN SOA ( ) IN NS ns.example.jp IN NS ns.example9.ad.jp は @ IN SOA ( ) IN NS ns.example.jp.example.jp. IN NS ns.example9.ad.jp.example.jp. に展開されてしまう NS じゃなくって PTR で忘れると traceroute の結果が恥ずかしいことになる Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 81

相対表記に関する失敗例 ( 続き ) tips 相対表記 絶対表記に関しては 自分の流儀を決めておく 相対表記は使わない 必ず絶対表記 owner は必ず相対表記 RDATA は必ず絶対表記 相対表記できるところは必ずする etc 設定ミスを見つけやすくなる Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 82

ドメイン名の制約 文字種 RFC 1035 に 'host name' の label は アルファベットで始まり アルファベット 数字 - ( ハイフン ) の繰り返し アルファベットまたは数字で終わる のが無難だろう という意味のことが書いてある RFC 1123 で 1 文字目が数字のドメイン名もよいことになった 3com.com 0123.co.jp ありがちな間違い : 'host name' に _ を使ってしまう SRV RR など 'host name' じゃない名前はいいと解釈されている Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 83

関連 RFC RFC 1035: DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION RFC 1123: Requirements for Internet Hosts - Application and Support Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 84

してはいけないこと CNAME を定義した owner に対して 他の RR を定義してはいけない www IN CNAME server156 MX 10 server154 はダメ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 85

してはいけないこと ( 続き ) user@example.jp というメールアドレスを使いたい $ORIGIN example.jp. @ IN SOA ns hostmaster ( 2010060801 20m 15m 4w 15m) NS ns CNAME server154 ; MXを書かなきゃダメ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 86

してはいけないこと ( 続き ) 2 つ目の CNAME もダメ www IN CNAME backend1 CNAME backend2 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 87

してはいけないこと ( 続き ) NS や MX の RDATA に CNAME で定義した alias を書いてはいけない RFC 974 には よくない という趣旨のことが書いてある RFC 2181 には must not be an alias と書いてある @ IN NS ns ns CNAME cabernet-sauvegnon はダメ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 88

しない方がいいこと CNAME の CNAME は避ける 循環参照回避 alias1 IN CNAME alias2 alias2 alias3 CNAME alias3 CNAME alias1 Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 89

しない方がいいこと ( 続き ) RFC では禁止していないが 逆に xx 段まで動作すること というような記述もない unbound では 8 段 BIND 9 では 16 段で正規化を打ち切る NSD は実行時ではなくゾーンコンパイラにかける時点でチェックしているので 循環参照さえなければ いくらでもいける模様 1 段でダメな実装は RFC 違反だが 2 段でダメでも RFC 違反ではない 自サイトの authoritative サーバだけでなく 相手サイトの recursive サーバにも依存 うちは BIND 9 だから 16 段まで大丈夫 ではなく unbound に索かれたら 9 段でアウト Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 90

内部名 外部名 脅威の連鎖 内部名 そのゾーン ( 例 : example.jp) の中の名前 ns2.example.jp www3.example.jp 下位のゾーンでも 別ゾーンの中の名前は外部名 外部名 ns.subdom.example.jp 内部名じゃない名前 www.example9.ad.jp は example.jp から見れば外部名 ns.example9.ad.jp は jp から見れば外部名 削除 : 親に glue が含まれるので内部名になる ( 当日 森下さんから指摘あり ) Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 91

CNAME をゾーンの外へ向けることの意味 $ORIGIN example.jp. www IN CNAME rental800.example9.ad.jp. www.example.jp の設定内容は example.jp の管理者には ( 技術的には ) 制御できない example9.ad.jp の authoritative サーバが乗っ取られると WWW コンテンツの差し替えが可能 CNAME について説明したが NS についても同じ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 92

CNAME をゾーンの外へ向けることの意味 ( 続き ) $ORIGIN example.jp. www IN CNAME rental800.example9.ad.jp. $ORIGIN example9.ad.jp. rental800 IN A 192.0.2.80 rental800 IN A 203.0.113.80 192.0.2.80 203.0.113.80 本物のコンテンツ 偽物のコンテンツ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 93

RRset 中の各 RR の TTL RRset の中の各 RR の TTL はそろえなければならない www 86400 A 192.0.2.53 86400 A 192.0.2.153 はダメ 60 A 192.0.2.253 TrunCated flag が立たずに断片的な RR が返ることがあり得る 実装は RRset 中の RR 全部を RRset 中の最小の TTL として取り扱うべきである Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 94

関連 RFC RFC 2181: Clarifications to the DNS Specification Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 95

4octet に対応する v4 の逆索きゾーン $ORIGIN 2.0.192.in-addr.arpa. : 61 NS ns.example.ad.jp. 62 PTR edge.nrt1.example.net. 委任 接続点 192.0.2.60/30 $ORIGIN 61.2.0.192.inaddr.arpa. @ IN SOA (...) NS ns.example.ad.jp. PTR border1.example.ad.jp. Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 96

4octet に対応する v4 の逆索きゾーン ( 続き ) v6 なら 32nibble に対応する逆索きゾーン 組織間の接続点で アドレスの ownership と DNS での authority の所在とを一致させられる 魔術的なところは何もない ただ あまりよく知られていないだけ ルータ間リンクの PTR には賛否両論ある traceroute の結果に出てくる Layer 3 のトラブルシュートに便利 網構成をナイショにしたい人たち xe-3-2-101.border1.example.ad.jp とかすると あぁ J ね とバレて セキュリティ的に不安という人たち Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 97

'(' と ')' の意味と応用 @ IN SOA ns hostmaster ( 2005120601 1h 15m 4w 15m ) SOA を記述するのに必ず ( と ) が登場する 他のところでは見かけない Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 98

'(' と ')' の意味と応用 ( 続き ) でも ( と ) は SOA の構文の一部ではない Parentheses are used to group data that crosses a line boundary. In effect, line terminations are not recognized within parentheses. RFC1035 5. MASTER FILES; 5.1. Format より 0.f.e.d.c.b.a.9.8.7.6.5.4.3.2.1 ( IN PTR www.example.jp.) なんていう使い方もできる Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 99

おわりに Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 100

おわりに まとめにあらず DNS についてのよくある間違いを いくつかご紹介しました 間違いとしては ケアレスミス 検討が不十分なために起こる誤り 誤解がありました ケアレスミスについては 注意を喚起しました 誤解と 設定例の内容を よく検討せずに引き写しているために起こる間違いとについては 解説を加えました あまり知られていないと思われる事項の紹介から派生して tips をいくつかご紹介しました Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 101

おわりたいけど新たなる迷宮の入り口か? Orange さんと伊藤との ゾーンデータで class は省略できるのか という議論より 当該部分を読むと TTL と class は共にオプションだと書いてあり ( 下記 ) 最後に明示的に指定されたものがデフォルトになる ( 上記 & 下記 ) とあるくせに 少なくとも一つは指定しないといけない という記述は見つかりませんでしたし 省略した時にどうなるかも書いてないようです # 何て曖昧な ってことで 滝澤さん 後はよろしく ~ Aug/31/2012 DNS Summer Days 2012, Koh-ichi Ito 102