第3部 ネットワーク
第10章 DNS・DHCP・NATの仕組み
私たちは example.com と名前で入力するのに、コンピュータはIPアドレスで通信します。私たちは自分でIPを設定した覚えがないのに、ネットにつなぐだけで通信できます。家中の機器が1本の回線を共有できています。これらを陰で支えるのがDNS・DHCP・NATの3つの縁の下の力持ちです。この章で、その正体を明らかにします。
🎯 この章で学ぶこと
- DNS — ドメイン名をIPアドレスに変換する仕組みと名前解決の流れ
- 主要なDNSレコード(A / AAAA / CNAME / MX / TXT)
nslookup/digで名前解決を自分で確認する- DHCP — IPアドレスが自動で配られる仕組み
- NAT/NAPT — プライベートIPで1本の回線を共有する仕組み
- URLを入れてページが出るまでの通しの流れ
10.1 DNS — 名前とIPアドレスをつなぐ電話帳
人間は example.com のようなドメイン名を覚えるのは得意ですが、93.184.216.34 のような数字の羅列はなかなか覚えられません。逆にコンピュータは、通信にIPアドレスを必要とします。この橋渡しをするのがDNS(Domain Name System)です。「名前を渡すと、対応するIPアドレスを教えてくれる」——いわばインターネットの電話帳です。名前からIPを調べるこの処理を名前解決といいます。
電話帳といっても、世界中のすべての名前を1冊にまとめるのは不可能です。そこでDNSは、役割を分担した階層構造で成り立っています。www.example.com を解決する流れを見てみましょう。
あなたのPC
│ ①「www.example.com のIPは?」
▼
DNSキャッシュサーバー(プロバイダや社内のDNS)
│ ② 知らなければ、上位へ順に問い合わせる
├─▶ ルートサーバー ────「.com は こちらの TLDサーバーへ」
├─▶ TLDサーバー(.com)─「example.com は こちらの権威サーバーへ」
└─▶ 権威サーバー ───────「www.example.com は 93.184.216.34 です」
│ ③ 答えを受け取り、あなたのPCへ返す
▼
あなたのPC:「93.184.216.34 へ接続しよう」
ルート → TLD(.com や .jp など)→ 権威サーバー、と順にたどることで、世界中のどんな名前でも解決できます。ただし毎回この長い旅をするのは無駄なので、一度調べた結果はしばらくキャッシュ(一時保存)されます。だから2回目以降のアクセスは高速です。キャッシュの有効期限はTTLという値で決まり、期限が切れるまではキャッシュされた答えが使われます。
10.2 DNSレコードの種類
DNSサーバーは、名前とIPの対応だけでなく、さまざまな情報をレコードという単位で管理しています。実務でよく登場する代表的なレコードを押さえましょう。
| レコード | 意味 | 役割・例 |
|---|---|---|
| A | 名前 → IPv4アドレス | example.com → 93.184.216.34 |
| AAAA | 名前 → IPv6アドレス | example.com → 2606:2800:...(IPv6版のA) |
| CNAME | 別名 → 正式名 | www.example.com は example.com の別名、という転送 |
| MX | メールの宛先サーバー | このドメイン宛メールはどのサーバーが受け取るか(第11章) |
| TXT | 自由なテキスト情報 | ドメインの所有証明、SPF/DKIM(なりすまし対策、第11章) |
たとえば「Webサイトを新しいサーバーに引っ越した」ときはAレコードのIPを書き換えます。「メールが届かない」トラブルではMXレコードを確認します。レコードの種類を知っていると、ドメイン周りのトラブルの見当がつけやすくなります。
10.3 名前解決を自分で確認する
名前解決は、自分のPCから実際に試せます。手軽なのが nslookup で、Windows・mac・Linuxのいずれでも使えます。
$ nslookup example.com
Server: 192.168.1.1 ← 問い合わせに使ったDNSサーバー
Address: 192.168.1.1#53 ← DNSはポート53(第8章)
Non-authoritative answer: ← キャッシュからの回答という意味
Name: example.com
Address: 93.184.216.34 ← 解決されたIPアドレス(Aレコード)
より詳しく調べたいときは dig(mac / Linux。Windowsは追加インストールで利用可)が便利です。レコードの種類を指定して問い合わせられます。
$ dig example.com A +short
93.184.216.34
$ dig example.com MX +short ← メールサーバー(MXレコード)を調べる
10 mail.example.com.
+short は結果を短く表示するオプションです。「Webは見えるのにメールが届かない」ときにMXレコードを確認する、「サイトが古いサーバーを指していないか」をAレコードで確認する——といった使い方が実務で役立ちます。
第9章で「ping 8.8.8.8 は返るのに ping example.com は失敗する=DNSが怪しい」と学びました。その次の一手が nslookup example.com です。ここで名前が引けなければDNSの問題が確定しますし、引けるのにアクセスできないなら別の原因(サーバー側やファイアウォールなど)を疑う、と切り分けが進みます。ping・nslookup・traceroute・curl(第11章)は、ネットワーク調査の4点セットとして手に馴染ませておきましょう。
10.4 DHCP — IPアドレスを自動で配る仕組み
あなたはノートPCを会社でも自宅でもカフェでも使いますが、そのたびにIPアドレスやゲートウェイを手で設定した覚えはないはずです。それでも問題なくつながるのは、DHCP(Dynamic Host Configuration Protocol)が、必要な設定を自動で配ってくれているからです。
ネットワークにつなぐと、PCとDHCPサーバー(多くは手元のルーターが兼ねる)の間で、次の4ステップのやり取りが行われます。頭文字をとってDORAと呼ばれます。
| ステップ | やり取り | 意味 |
|---|---|---|
| D — Discover | PC →(全体へ) | 「DHCPサーバーはいませんか?」 |
| O — Offer | サーバー → PC | 「この設定はどうですか(IP・マスク・GW・DNS)」 |
| R — Request | PC → サーバー | 「その設定をください」 |
| A — Acknowledge | サーバー → PC | 「どうぞ。期限付きで貸します」 |
この一連のやり取りで、PCはIPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSサーバー(第9章で確認したあの3〜4点)を一括で受け取ります。だから私たちは何も設定せずにつなげるのです。
配られたIPアドレスは「あげる」のではなく期限付きで貸す(リース)形です。リース期間が切れると更新され、使わなくなったIPは回収されて別の機器に再利用されます。限られたアドレスを効率よく回すための仕組みです。
PCやスマホはDHCPで自動取得して構いませんが、サーバーやプリンターは固定IPにすることが多いです。理由は、DHCPだと再起動のたびにIPが変わる可能性があり、「いつも同じ住所でアクセスしたい」機器には不都合だからです。DNSのAレコード(10.2)で名前とIPを結びつける相手も、IPが安定している必要があります。「人が使う端末はDHCP、常に居場所を知られていたいサーバーは固定」と覚えておくと、設計の勘所がつかめます。
10.5 NAT/NAPT — 1本の回線をみんなで共有する
第9章で、家庭内の機器はプライベートIP(192.168.x.x など)を使い、外へ出るときはグローバルIPに変換されると学びました。この変換を行うのがNAT(Network Address Translation)で、家庭や社内のルーターがまさにこれをやっています。
ただ、家には複数の機器があるのに、プロバイダから借りているグローバルIPはたいてい1つだけです。1つのグローバルIPを、多数の機器でどう共有するのでしょうか。ここで登場するのがポート番号(第8章)も一緒に変換するNAPT(IPマスカレード)です。「どの機器の通信か」をポート番号で区別することで、1つのグローバルIPを大勢で共有できます。
【家の中】プライベートIP 【NATルーター】 【外】グローバルIP
PC-A 192.168.1.10:50001 ──┐
├─▶ 203.0.113.5 に変換して送信
PC-B 192.168.1.20:50002 ──┘ (ポート番号で どちらの機器かを記録)
戻ってきた通信は、記録した対応表を見て
正しい機器(A か B か)へ振り分ける
ルーターは「内側のどの機器のどのポートが、外向きのどのポートに対応するか」を対応表として覚えておき、返ってきたパケットを正しい機器へ振り分けます。これにより、たった1つのグローバルIPで家中の機器がインターネットを使えるのです。IPv4アドレスの枯渇(第9章)を大きく先延ばしにしたのも、このNATの功績です。
10.6 通しで見る — URLを入れてページが出るまで
ここまで学んだDNS・ルーティング・TCP・HTTPが、実際にどう連携するのか。ブラウザに https://www.example.com と入力してページが表示されるまでの流れを、通しで追ってみましょう。第8章〜本章の総復習であり、第11章(HTTP)への橋渡しでもあります。
| 段階 | 起きていること | 関わる仕組み |
|---|---|---|
| ①名前解決 | www.example.com のIPアドレスをDNSに問い合わせる | DNS(本章) |
| ②IPが分かる | 93.184.216.34 という答えが返る | DNS・Aレコード |
| ③経路を決める | 宛先が外部なのでデフォルトゲートウェイへ。NATで変換され外へ | ルーティング・NAT(第9章・本章) |
| ④接続を確立 | 宛先の443番ポートへ3ウェイハンドシェイクでTCP接続 | TCP・ポート番号(第8章) |
| ⑤暗号化 | TLSで安全な通信路を用意する(HTTPS) | TLS(第11章) |
| ⑥要求と応答 | 「このページをください(GET)」→ HTMLが返る | HTTP(第11章) |
| ⑦表示 | 受け取ったHTMLをブラウザが解釈して画面に描く | アプリケーション層 |
普段は一瞬で終わるこの流れの裏で、名前解決からルーティング、接続確立、暗号化、そしてデータのやり取りまで、多くの層が連携しています。そして重要なのは、この流れのどこかが壊れると「ネットが繋がらない」に見えるという点です。①が壊れればDNSの問題、③④が壊れれば経路や接続の問題——切り分けの視点(第9章)を持っていれば、症状から原因の段階を推測できます。
DNSは便利さの土台であると同時に、攻撃の標的にもなります。代表例がDNSキャッシュポイズニングで、DNSキャッシュに偽の対応(正しい名前 → 攻撃者のIP)を紛れ込ませ、利用者を偽サイトへ誘導する攻撃です。正しいURLを入力したのに偽サイトへ飛ばされるため、利用者はだまされていることに気づきにくいのが厄介です。フィッシングでも、本物そっくりの紛らわしいドメイン名を使って利用者を釣ります。こうした攻撃への備えとして、通信元を検証するDNSSECや、名前解決自体を暗号化するDNS over HTTPS(DoH)といった技術があります(🛡️ セキュリティ中級・上級コース第6章で深掘りします)。運用面でも、DNSは最重要インフラです。DNSサーバーがダウンすると、経路もサーバーも生きているのにあらゆる名前が引けなくなり、事実上すべてが「繋がらない」状態になります。「ネットが全面的におかしい」ときにDNSをまず疑うのは、この影響範囲の大きさゆえです。名前解決を守り、監視することは、運用の最優先事項の一つです。
まとめ
- DNSは名前とIPをつなぐ電話帳。ルート → TLD → 権威サーバーの階層をたどり、結果はキャッシュされる(TTL)
- 主なレコードはA(IPv4)・AAAA(IPv6)・CNAME(別名)・MX(メール)・TXT(所有証明やなりすまし対策)
nslookup/digで名前解決を自分で確認できる。DNS切り分けの必須ツール- DHCPはIP・マスク・ゲートウェイ・DNSを自動で貸し出す(DORAの流れ、期限付きリース)
- NAT/NAPTはプライベートIPをグローバルIPに変換し、ポート番号で区別して1本の回線を共有する
- URL入力からページ表示まで、DNS → ルーティング → TCP → TLS → HTTPが連携している
練習問題
ノートPCを新しい会議室に持ち込んでLANケーブルを挿しただけで、何も設定せずにインターネットが使えるようになりました。この裏で働いているのはどの仕組みで、PCは何を受け取っているでしょうか。
解答を見る
働いているのはDHCPです。ケーブルを挿した瞬間、PCとDHCPサーバー(ルーター)の間でDORA(Discover / Offer / Request / Acknowledge)のやり取りが行われ、PCはIPアドレス・サブネットマスク・デフォルトゲートウェイ・DNSサーバーの設定を自動で受け取ります。これらは期限付きで貸し出される(リース)ため、私たちは手動設定なしにつなげるのです。
「ブラウザで社内Webサイトを開けない」と相談され、nslookup intra.example.co.jp を実行したところ「サーバーが見つかりません(名前を解決できません)」と返りました。次に確認・対処すべきことを挙げてください。
解答を見る
名前解決に失敗しているので、原因はDNSにあります。確認すべき点は、(1) そのPCが正しいDNSサーバーを参照しているか(ipconfig /all や ip addr で設定を確認)、(2) DNSサーバー自体が動いているか、(3) そのドメインのAレコードが正しく登録されているか、などです。ping 8.8.8.8 などIP宛ての通信が通るなら経路は正常で、問題はDNSに絞れます。他のPCでも同じ名前が引けないなら、DNSサーバー側やレコードの問題の可能性が高く、そのPCだけなら参照先DNS設定を疑います。
家に置いた1台のプロバイダ回線(グローバルIPは1つ)に、PC・スマホ・テレビなど10台以上をつないで、全部が同時にインターネットを使えています。1つのグローバルIPで多数の機器が通信できるのは、どんな仕組みのおかげでしょうか。
解答を見る
NAPT(NATの一種、IPマスカレード)のおかげです。各機器は家庭内でプライベートIPを持ち、外へ出るときルーターがそれを1つのグローバルIPに変換します。このときポート番号も一緒に変換して対応表に記録することで、「どの機器の通信か」を区別します。戻ってきたパケットは対応表を見て正しい機器へ振り分けられます。こうして1つのグローバルIPを多数の機器で共有でき、これがIPv4アドレスの枯渇を先延ばしにした大きな要因でもあります。