未経験歓迎。PRUMは、未経験からの挑戦に本気で向き合い、成長を支える環境を整えています。未経験から本気で成長したい方は、ぜひPRUMへ。

インターネットを陰で動かす「三種の神器」。アドレス変換・自動設定・名前解決が織りなす連携の美学

URLを入力するだけでウェブサイトが表示される。Wi-Fiに繋げた瞬間からインターネットが使える。私たちが当たり前のように享受しているこの便利さは、決して魔法ではありません。

画面の裏側では、3つの基盤技術が絶え間なく連携して動いています。

  • NAT:アドレスを変換して多くの端末がインターネットを共有できるようにする
  • DHCP:端末の設定を全自動で配布する
  • DNS:ドメイン名をIPアドレスに変換して目的の相手を特定する

この記事では、この三種の神器と呼べる技術について、それぞれの仕組みと役割、そして3つがどのように連携しているのかを解説します。

目次

1. NAT:アドレス枯渇を解決する変換技術

インターネットの通信規格であるIPv4は、32ビットで構成されており、理論上で約43億個のアドレスしか存在しません。スマートフォンやIoT機器が急増した現代では、世界中の全端末に一意のアドレスを割り振ることはできません。

この問題を解決したのがNAT(Network Address Translation)です。組織や家庭の閉じた環境で使うプライベートIPアドレスを、インターネットで通信できるグローバルIPアドレスに変換することで、少ないグローバルアドレスで多くの端末が外部と通信できるようになります。

4つのアドレスの定義

NATを正確に理解するために、アドレスは4つの視点で定義されています。

アドレスの種類意味
内部ローカルアドレス自組織内で端末に割り当てられているプライベートIP
内部グローバルアドレス内部端末がインターネットへ出る際に変換された後のグローバルIP
外部ローカルアドレス内部から見た、通信相手(外部サーバーなど)のアドレス
外部グローバルアドレス外部の相手が実際に使っている実アドレス

一般的なインターネット接続では「内部ローカル → 内部グローバル」への変換が中心になります。

パケット変換の流れ

パソコンがウェブサーバーへアクセスするときの変換の仕組みを見てみましょう。

[パソコン] ---送信元: 192.168.1.5---> [ルータ(NAT)] ---送信元: 203.0.113.1---> [Webサーバー]

                               [ NATテーブル ]
                          [192.168.1.5 | 203.0.113.1]

[パソコン] <--宛先: 192.168.1.5--- [ルータ(NAT)] <---宛先: 203.0.113.1--- [Webサーバー]
  1. パソコンから出たパケットの送信元はプライベートIP「192.168.1.5」
  2. ルータがグローバルIP「203.0.113.1」に書き換えてインターネットへ送出し、NATテーブルに変換記録を保存
  3. サーバーからの返答が「203.0.113.1」宛てで戻ってくる
  4. ルータがNATテーブルを参照し、宛先を「192.168.1.5」に書き戻してパソコンへ届ける

NATの3つの実装方式

方式特徴向いている用途
スタティックNAT内部と外部のアドレスを1対1で固定して紐付ける特定のサーバーをインターネットへ公開したい場合
ダイナミックNAT用意したグローバルIPのプールから動的に割り当てる(1対1)複数のグローバルIPがあり、必要な分だけ動的に使いたい場合
NAPT(PAT)1つのグローバルIPに複数のプライベートIPを同時に紐付ける現代の家庭・企業ネットワークのほぼすべて

特に重要なのがNAPT(別名PAT)です。IPアドレスの書き換えに加え、トランスポート層のポート番号も同時に書き換えて管理することで、1つのグローバルIPに10台、100台の端末が同時に接続できます。家庭のWi-Fiルータに家族全員のスマホやPCを繋いでインターネットできるのはこの仕組みのおかげです。

2. DHCP:ネットワーク設定の全自動化

ネットワークに正しく接続するためには、すべての端末に次の4つの設定情報が必要です。

  • IPアドレス
  • サブネットマスク
  • デフォルトゲートウェイ(ルータの場所)
  • DNSサーバーのIPアドレス

数台であれば手動入力でも対応できますが、数百台規模になると入力ミスやIPアドレスの重複(競合)が起きて、ネットワーク全体が不安定になるリスクが高まります。これを全自動化するプロトコルがDHCP(Dynamic Host Configuration Protocol)です。

4ステップの通信プロセス

DHCPはUDPプロトコル(サーバー側67番ポート、クライアント側68番ポート)を使い、端末がネットワークに繋がった瞬間に次の4ステップで設定を配布します。

  1. 発見(DHCP DISCOVER):端末が「アドレスを貸してくれるDHCPサーバーはいますか?」とブロードキャストで呼びかける
  2. 提示(DHCP OFFER):DHCPサーバーが「このIPアドレスを貸し出せます」と候補を提案する
  3. 要求(DHCP REQUEST):端末が「そのアドレスを正式に借りたい」と要求を返す
  4. 承認(DHCP ACK):サーバーが承認し、サブネットマスクやDNSサーバーの情報もまとめて端末に引き渡す

この4ステップがバックグラウンドで完了することで、端末には何も操作しなくても全設定が自動的に書き込まれます。

リースとGratuitous ARPによる管理

DHCPのアドレス割り当てには有効期限(リース期間)があります。

  • 端末はリース期間が切れる前に更新の手続きを自動で行い、継続して使用できる
  • 電源を切って長期離席したり退店したりすると、アドレスは自動でサーバーへ返却され、次の人へ再利用される

また、アドレスを受け取った端末はそのアドレスが本当に誰も使っていないかを確認するため、Gratuitous ARPという自己宛ての信号を送信します。もし返答が来た場合はアドレスが重複していると判断して使用を中止し、ネットワークの衝突を未然に防ぎます。

大規模ネットワークを支えるリレーエージェント

DHCPで使われるブロードキャストはルータを越えることができません。そのため通常は、フロアやネットワークごとにDHCPサーバーを設置する必要があります。しかしこれでは管理が煩雑になります。

この問題を解決するのがDHCPリレーエージェントです。

  • ルータにこの機能を設定しておくと、端末からのブロードキャストをキャッチして別フロアのDHCPサーバーへユニキャスト(1対1通信)に変換して転送する
  • 企業全体のインフラでも、中央に1台のDHCPサーバーだけで全端末のアドレス配布を一括管理できる

3. DNS:名前とアドレスを結びつける案内システム

コンピュータはIPアドレス(192.0.2.1など数字の羅列)で通信相手を特定しますが、人間が無数のサイトのIPアドレスをすべて覚えることは不可能です。代わりに私たちは「google.com」や「yahoo.co.jp」といったドメイン名を使います。

このドメイン名をIPアドレスへ変換する(名前解決する)巨大な仕組みがDNS(Domain Name System)です。

階層化された分散管理の仕組み

世界中には数億を超えるドメインが存在します。これを1台のサーバーで管理しようとすると、アクセスが集中してすぐにパンクし、そのサーバーが停止した瞬間に全世界の通信が止まってしまいます。

そこでDNSは世界中のサーバーが階層的に役割を分担する分散管理システムを採用しています。

ドメイン名は右から順に階層が高くなります。

部分役割
.jpトップレベルドメイン(国・地域を表す)
.coセカンドレベルドメイン(企業・種別を表す)
example組織の個別の名前

この階層の頂点にはルートサーバーが置かれ、そこから下の各階層のサーバーへ問い合わせのバトンが引き継がれていく設計になっています。各サーバーは自分の担当範囲のデータだけを持てばよく、システム全体の負荷が分散されています。

名前解決のプロセス:再帰問い合わせと反復問い合わせ

ブラウザにURLを入力してからIPアドレスが判明するまでの流れは、2種類の問い合わせ形式を組み合わせて行われます。

再帰問い合わせとは、あなたのパソコンが最寄りのDNSサーバー(フルサービスリゾルバ)に「最後まで責任を持って調べてください」と丸投げする依頼です。

反復問い合わせとは、その最寄りのDNSサーバーが世界の各階層を自ら巡り、1ステップずつ「知っているなら教えて、知らなければ次に行くべき場所を教えて」とアプローチしていく旅のことです。

[パソコン]
    │ 1.「example.co.jpのIPは?」(再帰問い合わせ)
    ▼
[最寄りのDNSサーバー]
    │ 2. ルートサーバーへ「example.co.jpは?」(反復問い合わせ)
    │    → 「.jpサーバーへ行け」と回答
    │ 3. .jpサーバーへ「example.co.jpは?」
    │    → 「example.co.jpの管理サーバーへ行け」と回答
    │ 4. example.co.jpの管理サーバーへ問い合わせ
    │    → 「IPアドレスは192.0.2.1」と最終回答
    │ 5. 結果をキャッシュに保存
    ▼
[パソコン] ← 「IPアドレスは192.0.2.1」と回答

最寄りのDNSサーバーは手に入れたIPアドレスをキャッシュ(一時保存)に記録します。同じドメインへの次の問い合わせには、世界中を巡る旅をすることなく、キャッシュから即座に回答できるため、応答速度が大幅に向上します。

4. 三種の神器の連携:Wi-Fiをオンにした瞬間の裏側

NATとDHCPとDNSは独立して動いているわけではなく、互いに補完し合ってインターネット接続を成立させています。スマートフォンのWi-Fiをオンにした瞬間、裏側では次のような連携が走っています。

  1. DHCPのフェーズ:スマホがWi-Fiに接続した瞬間、DHCPがIPアドレスを自動で割り当て、同時に「これから使うDNSサーバーのIPアドレス」をスマホに書き込む
  2. DNSのフェーズ:ブラウザでURLを入力すると、DHCPから知らされたDNSサーバーへ問い合わせが行われ、ドメイン名がIPアドレスへと変換される
  3. NATのフェーズ:変換されたIPアドレスを目がけてパケットを送信すると、ルータでNAT(NAPT)によってプライベートIPがグローバルIPに書き換えられ、インターネットへ送り出される

どれか1つが止まっても、通信は次のように崩れます。

止まったもの起きる障害の症状
DHCP端末がIPアドレスを取得できず、ネットワークの入り口に立てない
DNS「接続はされているのにサイトが表示されない」という状態になる
NAT社内同士は通信できるが、外のインターネットには一切出られない

トラブルが起きたとき、この3つのどこが原因かを切り分けられる力は、エンジニアとして非常に重要なスキルです。

まとめ:生きているインフラとして立体的に理解する

NAT・DHCP・DNSをそれぞれ単体の知識として覚えるだけでなく、3つが連動して動く「生きているインフラ」として立体的に捉えることが大切です。

この記事のポイントをまとめると、次のようになります。

  • NATはプライベートIPをグローバルIPに変換し、少ないアドレスで多くの端末がインターネットを使えるようにする
  • NAPTはポート番号も使って1つのグローバルIPに複数の端末を同時に対応させる、現代の主流方式
  • DHCPは4ステップ(DISCOVER・OFFER・REQUEST・ACK)でIPアドレスや設定を自動配布し、手動設定の煩雑さとミスを排除する
  • DHCPリレーエージェントにより、大規模なネットワークでも中央1台のサーバーで管理できる
  • DNSは世界中のサーバーが階層的に役割分担する分散管理システムで、ドメイン名をIPアドレスへ変換する
  • 名前解決は再帰問い合わせ(パソコン→最寄りDNS)と反復問い合わせ(最寄りDNS→世界の各階層)の組み合わせで行われる
  • 3つのプロトコルはDHCP→DNS→NATの順番で連携して1回のインターネット通信を成立させている

これらの仕組みをロジカルに理解しておくことで、トラブルの原因を素早く特定できるエンジニアへの土台が固まります。

この記事を書いた人

岩本 稜平のアバター 岩本 稜平 株式会社PRUM 代表取締役

株式会社PRUM 代表取締役。未経験から活躍できるエンジニアの育成・採用に力を入れ、一人ひとりの可能性を広げる環境づくりに取り組む。現場で培った知見をもとに、エンジニアのキャリアやAI、技術に関する情報を発信している。

目次