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
2022年度新卒技術研修「DNS」講義
Search
excitejp
PRO
June 15, 2022
Technology
1
1.4k
2022年度新卒技術研修「DNS」講義
DNS の基礎を学ぶ講義です。
- 概要
- DNSとは
- ドメイン名
- 今の管理に至る歴史
- 名前解決
- dig コマンド
excitejp
PRO
June 15, 2022
Tweet
Share
More Decks by excitejp
See All by excitejp
エキサイトホールディングス株式会社 - 会社説明 -
excitejp
PRO
0
7.2k
あつまれ!toBプロダクトの沼
excitejp
PRO
1
1.2k
excite_techcon2023__RDS_performance_insightと実行計画 との付き合い方__DBとINDEXを学ぼう
excitejp
PRO
3
1.1k
え?!デザイナーが一人になることってあるんですか?!
excitejp
PRO
1
280
KUROTEN紹介資料_202302
excitejp
PRO
0
160
【エンジニア向け】エキサイト株式会社SaaS事業部紹介資料
excitejp
PRO
0
2.2k
2022年度新卒技術研修「良いコードの書き方」講義
excitejp
PRO
0
1.2k
2022年度新卒技術研修「エンジニアマインド」講義
excitejp
PRO
0
1.3k
2022年度新卒技術研修「Docker」講義
excitejp
PRO
0
1.4k
Other Decks in Technology
See All in Technology
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
170
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
.NET 9 のパフォーマンス改善
nenonaninu
0
1k
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
540
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
160
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
270
podman_update_2024-12
orimanabu
1
280
なぜCodeceptJSを選んだか
goataka
0
160
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
How GitHub (no longer) Works
holman
311
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Practical Orchestrator
shlominoach
186
10k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Designing for humans not robots
tammielis
250
25k
The World Runs on Bad Software
bkeepers
PRO
65
11k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Transcript
DNS インフラストラクチャーグループ 宝⽥優⼀朗
⾃⼰紹介 • エキサイト株式会社 • インフラストラクチャー部 • 新卒6年目 • 宝田優一朗 •
エキサイトの共通システムの AWS 移行に従事
⽬次 • 概要 • DNSとは • ドメイン名 • 今の管理に⾄る歴史 •
名前解決 • dig コマンド
ゴールと学ぶ意味 • ゴール • DNS と名前解決の仕組みを理解する • dig コマンドの結果が読めるようになる •
学ぶ意味 • エンジニアであれば頻繁に名前解決を利⽤する • クラウド化が進みインフラエンジニア以外でも DNS 管理が⾝近に なっている
DNS(Domain Name System)とは DNSとは、インターネット上のホスト名や電⼦メールのアドレスに使われるドメイン名と、 IPアドレスとの対応づけを管理するために使⽤されているシステムである。 インターネット上のコンピュータにアクセスするためには、そのコンピュータの IPアドレ スを知る必要がある。しかし、IPアドレスは0から255までの数値を4つ組み合わせ(IPv4 の場合)で表現されるため、⼈間には記憶しにくい。 そのため、IPアドレスを⽂字列で扱うことができるような機構として、インターネットド
メイン名が考案された。そして、ドメイン名からIPアドレスを引き出す機能が、DNSの代 表的な機能である。 Wikipediaより www.excite.co.jp のIPアドレス教えて IPアドレスは yyy.yyy.yyy.yyy です ネームサーバ クライアント
ドメイン名 • インターネットでは分割されたそれぞれの名前空間の範囲を「ドメイン」、 その範囲を識別するために付けられた名前を「ドメイン名」と呼ぶ • それぞれの階層の名前を重複しないように管理することで、ドメイン名は インターネット全体で⼀意になる • ドメイン名とIPアドレスを適切に対応付けることでドメイン名はインター ネットのホストを特定するための「識別⼦」として使える
WebページのURL:https://excite.co.jp/ メールアドレス:
[email protected]
ドメイン名
ドメイン名の構成 • ドメイン名は⽂字列を「.(ドット)」で繋げた形で構成される • それぞれの⽂字列を「ラベル」という • ドメイン名の最後にもドットがついており、階層構造の頂点となる「ルート」を表す • exicte.co.jp •
ルートを起点として右側から順番に • TLD(Top Level Domain) • jp. • 2LD(2nd Level Domain) • co.jp. • 3LD(3nd Level Domain) • excite.co.jp. excite . co . jp ⼀番後ろにドットがついており、この形を絶対ドメイン名という
サブドメイン ルート(.) jp co.jp excite excite com ドメイン名:excite.co.jp ドメイン名:excite.jp net
それぞれの範囲に名前をつけることで、どの範囲なのかを識別できるので excite は co.jp と jp のそれぞれのサブドメインとして存在できる あるドメイン(excite.jp)が別のドメイン(jp)の範囲に含まれている場合 excite.jp は jp のサブドメインと呼ばれる
DNS 管理の歴史
DNSは集中管理から分散管理へ • 1980年代初頭までSRI-NIC(Stanford Research Institute - Network Information Center)と呼ばれる組織で集中管理 •
更新頻度の増⼤による、SRI-NICの作業量の増加で集中管理の 限界をむかえる SRI-NIC 管理のネームサーバ DNS登録したい組織の管理者 example.com 削除して example.co.jp 登録して example.co.jp の IP やっぱ変更して 💦 ドメインの管理を⾏うサーバ
DNSは集中管理から分散管理へ • 階層化と委任 • 階層化:ラベル(ドメイン)ごとに管理組織と管理者を決める • 委任:管理者に管理を任せる • ドメインが分散管理となり集中管理の時より作業負荷減 ルートネームサーバ
jp ネームサーバ com ネームサーバ 委任 委任 DNS登録したい組織の管理者 excite.jp 登録して example.com 登録して DNS登録したい組織の管理者 管理者 管理者
DNSは集中管理から分散管理へ ルート(.) jp co.jp excite excite com net ドメインの範囲を分けて管理を委任する
DNSは集中管理から分散管理へ • ゾーン • 委任によって管理を任された範囲のこと • DNS では委任した側と委任された側は「親」と「⼦」の関係となる • ゾーンごとにゾーンを管理する管理者を⽴てる必要がある
• ⾃分が委任されたゾーンを管理する • ゾーンを委任した場合、親はゾーンの委任先(⼦)が誰なのかを管理する ルートネームサーバ jp ネームサーバ com ネームサーバ 委任 委任 jp ゾーン com ゾーン excite.jp ネームサーバ excite.jp ゾーン 委任 親 ⼦ .(ルート)ゾーン 親 ⼦ 管理者 管理者 管理者 管理者
ロールプレイ
1. 使いたいドメイン名の購⼊ • ドメインを管理してる組織からドメインを購⼊しなくてはならない • レジストリ・レジストラ・リセラ 2. excite.jp を取り扱うネームサーバをインターネット上に⽤意 Webサイト⽴てたから
Web ブラウザで excite.jp というドメイン名で アクセスできるようにしたい! ロールプレイ Webサイト 興奮太郎
1. 使いたいドメイン名の購⼊ • ドメインを管理してる組織からドメインを購⼊しなくてはならない • レジストリ・レジストラ・リセラ 2. excite.jp を取り扱うネームサーバをインターネット上に⽤意 Webサイト⽴てたから
Web ブラウザで excite.jp というドメイン名で アクセスできるようにしたい! ロールプレイ Webサイト 興奮太郎 まずは登場⼈物を理解する
レジストリ • レジストリ • インターネット上の番号や名前の割り当て・登録を担当する組織(IPアドレスレジストリ・ドメイン名レジストリ) • ⽇本では、IP アドレスや AS 番号などに関する情報は
JPNIC が管理、JP ドメイン名に関する情報は JPRS が管理 • 1つのTLD に対して1つのレジストリが存在する • .jp:JPRS • .com,.net: VeriSign • 役割 • レジストリは登録者が申請したドメイン名や登録者の情報をレジストリのデータベースに登録 • jp ゾーンのネームサーバ運⽤ • レジストリはドメインの直接販売を⾏わない レジストリ ドメイン名や登録者情報の登録 レジストリデータベース .jp のネームサーバ
レジストラ・リセラ • レジストラ • レジストリから認定を受け契約を結んだ上で、 レジストリと利⽤者の間に⽴って、利⽤者からドメイン名の登録・変更などの各種申請を受け付ける事業者 • ⽇本のレジストラの例:お名前.com,ゴンベエドメインなど • レジストリに対してドメイン名や登録者情報の登録を依頼できる
• リセラ • レジストラと契約を結んだ上で、レジストラと利⽤者の間に⽴って、利⽤者からドメイン名の登録・変更などの各種申請を受け付ける事業者 • ⽇本のリセラの例:ムームードメイン,FC2ドメインなど • レジストラに対してドメインの申請をすることができる • 価格やサービス⾯における多様性を確保するために役割を分離 • レジストラやリセラではサービスメニューや価格が異なるので⾃分に合うものを選択する レジストラ 登録者 レジストリ レジストラ 申請 ドメイン名・登録者情報の登録 レジストリデータベース リセラ 複数存在 ドメイン名登録依頼
Whois • レジストリが管理するドメイン名やIPアドレスの割り当て情報 をインターネットに公開し、利⽤者が参照できるようにする サービス • レジストリやレジストラが以下の⽬的で提供する • 技術的な問題が発⽣した際の当事者間における連絡先情報の確保 •
ドメイン名の登録状況の確認 • セキュリティインシデントやドメイン名と商標の関係など、技術的な 問題以外のトラブルの解決 レジストリデータベース Whois サーバ レジストリ 登録 ⼀般ユーザ
Whois の確認⽅法 • whois コマンド • whois excite.co.jp • https://whois.jprs.jp
1. 使いたいドメイン名の購⼊ • ドメインを管理してる組織からドメインを購⼊しなくてはならない • レジストリ・レジストラ・リセラ 2. excite.jp を取り扱うネームサーバをインターネット上に⽤意 Webサイト⽴てたから
Web ブラウザで excite.jp というドメイン名で アクセスできるようにしたい! ロールプレイ Webサイト 興奮太郎 購⼊フローを⾒てみる
excite.jpドメインの購⼊ • レジストラ・リセラに対して excite.jp ドメインを申請 レジストラ 興奮太郎 レジストリ excite.jp の利⽤申請
excite.jp と興奮太郎の情報を登録 レジストリデータベース excite.jp と興奮太郎の情報 の登録依頼 excite.jp の登録完了 ✉
1. 使いたいドメイン名の購⼊ • ドメインを管理してる組織からドメインを購⼊しなくてはならない • レジストリ・レジストラ・リセラ 2. excite.jp を取り扱うネームサーバをインターネット上に⽤意 Webサイトは⽴てたから
Web ブラウザで excite.jp というドメイン名で アクセスできるようにしたい! ロールプレイ Webサイト 興奮太郎
excite.jpドメインを管理する • 階層化と委任の仕組みにより excite.jp は利⽤者のネームサーバで管理する必要がある • excite.jp を取り扱うネームサーバをインターネット上で⽤意 • レジストラがネームサーバ
のサービスを持っていることもある • クラウドのネームサーバを利⽤(AWSだと Route53) • BIND(DNS ソフトウェア)等で⾃前でネームサーバを⽴ててインターネットに公開 jp ネームサーバ jp ゾーン excite.jp ネームサーバ excite.jp ゾーン 委任 管理者( JPRS ) 管理者(興奮太郎)
excite.jpドメインを使えるようにする 興奮太郎が⾏うこと 1. excite.jp を管理するネームサーバのドメ イン名とIPアドレスを決める • ドメイン名:ns.excite.jp • IPアドレス:192.0.2.1
2. Webサイトのドメイン名とIPアドレスを 決める • ドメイン名:excite.jp • IPアドレス:192.0.2.10 3. excite.jp を管理するネームサーバに ② で決めた情報を登録する 4. excite.jp のネームサーバ のドメイン名と IPアドレスをレジストラに申請 興奮太郎が excite.jp を管理するネームサーバ ドメイン名:ns1.excite.jp IPアドレス:192.0.2.1 レジストラ 興奮太郎 excite.jp のネームサーバの ドメイン名(ns.excite.jp)と IP(192.0.2.1)を申請 ドメイン名:excite.jp IPアドレス:192.0.2.10 Webサイト ① ② ③excite.jp の情報を登録 ④ … excite.jp の Web サイト ドメイン名:excite.jp IPアドレス:192.0.2.10
excite.jpドメインを使えるようにする レジストリが⾏うこと 1. ネームサーバ 情報をレジストリデータベースに登録 2. レジストリの管理する jp ネームサーバ に
excite.jp のネームサーバ 情報を登録する • 親(jp)に⼦(excite.jp)のネームサーバ 情報が設定され、 レジストリと興奮太郎の関係がDNSにおける親⼦関係となる • 親のネームサーバ は⼦のネームサーバの情報を知っていることがDNSの委任において重要 興奮太郎が excite.jp を管理するネームサーバ 名前:ns1.excite.jp IPアドレス:192.0.2.1 レジストラ 興奮太郎 レジストリ レジストリデータベース excite.jp のネームサーバの ドメイン名とIPを登録依頼 excite.jp のネームサーバ は ns1.excite.jpで、 そのIPアドレスは192.0.2.1 .jp のネームサーバ excite.jp のネームサーバ は ns1.excite.jp Whois サーバが参照する データベース
全体の委任の状態 ルートネームサーバ jp ネームサーバ 委任 jp ゾーン excite.jp ネームサーバ excite.jp
ゾーン 委任 .(ルート)ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 excite.jpのネームサーバの情報 ns.excite.jp IPアドレス:192.0.2.1 jpのネームサーバの情報 a.dns.jp IPアドレス:203.119.1.1 excite.jp の Web サイト ドメイン名:excite.jp IPアドレス:192.0.2.10 今回設定した部分
1. 使いたいドメイン名の購⼊ • ドメインを管理してる組織からドメインを購⼊しなくてはならない • レジストリ・レジストラ・リセラ 2. excite.jp を取り扱うネームサーバをインターネット上に⽤意 Webサイトは⽴てたから
Web ブラウザで excite.jp というドメイン名で アクセスできるようにしたい! ロールプレイ Webサイト 興奮太郎 excite.jp として Webサーバを公開完了 この先もスライドでも excite.jp の構成を元に 説明するよ
名前解決
名前解決 • 基本は「問い合わせ」と「応答」 • 問い合わせと応答は常に1対1で対応する • 情報を知りたい⼈は知りたい情報のドメイン名と種類(タイプ)を指定する • 「excite.jp(ドメイン名) の
IP アドレス(種類)」を教えて • 情報を提供する⼈は受け取った問い合わせに対し、⾃分が知っている情報を応答する • 階層をたどるということ • DNSは階層化と委任によりルートを頂点とした階層構造 • 名前解決の基本は、頂点であるルートのネームサーバから階層の順番に、知りたい情報を問い合わせて必要な情 報を⼊⼿し、最終的な答えであるIPアドレスを得ること ルート(.) excite jp
excite.jp の名前解決 ルートネームサーバ jp ネームサーバ 委任 jp ゾーン excite.jp ネームサーバ
excite.jp ゾーン 委任 .(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 excite.jpのネームサーバの情報 ns.excite.jp IPアドレス:192.0.2.1 jpのネームサーバの情報 a.dns.jp IPアドレス:203.119.1.1 excite.jp の Web サイト ドメイン名:excite.jp IPアドレス:192.0.2.10 Aさん Web ブラウザで excite.jp に アクセスにしたい! ①excite.jp のIPアドレスを教えてください ②jp は a.dns.jp に委任しています ③excite.jp のIPアドレスを教えてください ④excite.jp は ns.excite.jp に委任しています ⑤excite.jp のIPアドレスを教えてください ⑥192.0.2.10 です 興奮太郎が⽴てたWebサイト ⑦Web サイトへ アクセス
名前解決の負荷と時間 ルートから DNS の階層構造をたどって名前解決する⽅法は確実だが、実施にやるとそれぞれの階層のネームサーバ に繰 り返し問い合わせを送る必要があり、⼿間(負荷)と時間がかかる ルートネームサーバ jp ネームサーバ 委任
jp ゾーン excite.jp ネームサーバ excite.jp ゾーン 委任 .(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 Bさん Aさん Cさん 名前解決する⼈が増えるほ ど負荷が⾼まる 毎回階層構造をたどるのは ⾮効率
名前解決の負荷と時間の軽減 名前解決を担当するサーバ を⽤意し、ホストからの依頼を受けて名前解決を代⾏する ルートネームサーバ jp ネームサーバ 委任 jp ゾーン excite.jp
ネームサーバ excite.jp ゾーン 委任 .(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 Bさん Aさん Cさん 代理で名前解決 をするサーバ ⼀定期間保存しておく(キャッシュ) • ルートは jp に委任していること • jp は excite.jp に委任しているこ と • excite.jp のIPアドレスは 192.0.2.10 であること 私の代わりに名前解決をして excite.jp のIPアドレスを教えてください 192.0.2.10 です 負荷が軽減 名前解決の 速度向上 負荷が軽減
Coffee Break ~正引きと逆引き~ • ドメイン名に対応するIPアドレスを知るのが「正引き」 • IPアドレスからドメイン名を知るのが「逆引き」 • いつ使うの? •
⼈間に直感的なヒントを与える • 管理しているサーバのIPがわかっている時、そのサーバの名前を知る • セキュリティ機能として使う • postfix ではスパムメール防⽌のために、SMTP 接続してきた送信元IPの逆引き を⾏い、逆引き結果を得られた場合のみメールを転送する、という仕組みがある メールサーバ(Postfix) アプリケーションサーバ(192.0.2.2) ✉ 192.0.2.2 のドメイン名は? a.excite.jp です 逆引き引けたので 送信するよ
3種類の構成要素と役割
3⼈の登場⼈物 ルートネームサーバ jp ネームサーバ 委任 jp ゾーン excite.jp ネームサーバ excite.jp
ゾーン 委任 .(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 Bさん Aさん Cさん 代理で名前解決 をするサーバ
DNSの構成要素 名前解決における3種類の構成要素 • スタブリゾルバ(利⽤者) • フルリゾルバ(代理で名前解決をするサーバ) • 権威サーバ(ネームサーバ ) 権威サーバ
(ネームサーバ ) スタブリゾルバ (Aさん) フルリゾルバ (代理で名前解決をするサーバ) 情報を知りたい⼈ 情報を知りたい⼈の代わりに 名前解決してあげる⼈ 情報を提供する⼈
スタブリゾルバ • 利⽤者の PC やスマホで動作するプログラム • Webブラウザやアプリに名前解決をさせるAPIとして動作する • 役割 •
あらかじめ設定されたフルリゾルバに「私の代わりに名前解決をして、 excite.jp の IP アドレスを教えてください」という名前解決の依頼を出す • 「名前解決要求」や「再起的問い合わせ」と呼ばれる • あくまでフルリゾルバに対して依頼をするだけ • 別の名称として「DNS クライアント」と呼ばれることもある スタブリゾルバ フルリゾルバ 名前解決要求
フルブリゾルバ • サーバで動くプログラム • フルブリゾルバから権威サーバへの問い合わせは「反復問い合わせ」 や「⾮再帰的問い 合わせ」と呼ばれる • 役割 •
スタブリゾルバから「名前解決要求」を受けて反復問い合わせを⾏う • ⾃分がそれまでに蓄えた情報から、受け付けた「名前解決要求」のドメイン名と種類の双⽅が⼀致しているも のがあるか調べる • ⼀致しているものがあればそれをスタブリゾルバへ応答、なければ⽬的の情報を得るため権威サーバに問い合 わせる • 反復問い合わせの際に権威サーバから得られた情報をしばらく蓄える • Unix なら /etc/resolv.conf にフルリゾルバのIPが書いてある • 別の名称で呼ばれることもある • キャッシュ DNS サーバ • 参照サーバ • ネームサーバ • DNSサーバ
フルブリゾルバの名前解決 ルート権威サーバ jp権威サーバ 委任 jp ゾーン excite.jp権威サーバ excite.jp ゾーン 委任
.(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 フルリゾルバ ⼀定期間保存しておく(キャッシュ) • ルートは jp に委任していること • jp は excite.jp に委任しているこ と • excite.jp のIPアドレスは 192.0.2.10 であること スタブリゾルバ 名前解決要求 反復問い合わせ
権威サーバ • 役割 • ⾃分が保持しているゾーン情報を応答する • ⾃分が委任を受けたゾーンの情報 • ⾃分が委任しているゾーンの委任情報 •
フルリゾルバからの問い合わせで指定されるドメイン名と種類を元に⾃分が保持してい るゾーン情報から適切な応答を返す • 応答する情報がない場合に他のサーバに問い合わせることはしない • 権威サーバが保持しているゾーン情報をゾーンデータと呼び、ゾーンデータは リソースレコードという形で管理される • 別の名称で呼ばれることもある • 権威 DNS サーバ • ゾーンサーバ • ネームサーバ • DNS サーバ jp 権威サーバ excite.jp 権威サーバ 委任 excite.jpの権威サーバの情報 ns.excite.jp IPアドレス:192.0.2.1 excite.jp の Web サイト ドメイン名:excite.jp IPアドレス:192.0.2.10 リソースレコード
リソースレコードの構成 excite.jp 300 IN A 192.0.2.10 項⽬ 意味 ドメイン名 問い合わせで指定したドメイン名
TTL(Time To Live) そのリソースレコードをフルリゾルバが キャッシュしてもよい時間が秒単位で⼊る クラス ネットワークの種類。基本的にインターネッ トを意味する「IN」が⼊る タイプ 情報の種類。どんな情報が知りたいかによっ て、ここの内容が変わる データ クラスとタイプによって異なるリソースレ コードのデータ ドメイン名 TTL クラス タイプ データ この1⾏がリソースレコード
リソースレコードのタイプ タイプ 指定される内容 A そのドメイン名のIPv4アドレスを指定 AAAA そのドメイン名のIPv6アドレスを指定 NS そのゾーンの権威サーバのホスト名を指定。 委任を実現するために使う
MX そのドメイン名宛ての電⼦メールの配送先と 優先度を指定 CNAME あるドメイン名やホスト名の別名を指定 PTR IPアドレスに対するドメイン名 excite.jp 300 IN A 192.0.2.10 excite.jp ゾーンを 管理する権威サーバ フルリゾルバ excite.jp のAリソースレコードを 教えてください 192.0.2.10 です
CNAMEレコード • CNAMEリソースレコードが⾒つかった場合、ドメイン名を正式名に置き換えて名前解決を継続する • info.excite.jp 300 IN CNAME excite.jp. •
ユースケース • 例えば1台のサーバーで複数のサービスを提供している場合に、サービスごとにサーバーの名前を変えるときに使⽤する • ルール 1. ある別名に対する正式名は常に⼀つであるため、⼀つの別名に対し、正式名を⼆つ以上指定することはできない 2. CNAME として設定された別名はその別名で他のレコードを設定できない 3. 委任されたゾーンのドメイン名には CNAME は使えない excite.jp 300 IN A 192.0.2.10 info.excite.jp 300 IN CNAME excite.jp. info.excite.jp 300 IN CNAME example.com.・・・① info.excite.jp 300 IN TXT “test”・・・② excite.jp 300 IN CNAME example.com・・・③ excite.jp ゾーンを 管理する権威サーバ フルリゾルバ info.excite.jp のAリソースレコードを 教えてください Info.excite.jp は CNAME で excite.jp が設定されています excite.jp のAリソースレコードを 教えてください 192.0.2.10 です 別名 正式名
NSレコード • 委任を実現するために使⽤するレコード • 委任先を⽰す NS(親ゾーンに設定) と 権威を⽰す NS(⼦ゾーンに設定)の2種類が存在 •
親ゾーン • ⾃⾝の権威サーバが管理しているゾーンのサブドメインの中で、 ゾーンとして委任するドメインを決め NS レコードを設定する • NS レコードのデータ部分は新たなゾーンを管理する権威サーバのドメイン名 • 権威サーバのIPアドレスが分からないと名前解決でたどれないのでAレコードを設定(グルーレコード) • ⼦ゾーン • ゾーンの権威を⽰すために権威サーバのドメインを NS で指定する • 基本的に親ゾーンで設定した NS と同じレコードが⼦ゾーンに設定される excite.jp 300 IN NS ns.excite.jp. ns.excite.jp 300 IN A 192.0.2.1(グルーレコード ) jp ゾーン(親)を 管理する権威サーバ excite.jp 300 IN NS ns.excite.jp. excite.jp 300 IN A 192.0.2.10 excite.jp ゾーン(⼦)を 管理する権威サーバ (ns.excite.jp: 192.0.2.1 )
NSレコード excite.jp 300 IN NS ns.excite.jp. ns.excite.jp 300 IN A
192.0.2.1 jp ゾーンを 管理する権威サーバ フルリゾルバ excite.jp のAリソースレコードを 教えてください excite.jp は ns.excite.jp で 管理されています IPは 192.0.2.1 です。 excite.jp のAリソースレコードを 教えてください 192.0.2.10 です excite.jp 300 IN NS ns.excite.jp. excite.jp 300 IN A 192.0.2.10 excite.jp ゾーンを 管理する権威サーバ (ns.excite.jp: 192.0.2.1 ) NS レコード設定後のフルリゾルバの名前解決の様⼦
リソースレコードを設定した構成 ルート権威サーバ jp 権威サーバ 委任 excite.jp 権威サーバ excite.jp ゾーン 委任
.(ルート) ゾーン 管理者(JPRS) 管理者(興奮太郎) 管理者 フルリゾルバ ⼀定期間保存しておく(キャッシュ) • jp NS a.dns.jp • a.dns.jp A 203.119.1.1 • excite.jp NS ns.excite.jp • ns.excite.jp A 192.0.2.1 • excite.jp A 192.0.2.10 スタブリゾルバ excite.jp の 名前解決要求 .jpの権威サーバの リソースレコード jp NS a.dns.jp excite.jp NS ns.excite.jp ns.excite.jp A 192.0.2.1 .(ルート)の権威サーバの リソースレコード jp NS a.dns.jp a.dns.jp A 203.119.1.1 excite.jp の権威サーバの リソースレコード excite.jp NS ns.excite.jp excite.jp A 192.0.2.10 jp ゾーン 198.41.0.4 192.0.2.1 203.119.1.1
Coffee Break ~ネガティブキャッシュ~ • 「存在しない」という結果もキャッシュする • フルリゾルバ、権威サーバの負荷軽減 • 問い合わせから応答までの時間の短縮 •
ネットワークトラフィックの軽減 excite.jp 権威サーバ excite.jp ゾーン 管理者 フルリゾルバ ⼀定期間保存しておく(キャッシュ) • excite.jp A 192.0.2.10 • a.excite.jp は存在しない スタブリゾルバ a.excite.jp excite.jp の権威サーバの リソースレコード excite.jp A 192.0.2.10 a.excite.jp
dig コマンドの理解
名前解決のための dig コマンド 項⽬ 指定される内容 オプション 次スライド参照 @サーバ 問い合わせ先のサーバ(権威サーバ、フルリ ゾルバ
)をドメイン名またはIPアドレスで指 定 省略した場合、システムに設定されているフ ルリゾルバが指定される ドメイン名 問い合わせのドメイン名を指定 タイプ 問い合わせのタイプを指定 省略した場合、Aが指定される クラス 問い合わせのクラスを指定 省略した場合 IN が指定される • さまざまな OS に標準添付されている名前解決のためのコマンド • dig excite.co.jp A dig コマンドの引数の意味
dig コマンドのオプション オプションで指定する機能 オプション 名前解決要求の有効化 +rec, +recurse 名前解決要求の無効化 +norec, +norecurse
ルートから委任情報をトレース +trace 指定されたIPアドレスを逆引き⽤ドメイン名 に変換 -x 「名前解決要求の無効化」は重要かつ分かりにくいオプションのひとつ これを使うと反復問い合わせの動きができるようになる 権威サーバ スタブリゾルバ フルリゾルバ 名前解決要求 反復問い合わせ
DNS メッセージの構造(フォーマット) • 問い合わせと応答は同じ構造をしている • 最⼤5つのセクションにより構成される • Headerセクション(問い合わせと応答両⽅で使⽤) • 各種制御情報を含むヘッダ部
• Questionセクション(問い合わせと応答両⽅で使⽤) • 問い合わせるドメイン名や探す情報のタイプなど • Answerセクション・Authorityセクション・ Additionalセクション(応答のみで使⽤) • 内容は応答結果により異なる • 応答結果がない場合はセクションごと消える Headerセクション Questionセクション Answerセクション Authorityセクション Additionalセクション
Headerセクションの格フィールドの意味 フィールド名 意味 RA(Recursion Available) 名前解決が可能であることを⽰すビット 0は⾮サポート 1はサポート RD(Recursion Desired)
名前解決を要求するビット 0は権威サーバへの問い合わせ 1はフルリゾルバ ーへの問い合わせ QR(Query/Response) 問い合わせが0、応答が1 AA(Authoritative Answer) 応答の際に意味を持つビット 1は管理権限を持つ応答であることを⽰す RCODE(Reply Code) 応答コードは次スライド参照
RCODE に表⽰される応答コードとその意味 応答コード 意味 NOERROR 通常応答 SERVFAIL サーバ側の異常で名前解決に失敗した NXDOMAIN その名前にはいずれのリソースレコードも存
在しない REFUSED アクセス制限や管理ポリシーなどによりリク エストを拒否した
dig コマンドの結果 $ dig www.google.com @8.8.8.8 A ; <<>> DiG
9.10.6 <<>> www.google.com @8.8.8.8 A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64500 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 140 IN A 142.250.207.4 ;; Query time: 6 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Thu Mar 31 19:07:55 JST 2022 ;; MSG SIZE rcvd: 59 RCODE(通常応答) Header - QR:応答 - RD:名前解決要求 - RA:名前解決が可能 Questionセクション - ドメイン名 - タイプ Answerセクション - TTL:140秒 - タイプ:A - IPアドレス: 142.250.207.4 Authorityセクション・Additionalセクションはなし - 問い合わせから応答までの時間 - 問い合わせ先IP・ポート番号 - ⽇付 - 応答のDNSメッセージサイズ
まとめ • DNS で重要な概念 • 階層化 • 委任 • 登場⼈物
• スタブリゾルバ • フルリゾルバ • 権威サーバ • 重要な⾔葉 • 名前解決要求 • 反復問い合わせ この⾔葉を聞いてイメージが浮かぶようになるのが DNS 理解の第⼀歩です!
参考⽂献 • 書籍 • DNSがよくわかる教科書 • ⽇本レジストリサービス • https://jprs.jp/related-info/guide/topics-column/no10.html •
Wikipedia • https://ja.wikipedia.org/wiki/Domain_Name_System • ⽇本におけるインターネット資源管理の歴史 • https://www.nic.ad.jp/timeline/20th/chapter1.html