メインコンテンツにスキップ

DNSとは? 🌐

ウェブサイトのアドレスを入力すると、どうやってそのサイトに接続できるのでしょうか?それはDNSのおかげです!DNSが何で、どのように動作するのか、初心者でも簡単に理解できるように説明します!

DNSを日常生活に例えると?

DNSを電話帳に例えてみましょう。

電話帳の話 📞

友達に電話したいとき:

電話帳なし:
"080-1234-5678に電話しなきゃ..."
→ 番号を覚えるのは難しい 😓

電話帳使用:
"山田太郎"で検索
→ 電話帳が080-1234-5678を教えてくれる
→ 自動で電話接続! ✅

DNSも同じです!

ウェブサイト接続:

DNSなし:
"192.168.1.1に接続しなきゃ..."
→ 数字のIPを覚えるのは不可能 😓

DNS使用:
"google.com"と入力
→ DNSが172.217.175.46を教えてくれる
→ 自動でサイト接続! ✅

DNSの定義

DNS (Domain Name System)

  • ドメイン名をIPアドレスに変換するシステム
  • インターネットの"電話帳"
  • 人間が読みやすいアドレスをコンピュータが理解する数字に変換
google.com → 172.217.175.46
yahoo.co.jp → 182.22.59.229

なぜDNSが必要なのか?

問題:IPアドレスは覚えにくい

❌ 192.168.1.1
❌ 172.217.175.46
❌ 223.130.195.95

→ 数字だけではどのサイトか分からない
→ 覚えるのは不可能

解決:ドメイン名を使う

✅ google.com
✅ yahoo.co.jp
✅ github.com

→ 意味があって覚えやすい
→ ブランド名が使える

DNS動作プロセス

1. ブラウザにアドレス入力

ユーザー: "google.com"を入力

2. DNS検索開始

ブラウザ → DNSサーバー: "google.comのIPアドレスを教えて"

3. DNSサーバー階層構造

1. Root DNS(ルート)

2. TLD DNS(.com、.netなど)

3. Authoritative DNS(実際のIPを持つ)

4. IPアドレスを返す

4. IPアドレスで接続

DNSサーバー → ブラウザ: "172.217.175.46だよ"
ブラウザ → 172.217.175.46: 接続リクエスト
ウェブサイト読み込み! ✅

DNS検索詳細プロセス

1. キャッシュ確認
ブラウザキャッシュ → OSキャッシュ → ルーターキャッシュ
└─ あればすぐ使用 ⚡

2. Recursive DNS(通信事業者DNS)
└─ ISPのDNSサーバーに問い合わせ

3. Root DNSサーバー
└─ ".comはこちらへ"と教える

4. TLD DNSサーバー(.com)
└─ "google.comはこちらへ"と教える

5. Authoritative DNS
└─ "google.comのIPは172.217.175.46"

6. 結果をキャッシング
└─ 後のために保存

DNSレコードの種類

Aレコード(Address)

ドメイン → IPv4アドレス

example.com → 192.168.1.1

AAAAレコード

ドメイン → IPv6アドレス

example.com → 2001:0db8:85a3::8a2e:0370:7334

CNAMEレコード(Canonical Name)

別名 → 他のドメイン

www.example.com → example.com
blog.example.com → example.com

MXレコード(Mail Exchange)

メールサーバー指定

example.com → mail.example.com(優先度10)

TXTレコード

テキスト情報保存
主に所有権確認、SPF、DKIMなど

example.com → "v=spf1 include:_spf.google.com ~all"

NSレコード(Name Server)

ネームサーバー指定

example.com → ns1.example.com

DNSキャッシング

キャッシュ階層

1. ブラウザキャッシュ
└─ 最速(1ms)

2. OSキャッシュ
└─ 非常に速い(5ms)

3. ルーターキャッシュ
└─ 速い(10ms)

4. ISP DNSキャッシュ
└─ 普通(50ms)

5. 実際のDNS検索
└─ 遅い(200ms+)

TTL(Time To Live)

DNSレコードごとに有効期間を設定

TTL: 3600(1時間)
→ 1時間はキャッシュを使用
→ 1時間後に再検索

利点:

  • 高速な応答
  • DNSサーバーの負荷軽減

欠点:

  • IP変更時に即座に反映されない

DNSサーバーの種類

1. Public DNS(パブリックDNS)

Google DNS:

プライマリ: 8.8.8.8
セカンダリ: 8.8.4.4

→ 高速で信頼性が高い

Cloudflare DNS:

プライマリ: 1.1.1.1
セカンダリ: 1.0.0.1

→ 最速
→ プライバシー重視

Quad9:

9.9.9.9

→ セキュリティ重視(悪質サイトブロック)

2. ISP DNS(通信事業者DNS)

NTT、KDDI、ソフトバンクなどが提供
→ 自動設定される
→ 遅い場合が多い

DNSセキュリティ

DNSスプーフィング(DNSなりすまし)

攻撃:

ハッカーがDNS応答を操作
google.com → ハッカーのサーバーIP

ユーザーは偽サイトに接続
→ 情報窃取の危険 🚨

防御:

DNSSEC(DNS Security Extensions)
→ DNS応答の暗号化と検証

DNS over HTTPS(DoH)

DNS問い合わせをHTTPSで暗号化
→ 通信事業者やハッカーが検索内容を見られない
→ プライバシー保護 🔒

DNS over TLS(DoT)

DNS問い合わせをTLSで暗号化
→ DoHと似ているが異なるプロトコル

DNS設定の変更

Windows

1. コントロールパネル → ネットワークとインターネット
2. ネットワーク接続 → プロパティ
3. インターネットプロトコルバージョン4(TCP/IPv4)
4. "次のDNSサーバーアドレスを使う"を選択
5. 優先: 8.8.8.8
代替: 8.8.4.4

Mac

1. システム環境設定 → ネットワーク
2. 詳細 → DNSタブ
3. +ボタンでDNSサーバーを追加
8.8.8.8
8.8.4.4

ルーター

1. ルーター管理ページにアクセス(通常192.168.0.1)
2. ネットワーク設定
3. DNSサーバー設定
プライマリ: 8.8.8.8
セカンダリ: 8.8.4.4

DNSトラブルシューティング

症状:ウェブサイトが開かない

1. DNSキャッシュをクリア

Windows:

ipconfig /flushdns

Mac:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Linux:

sudo systemd-resolve --flush-caches

2. DNSサーバーを変更

Google DNS(8.8.8.8)に変更
→ ISP DNSの問題を回避

3. nslookupで確認

nslookup google.com

→ DNS検索が正常か確認

実際の使用例

例1:ウェブサイト接続

1. ブラウザに"yahoo.co.jp"を入力
2. DNS検索: yahoo.co.jp → 182.22.59.229
3. 182.22.59.229にHTTPリクエスト
4. Yahooページ読み込み! ✅

例2:サブドメイン

blog.example.com
mail.example.com
api.example.com

それぞれ異なるIPアドレスを持てる
→ 異なるサーバーでホスティング可能

例3:CDN

example.com → CDN サーバーIP

DNSがユーザーの場所に応じて
最も近いCDNサーバーのIPを返す
→ 高速読み込み ⚡

ドメイン購入とDNS設定

1. ドメイン購入

お名前.com、Namecheap、GoDaddyなどで購入
例: mywebsite.com(年間1,000-2,000円)

2. ネームサーバー設定

ホスティング会社のネームサーバーに変更
例: Cloudflare使用時
ns1.cloudflare.com
ns2.cloudflare.com

3. DNSレコード追加

Aレコード追加:
mywebsite.com → サーバーIPアドレス

CNAME追加:
www → mywebsite.com

よくある質問(FAQ)

Q1:DNS検索にどのくらい時間がかかりますか?

A:

  • キャッシュヒット: 1-10ms(非常に速い)
  • キャッシュミス: 50-200ms(普通)
  • 遅い場合: 500ms+(ISP DNSの問題)

Q2:なぜDNSを変更するのですか?

A: いくつかの理由があります:

  • 速度向上(Google DNSがISP DNSより速い)
  • 安定性(ISP DNS障害の回避)
  • セキュリティ(悪質サイトのブロック)
  • プライバシー(DoH、DoTの使用)

Q3:DNSキャッシュは自動で削除されますか?

A: はい! TTL時間が経過すると自動削除されます。

  • ブラウザ: 数分
  • OS: 数時間
  • ISP: 1-2日

Q4:ドメイン変更後すぐに反映されないのはなぜ?

A: DNS伝播時間のためです。

  • 世界中のDNSサーバーに広がる時間
  • 通常24-48時間
  • TTLを短く設定すれば速い

Q5:無料ドメインはありますか?

A: 限定的にあります:

  • .tk、.ml、.ga(Freenom)- 無料
  • GitHub Pages: username.github.io
  • Vercel: project.vercel.app

DNSパフォーマンス最適化

1. DNS Prefetching

<link rel="dns-prefetch" href="//cdn.example.com">
<link rel="dns-prefetch" href="//api.example.com">

→ ページ読み込み前にDNSを事前検索

2. 高速DNSの使用

Google DNS(8.8.8.8)
Cloudflare(1.1.1.1)
→ ISP DNSより速い

3. TTL最適化

頻繁に変わるレコード: TTL短く(300秒)
固定レコード: TTL長く(86400秒)

次のステップ 🚀

DNSを理解したら:

  1. URL構造を知る - ドメインはURLの一部
  2. HTTPリクエスト/レスポンスを理解する - DNS後のHTTP通信
  3. HTTPSとSSL/TLSとは? - セキュア通信
  4. IP Lookup - ドメインのIP確認

まとめ

DNSはインターネットの電話帳です! 📞

覚えておくポイント:

  • DNS = ドメイン → IPアドレス変換
  • google.com → 172.217.175.46
  • キャッシングで高速化
  • Public DNS(8.8.8.8)推奨
  • DNSSEC、DoHでセキュリティ強化

DNSのおかげで、数字の代わりに意味のある名前でウェブサイトを訪問できます! 🌐