Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第14章DNS
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kawakawaryuryu
March 28, 2017
Technology
90
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第14章DNS
詳解TCP/IP Vol.1プロトコル
kawakawaryuryu
March 28, 2017
More Decks by kawakawaryuryu
See All by kawakawaryuryu
Spring BootのGraceful shutdownって内部でどうやって実現されているの?
kawakawaryuryu
0
1.3k
Spring Boot 1.5→2.1バージョンアップを経験して分かったハマりどころ
kawakawaryuryu
1
3.7k
第6章ICMP 第7章Ping
kawakawaryuryu
0
120
逆求人イベント
kawakawaryuryu
0
110
Other Decks in Technology
See All in Technology
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
270
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
190
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
240
価値について
gree_tech
PRO
0
150
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
210
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
390
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.3k
Teaching Python with three kinds of AI
reuven
0
100
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
420
freeeにおけるSoftware Factory
freee
PRO
0
320
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
220
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
140
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Technical Leadership for Architectural Decision Making
baasie
3
610
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
What's in a price? How to price your products and services
michaelherold
247
13k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
580
The Pragmatic Product Professional
lauravandoore
37
7.5k
Claude Code のすすめ
schroneko
67
230k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
Transcript
第14章 DNS: ドメイン・ネーム・システム 詳解TCP/IP VOL.1プロトコル 2017/03/27 1
DNSとは lTCP/IPアプリケーションがホスト名とIPアドレス間でマッピングするときや、電子 メールのルーティング情報を提供するときに用いられる分散データベース l主にホスト名(ドメイン名)をIPアドレスに変換するときに用いられる lRFC1034, RFC1035に記載 ⑴サーバーAと通信したい けどIP知らない・・・ DNSサーバー (ネームサーバー)
サーバーA ホスト: www.pq.jp IPアドレス: ? クライアント ⑵www.pq.jp のIP教えて (3)www.pq.jpのIP 2
DNSへのアクセス lDNSへのアクセスはレゾルバーを経由して行われる ◦ DNSに問い合わせを行うソフトウェア lレゾルバーは二つのライブラリ関数を通してアクセスされる ◦ gethostbyname(3): ホスト名を受けてIPアドレスを返す ◦ gethostbyaddr(3):
IPアドレスを受けてホスト名を返す lレゾルバーは最低でも1台以上のネームサーバーのIPアドレスを 知らなければならない lレゾルバーはアプリケーションの一部であり、カーネルの一部ではない 3
DNSの構造 lDNSはツリー構造 l全てのノードはラベルを持つ ◦ ラベルは最大63文字 ◦ ルートノードは特殊なヌルラベルを持つ lドメイン名はノードからルートにさかの ぼり、ピリオド(ドット)で分けられたラベ ルのリストで構成される
l最後がピリオドで終わるドメイン名は絶 対ドメイン、完全指定ドメイン(FQDN)と呼 ばれる ◦ FQDNはホスト名、ドメイン名を省略せずに 記述した形 øøøûõùç ċ ĕ Ě ͷجຊ ċ ĕ Ě ͷωʔϜɾεϖʔε֊తͯé ɼ Ĝ ĕ Đ ğ ͷϑΝΠϊϨγεςϜͱł Ҏ͍ͯΔɻ čİĮõøûõø ɺͦ ͷ֊ܕ৫ਤΛ͍ࣔͯ͠Δɻ δ ϯ ϋ ϒ Τ ҰൠυϝΠϯ ԁ ࠃυϝΠϯ ʔ Ń Մ î ô ô ô úúõøúõùüùõøû÷õ İĵôĨīīĹõĨĹķĨõç č İ Į õ çøûõçø çċĕĚ ͷ֊ܕ৫ਤ ͯ͢ͷϊʔυ ïčİĮõøûõø ͰؙͰݻ·Ε͍ͯΔð ࠷େ ýú ΩϟϥΫλͷϥϕϧΛ࣋ͭɻ֊ πϦʔͷϧʔτψϊϨɾϥϕϧΛ࣋ͭಛघͳϊʔυͰ͋ΔɻϥϕϊϨͷΩϟϥΫλͷେจࣈɺখจ 4
トップレベルドメイン(TLD) larpa: アドレスから名前へのマッピングに 用いられる特殊なドメイン l3文字ドメイン: 汎用ドメイン、組織ドメイン l2文字ドメイン: 国ドメイン、地域ドメイン ◦ jp,
uk, us, cn, in, krなど ࠃυϝΠϯɺ͋Δ͍ҬυϝΠϯͱݺΕΔɻ čİĮõçø û õ çù þ ͭͷ൚༻υϝΠϯͷҰൠతͳΫϥε͚Ͱ͋Δɻ υϝΠϯ આ໌ ĪĶĴç ۀ৫ Ĭīļç ڭҭػؔ ĮĶĽç ถؔػؔ İĵĻç øøģøࡍ ػ ؔ Ĵİijç ถ܉ ĵĬĻç ΦɺοτϫʔΫ ĶĹĮç ͦͷଞͷ৫ č İ Į õ çøûõùç ú ΩϟϥΫλı ຌ༻υϝΠϯ Ұൠతʹɺ ú ΩϟϥΫλͷ൚༻υϝΠϯถࠃͷ৫ͷΈʹద༻͞Εɺͦ 5
DNSの権限の委譲 lノードはそれぞれのゾーン(サブツリー)に管理の権限を委任している ◦ このようにすることで1つのノードが全ての階層を管理しなくて済む lゾーンの責任者はそのゾーンに対して1次ネームサーバーと 1台以上の2次ネームサーバーを提供する必要がある ◦ それぞれが独立し、相互に冗長サーバーでなければならない l1次ネームサーバー ◦
ゾーン情報をディスクのファイルからロードする l2次ネームサーバー ◦ 全ての情報を1次サーバーから受け取る(ゾーン転送) 6
jp pq xyz abc ac ne jpはpq.jpにpq.jpゾーン 管理の権限を委任 root pq.jpはabc.pq.jpにabc.pq.jp
ゾーン管理の権限を委任 pq.jpのゾーン abc.pq.jpのゾーン 7
jp pq xyz abc ac ne 権限を委任 root pq.jpのゾーン abc.pq.jpのゾーン
権限を委任 1次ネーム サーバー 2次ネーム サーバー 2次ネーム サーバー 1次ネーム サーバー ゾーン転送 ゾーン転送 8 ネームサーバーは 冗長構成 pqはabc.pq.jpの ネームサーバーのIP アドレスだけを知っ ていればよい jpはpq.jpのネーム サーバーのIPアドレス だけを知っていれば よい
DNSの名前解決 lネームサーバーは要求された情報が自分のデータベースにあれば それを返す l要求された情報を持っていなければルートネームサーバーに聞きにいく l全ての1次サーバーはルートネームサーバーのIPアドレスを知っている必要が ある lネームサーバーが情報を受信するとしばらくの間キャッシュする 9
10 ルートネームサーバー jpのネームサーバー www.pq.jpと 通信したい。。 ①www.pq.jp のIP教えて ②www.pq.jp のIP教えて ③jpのネーム
サーバーに聞いて ④www.pq.jp のIP教えて ⑤pq.jpのネーム サーバーに聞いて ⑧100.100.100.100 クライアント pq.jpのネームサーバー ⑥ www.pq.jp のIP教えて ⑦www.pq.jpのIPは 100.100.100.100(仮) www.pq.jpのサーバー ⑨通信 ネームサーバー
11 ルートネームサーバー jpのネームサーバー www.pq.jpと 通信したい。。 ① ② ③ ④ ⑤
⑧ クライアント pq.jpのネームサーバー ⑥ ⑦ www.pq.jpのサーバー ⑨ 再帰照会 反復照会 反復照会 反復照会 反復照会 再帰照会を受けたDNSサーバー が自身の管理するゾーン情報を 返す問い合わせ 再帰照会 クライアントからDNSサーバーに対 する問い合わせで、そのサーバー 自身が名前解決を行う ネームサーバー
DNSメッセージ形式 l12バイトのヘッダーと4つの可変長 フィールドで構成 lフラグ: 次スライド l質問数: 問い合わせの数 l回答RR数 l権威RR数 l追加RR数
ø ø ø û õ ú ç ċ ĕ Ě ϝοηʔδܗࣜ ijͭͷ ċĕĚ ϝοηʔδܗ͕ࣜɺরձ͓ΑͼԠͷํʹରͯ͠ఆٛ͞Ε͍ͯΔɻ ɻ øüç øýç úøç ࣝผࢠ ϑϥά ࣭ ճ ę ę ݖҖ ę ę Ճ ę ę ࣭ ı ç ճ ï ϦιʔεɾϨίʔυʹԠͯ͡Մมð ݖҖ ï ϦιʔεɾϨίʔυʹԠͯ͡Մมð ഭ ྗ ʱ ใ Ԡ ï ϦιʔεɾϨίʔυij ͯ͡Մมð č İ Į õ çøûõúç ċĕĚ রձ͓ΑͼԠͷҰൠܗࣜ øûõúç ċĕĚϝοηʔδܗࣜ 12
フラグフィールド lQR: 照会なら0、応答なら1 lオプコード: 問い合わせの種類を表す ◦ 0(標準照会)、 1(逆照会)、2(サーバーステータス要求) lAA(Authoritative Answer):
権威あるサーバーからの回答かどうか lTC(Truncation): UDPによる回答が512バイトを超えるかどうか lRD(Recursion Desired): 再帰照会か反復照会か lRA(Recursion Available): 再帰照会をサポートしているかどうか lrecode: リターンコード ◦ 0(エラーなし)、3(ネームエラー)など ಉ Ļ þāøôυ ŃĈĈĐěĊçĐęċĐęĈĐç ï ç ÷ðç ú ç čİĮõçøûõûç ċ ĕ Ě ϔομͷϑϥάɾϑΟʔϧυ ĹĬĪĶīĬç û ç ·ͣҰ൪ࠨͷͲοτ͔ΒɺͦΕͧΕͷϑΟʔϧυʹ͍ͭͯॱʹղઆ͢Δɻ • Ę ę Đ ϐοτͷϑΟʔϧυͰ͋Δɻ Ė ϝοηʔδ͕রձͰ͋Δ͜ͱΛҙ Ͱ͋Δ͜ͱΛҙຯ͢Δɻ ɾΦϓίʔυ û ϐοτͷϑΟʔϧυͰ͋Δɻ௨ৗͷ Ėïඪ४è ij ձð ɻͦ ï ٯ র ձ ð ͱ ùïαʔόʔɾεςʔλεཁٻð Ͱ͋Δɻ • Ĉ Ĉ ø ϐοτͷϑϥάͰɺʮݖҖ͋Δճā ĈļĻįĶĹİĻĨĻİĽĬçĈĵĺľĬĹç đΛҙ Ϝɾαʔόʔ࣭ηΫγϣϯͷυϝΠϯʹରͯ͠ݖҖΛ͍࣋ͬͯΔɻ • ěĊ ø ϐοτͷϑΟʔϊϨυͯé ɼ Ĺ ෆશıͰ͋Δ͜ͱΛҙຯ͢Δɻ Ĝ ċ ė Ͱ όΠτΛ͑ɺ࠷ॳͷ üøù όΠτ͚͕ͩฦ͞Εͨ͜ͱΛҙຯ͢Δɻ • ę ċ ø ϐοτͷϑΟʔϧυͰɺʮ࠶ؼཁٻʯΛҙຯ͢Δɻ͜ͷϐοτপձ 13 ゾーンの情報を管理するサーバー
DNS照会メッセージの質問部分 l照会名:検索される名前 ◦ 可変長 ◦ 形式は次のスライド l照会タイプ:右図参照 l照会クラス:通常は1 ◦ 1はInternetアドレスを表す
lこのフィールドは32ビット境 界以外で終わることができる (パッドを埋める必要はない) ொċ ĕ Ě রձϝοηʔδʞͷ࣭෦ ࣭ηΫγϣϯͷ֤࣭ͷܗࣜɺ čİĮõ øûõü ʹࣔ͞Ε͍ͯΔɻ௨ৗɺ͜͜ʹ Đ ͭͷ࣭͕͋ Δ ɻ øüç ø ý ç রձ໊ রձλΠϓ রձΫϥε č İ Į õ çøûõüç ċ ĕ Ě ࣭ηΫγϣϯͷ֤࣭ͷܗࣜ ໊ આ໌ λΠϓĆ রձλΠϓĆ Ĉ ç ø ç Đė ΞυϨε • • ĕ Ě ç ù ç ΦɺʔϜɾαʔόʔ • • Ċ ĕ Ĉ Ĕ Č ç ü ç ن४໊ • • ė ě ę ç øùç ϙΠϯλɾϨίʔυ • • ď Đ ĕ č Ė ç øúç ϗετใ • • Ĕ ğ ç øüç ϝʔϧަϨίʔυ • • Ĉ ğ č ę ç ùüùç ι Ĭ ʔϯసૹͷཁٻ • ñ ·ͨ Ĉ ĕ Ġ ùüüç શϨίʔυͷཁٻ • čİĮõçøûõþç ċ ĕ Ě ࣭͓ΑͼԠͷλΠϓͱরձλΠϓͷ ொċ ĕ Ě ԠϝοηʔδʞͷϦιʔεɾϨίʔυ෦ ċ ĕ Ě ϝοηʔδͷ࠷ޙͷ ú ͭͷϑΟʔϊϨυɺϦιʔεɾϨίʔυ·ͨ ę ę ͱݺΕΔ ͷܗࣜΛ࣋ͭճɺݖҖɺՃใϑΟʔϊϨυͰ͋Δɻ čİĮõ øûõçÿ ϦιʔεɾϨίʔυͷܗ ͍ࣔͯ͠Δɻ ɻ øüç øýç ú 14
照会名(ドメイン名)の形式 lラベルのバイト数(カウント)とラベル名で表す l最後は0で終わる(ルートのラベルを表す) τʹ੍ݶ͞Ε͍ͯΔ͜ͱ͔Βɺ Ė ͔Β ýú ͷൣಉʹͳΔʹͷઅͷޙͰɺ͕ øĀù ͔Β
ùüü ͷ ù ͭ ͷ্ҐϏοτ͕Φϯʹͳ͍ͬͯΔΧϯɾόΠτɺѹॖखॱʹ༻͍ΒΕΔ͜ͱΛղઆ͢Δð ɻ ଞͷଟ͘ͷϝοηʔδܗࣜͱҟͳΓɺ͜ͷϑΟʔϧυ úù ϐοτڥքҎ֎ͷڥքͰऴΘΔ͜ͱ͕ ͯ ɺ ͖ ɺ ϊ ĭ ουΛຒΊΔඞཁͳ͍ɻ čİĮõçø û õ çý ɺ υϝΠϯ໊ ĮĬĴİĵēĻļĪõĵĶĨĶõĬīļ ͕ͲͷΑ͏ʹ֨ೲ͞Ε͍ͯΔ͔Λ͍ࣔͯ͠ Δ ɻ ø ç ø ø τ Χ ø τ Χ ø τ č İ Į õ çøûõýç υϝΠϯ໊ ĮĬĴİĵİ õ ĻļĪõçĵĶĨĶõ īļ ͷදه ͦΕͦΕͷ࣭রձλΠϓΛ࣋ͪɺԠï ϦιʔεɾϨίʔυͱ ij ݺͿɺð λΠϓΛ࣋ͭɻ ͦΕ ʹ͓Αͦ ù÷ छͷҟͳΔഢ͕͋Γɺͦͷ͏ͪͷ͍͔ͭ͘ݱࡏͯΘΕͳ͘ͳͬͨͷ͋ 15
DNS応答メッセージの リソースレコード(RR)部分の形式 l回答、権威、追加情報のフィールドは リソースレコード(RR)という共通の形式を持つ čİĮõçøûõþç ċ ĕ Ě ࣭͓ΑͼԠͷλΠϓͱরձλΠϓͷ ொċ
ĕ Ě ԠϝοηʔδʞͷϦιʔεɾϨίʔυ෦ ċ ĕ Ě ϝοηʔδͷ࠷ޙͷ ú ͭͷϑΟʔϊϨυɺϦιʔεɾϨίʔυ·ͨ ę ę ͱݺΕΔڞ௨ ͷܗࣜΛ࣋ͭճɺݖҖɺՃใϑΟʔϊϨυͰ͋Δɻ čİĮõ øûõçÿ ϦιʔεɾϨίʔυͷܗࣜΛ ͍ࣔͯ͠Δɻ ɻ øüç øýç úøç υ ϝ Π ϯ ໊ λΠϓ Ϋ ϥ ε ੜଘ࣌ؒ Ϧιʔεɾσʔλ Ϧιʔεɾσč ʔ λ Гç čİĮõçøûõÿç ċ ĕ Ě ϦιʔεɾϨίʔυͷܗࣜ 16 lドメイン名とリソース データは可変長 l生存時間(TTL) ◦ クライアントによって保持さ れる秒数 lリソースデータ長 ◦ リソースデータの総量 ◦ タイプに依存する ◦ Aレコードの場合は4バイト (IPアドレスが入るため)
ドメイン名の圧縮 l応答にはドメイン名が反復されることもあり、圧縮技術が用いられる l圧縮メッセージの場合は16ビットでドメイン名を表す l上位2ビットをオン(11)にし、残りの14ビットでドメイン名のあるDNSメッセージの オフセットを指定する ◦ オフセットは識別子フィールドの最初から数える 17 1 1
圧縮する場合のドメイン名の形式 オフセット 0 15 1 2
例 sun上で $ telnet gemini daytime を実行 18 Ͱɺϗετ ĺļĵïěĬijĵĬĻ
ΫϥΠΞϯτ͕࣮ߦ͞Ε͍ͯΔð ্ͷϨιπϨόʔʹɺϗετ ļïøû÷õùüùõøõüûð্ͷωʔϜɾαʔόʔΛར༻͢ΔΑ͏ʹࢦࣔͨ͠ɻ čİĮõøûõĀ ɺ ú ͷ ͷؔΛ͍ࣔͯ͠Δɻ øû÷õùüùõøç ö ç ö ç ɼç ěĬijĬĵĬĻç ΫϥΠΞϯτ σ Π λ Π Ϝ ɾ αʔόʔ û ç čİĮõçøûõĀç ؆୯ͳ ċ ĕ Ě ͷྫʹ༻͍ͨγεςϜ
19 ĺļĵçì çĻĬijĵĬĻçĮĬĴİĵİçīĨŀĻİĴĬç ěĹŀİĵĮçøû÷õùüùõøõøøç ĊĶĵĵĬĪĻĬīçĻĶçĮĬĴİĵİõĻļĪõĵĶĨĶõĬīļõç ČĺĪĨķĬçĪįĨĹĨĪĻĬĹç İĺç îôĤîõç ĞĬīçĔĨĹçùûçø÷āûûāøþçøĀĀúç ĊĶĵĵĬĪĻİĶĵçĪijĶĺĬīçĩŀçĭĶĹĬİĮĵçįĶĺĻõç
࠷ ॳ ͷ ú ߦ ěĬijĵĬĻ ΫϥΠΞϯτ͔Βͷग़ྗ ͜ ͷ ߦ īĨŀĻİĴĬ αʔόʔ͔Βͷग़ྗ ͜ ͷ ߦ ěĬijĵĬĻ ΫϥΠΞϯτ͔Βͷग़ྗ ͜ͷྫͰɺϗετ ĺļĵïěĬijĵĬĻ ΫϥΠΞϯτ͕࣮ߦ͞Ε͍ͯΔð ্ͷϨιπϨόʔʹɺϗετ ĵĶĨĶõĬīļïøû÷õùüùõøõüûð্ͷωʔϜɾαʔόʔΛར༻͢ΔΑ͏ʹࢦࣔͨ͠ɻ čİĮõøûõĀ ɺ ú ͷ γεςϜͷؔΛ͍ࣔͯ͠Δɻ øû÷õùüùõøç ö ç ö ç ɼç ěĬijĬĵĬĻç ΫϥΠΞϯτ σ Π λ Π Ϝ ɾ αʔόʔ û ç ĺļĵçì çĪĨĻçıĬĻĪıĹĬĺĶijĽõĪĶĵĭç ĵĨĴĬĺĬĹĽĬĹçøû÷õùüùõøõüûç īĶĴĨİĵçĻļĪõĵĶĨĶõĬīļç ࠷ॳͷߦωʔϜɾαʔόʔï ϗετ ĵĶĨĶõ Ĭīļð ͷ Đė ΞυϨεΛද͍ࣔͯ͠Δɻނো౸ୡෆ Մͷ߹ͷύοΫΞοϓΛߟ͑ͯɺ ĵĨĴĬĺĬĹĽĬĹ ࠷େ ú ͕ࢦఆͰ͖Δɻ īĶĴĨİĵ ߦσϑΥϧ τͷυϝΠϯΛࢦఆ͍ͯ͠Δɻݕࡧ͞ΕΔ໊લ͕શͳυϝΠϯ໊Ͱͳ͍ï ࠷ޙ͕ϐϦΦυͰͳ ͍ð ߹ɺσϑΥϧτͷυϝΠϯõĻļĪõĵĶĨĶõĬīļ ໊͕લͷ࠷ޙʹ͚ͭՃ͑ΒΕΔɻզʑ͕ ĻĬijĵĬĻ ĮĬĴİĵİ õ ç ĻļĪõçĵĶĨĶõç Ĭīļ ͱͤͣɺͨͩ୯ʹ ĻĬijĵĬĻ ĮĬĴİĵİ ͱͨ͠ͷɺ͜͏ͨ͠ཧ༝͔ΒͰ͋Δɻ čİĮõçøûõçø÷ ɺϨκϊϨόʔͱωʔϜɾαʔόʔฉͷύέοτͷަΛ͍ࣔͯ͠Δɻ l nameserver ネームサーバーのIPアドレス l domain デフォルトのドメイン
20 ĺļĵçì çĪĨĻçıĬĻĪıĹĬĺĶijĽõĪĶĵĭç ĵĨĴĬĺĬĹĽĬĹçøû÷õùüùõøõüûç īĶĴĨİĵçĻļĪõĵĶĨĶõĬīļç ࠷ॳͷߦωʔϜɾαʔόʔï ϗετ ĵĶĨĶõ Ĭīļð ͷ
Đė ΞυϨεΛද͍ࣔͯ͠Δɻނো౸ୡෆ Մͷ߹ͷύοΫΞοϓΛߟ͑ͯɺ ĵĨĴĬĺĬĹĽĬĹ ࠷େ ú ͕ࢦఆͰ͖Δɻ īĶĴĨİĵ ߦσϑΥϧ τͷυϝΠϯΛࢦఆ͍ͯ͠Δɻݕࡧ͞ΕΔ໊લ͕શͳυϝΠϯ໊Ͱͳ͍ï ࠷ޙ͕ϐϦΦυͰͳ ͍ð ߹ɺσϑΥϧτͷυϝΠϯõĻļĪõĵĶĨĶõĬīļ ໊͕લͷ࠷ޙʹ͚ͭՃ͑ΒΕΔɻզʑ͕ ĻĬijĵĬĻ ĮĬĴİĵİ õ ç ĻļĪõçĵĶĨĶõç Ĭīļ ͱͤͣɺͨͩ୯ʹ ĻĬijĵĬĻ ĮĬĴİĵİ ͱͨ͠ͷɺ͜͏ͨ͠ཧ༝͔ΒͰ͋Δɻ čİĮõçøûõçø÷ ɺϨκϊϨόʔͱωʔϜɾαʔόʔฉͷύέοτͷަΛ͍ࣔͯ͠Δɻ ø ç ÷õ÷ç øû÷õùüùõøõùĀõøûûþçą ç øû÷õùüùõøõüûõüúāç øòçĈĆç ĮĬĴİĵİõĻļĪõĵĶĨĶõĬīļõç ïúþðç ù ç ÷õùĀ÷ÿù÷çï÷õùĀ÷ÿðç øû÷õùüùõøõüûõüúçą ç øû÷õùüùõøõùĀõøûûþāç øñçùö÷ö÷çĈ ç øû÷õùüùõøõøøç ïýĀðç čİĮõçøûõçø÷ç ϗετ໊ ĮĬĴİĵİ õ ĻļĪõçĵĶĨĶõçĬīļ ͷωʔϜɾαʔόʔরձͷ ĻĪķīļĴķ ग़ ྗ զʑ ĻĪķīļĴķ ʹର͠ɺ֤ Đė σʔλάϥϜͷൃ৴ݩͱ͋ͯઌ Đė ΞυϨεʹυϝΠϯ໊Λग़ øû÷õùüùõøç ö ç ö ç ɼç ěĬijĬĵĬĻç ΫϥΠΞϯτ σ Π λ Π Ϝ ɾ αʔόʔ û ç čİĮõçøûõĀç ؆୯ͳ ċ ĕ Ě ͷྫʹ༻͍ͨγεςϜ ͏ʹɺϨιπϨόʔΫϥΠΞϯτͷҰ෦Ͱ͋Γɺ ěĬijĵĬĻ ͱσΠλΠϜɾαʔόʔͷ ΦɺΫγϣϯཱ͕֬͞ΕΔલʹɺ Đė ΞυϨεΛೖख͢ΔతͰΦɺʔϜɾαʔόʔͱί Δɻ ͱČĻįĬĹĵĬĻ ͷ øû÷õùüùõø ͷฉɺ࣮ࡍʹ ĚēĐė ϦϯΫï ຊॻදࢴཪͷਤΛࢀরͤ ͜ͰͷٞʹӨڹ͠ͳ͍ͷͰɺਤͰলུͨ͠ɻ͔͠͠ɺϨιπϨόʔͱΦɺʔϜɾ l 1+ 識別子が1でRD(再帰要求)フラグが設定 l A? タイプがAで照会を表す l 1* 識別子が1でAA(権威ある回答)フラグが設定 l 2/0/0 応答の最後の3つの可変長フィールドの数 (回答RR数2, 権威RR数0, 追加RR数0) 今回、回答RRが2つあるのはgeminiが マルチホームだから
21 Đė σʔλάϥϜ Ĝ ċ ė σʔλάϥϜ ċĕĚ ϝ ο
η ʔ δ Đėç ϔομ ù÷ όΠτ č ಉ О ô î Ĕ Ұ ৺ ࣭ ߂ Ұ Ĝ č Ұ ù υϝΠϯ໊ ïýĮĬĴİĵİúĻļĪûĵĶĨĶúĬīļĖĐç ùø όΠτ ù ç ù ç ù ç ù ç ù ç û ç ù ç û ç čİĮõçøûõçøøç č İ Į õ çøûõçø÷ ͷ ù ߦʹରԠ͢Δ ċĕĚ Ԡͷܗࣜ ୈ øû ষ ċĕĚā υϝΠϯɾωʔϜɾγεςϜ l ポインタはドメイン名 の圧縮技術が使われ ており、オフセットが入 る l DNSヘッダから数えて 12バイト目にドメイン 名があるため12が入 る
ポインタ照会 lIPアドレスからホスト名(ドメイン名)を取得する照会 lIPアドレスを逆順に並び替えたものにin-addr.arpaをつけたものを ドメイン名として照会する l例:140.252.13.33のホスト名を知りたいとき ◦ 33.13.252.140.in-addr.arpaをドメインとして照会する lこのようにすることでDNSツリーのルートからたどっていくことができ、 正引き(ドメイン名からIPアドレスへの変換)と同じように名前解決をすることが できる
22 ポインタ照会方法
例 lhostコマンドを使ってポインタ照会する 23 ொ ྫ ϙΠϯλͷݕࡧΛߦ͏ͨΊʹ įĶĺĻ ϓϩάϥϜΛ࣮ߦ͠ɺ ĻĪķīļĴķ ͰύέοτͷྲྀΕΛݟͯΈ
Α͏ɻ͜͜Ͱ čİĮõøûõĀ ͱಉ͡ઃఆΛ༻͍ɺϗετ ĺļĵ ্Ͱ įĶĺĻ ϓϩάϥϜΛΒͤɺΦɺʔϜɾ αʔόʔϗετ ĵĶĨĶõ Ĭīļç đ îɼʹஔ͘ɻϗετ ĺĽĹû ͷ Đė ΞυϨεΛࢦఆ͢Δɻ ĺļĵçì ç įĶĺĻçøû÷õùüùõøúõúûç ĕĨĴĬāç ĺĽĹûõĻļĪõĵĶĨĶõĬīļç ĈīīĹĬĺĺāç øû÷õùüùõøúõúûç øûõüç ϙΠϯλরձ ùùþç ίϚϯυɾϥΠϯͷҾ͖ Đė ΞυϨε͚ͩͰ͋ΔͨΊɺ įĶĺĻ ϓϩάϥϜࣗಈతʹϙΠϯ λরձΛੜ͢Δɻ čİĮõ øûõçøù ĻĪķīļĴķ ग़ྗͰ͋Δɻ ϋ Ϧ ϋ Ϧ øû÷õùüùõøõùĀõøýø÷çą ç øû÷õùüùõøõüûõüúāç øòçėěęĆç úûõøúõùüùõøû÷õİĵôĨīīĹõĨĹķĨõç ïûûðç ù ç ÷õúúùùÿÿçï÷õúúùúðç øû÷õùüùõøõüûõüúçą ç øû÷õùüùõøõùĀõøýø÷āç øñç øö÷ö÷çėěęç ĺĽĹûõĻļĪõĵĶĨĶõĬīļõç ïþüðç č İ Į õ çøûõçøùç ϙΠϯλরձͷ ĻĪķīļĴķ ग़ྗ ࢠ͕ ø Ͱɺ࠶ؼཁٻ͕ઃఆ͞Εï ϓϥεه߸ð ɺরձλΠϓ ė ě ę Ͱ͋Δ͜ͱΛ
リソースレコード(RR)の種類 l以下は一例 l他にも色々ある RR A PTR CNAME HINFO MX NS
説明 ホストのIPア ドレス IPアドレスの 逆引き用ポ インタ ホスト名の 別名に対す る正式名 ホストに関 する追加の 情報 メールサー バー ネームサー バー 24
キャッシング l全てのネームサーバーはDNSトラフィック軽減のためキャッシュを用意してい る lキャッシュはレゾルバーではなくサーバーで管理される 25
UDPかTCPか lDNSは基本的にUDPを用いる l512バイトを超えた応答が返ってきたら(TCビットが設定されていたら) TCPで要求を再送する ◦ TCPはセグメントに分割して送信できるため、どんな大きさのデータでも送れるから lゾーン転送ではTCPが使われる 26
ホスト名のスプーフィング(なりすまし) lRloginサーバーなどはTCPあるいはUDPから受け取ったIPアドレスが クライアントのIPアドレスと一致するか確認する 1. TCPあるいはUDPパケットを受け取ったサーバーは発信元IPアドレスに対応 するホスト名(FQDN)をDNSに問い合わせる(PTRレコード) 2. サーバーは返されたホスト名に対するIPアドレスを問い合わせる(Aレコード) 3. サーバーは返されたAレコードのIPアドレスとTCPあるいはUDPで受け取った
IPアドレスを比較する 27
例 č İ Į õ çøûõçøýç ęijĶĮİĵ ΫϥΠΞϯτͱαʔόʔͷىಈ࣌ʹߦΘΕΔύέοτͷަ 28
まとめ lDNSはホスト名とIPアドレスをマッピングするときに用いられるシステム lレゾルバーを通してDNSへアクセスされる lDNSはツリー構造で、ドメインの管理はゾーンに管理の権限を委任している lDNSメッセージには質問、回答RR、権威RR、追加RRが含まれる ◦ これらは可変長 lポインタ照会(逆引き)はin-addr.arpaドメインを使用する l全てのネームサーバーにはキャッシュが用意されている lDNSでは主にUDPを使用
29
参考 lマスタリングTCP/IP 入門編 第5版 lDNS Tips - @IT, http://www.atmarkit.co.jp/ait/series/1719/ 30
実験・デモ ldigコマンドを用いて名前解決する 31