Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第14章DNS
Search
kawakawaryuryu
March 28, 2017
Technology
85
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.2k
Spring Boot 1.5→2.1バージョンアップを経験して分かったハマりどころ
kawakawaryuryu
1
3.6k
第6章ICMP 第7章Ping
kawakawaryuryu
0
110
逆求人イベント
kawakawaryuryu
0
100
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.1k
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
120
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
210
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
160
20260619 私の日常業務での生成 AI 活用
masaruogura
1
220
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
240
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
400
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
310
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
120
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
150
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.2k
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
220
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
GraphQLとの向き合い方2022年版
quramy
50
15k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
How STYLIGHT went responsive
nonsquared
100
6.2k
Are puppies a ranking factor?
jonoalderson
1
3.6k
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
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