こんにちは!ネットワークセキュリティの世界へようこそ。
インフラやネットワークの勉強を始めると、最初にぶつかるのが「専門用語の壁」ですよね。「OSI参照モデル?」「TCP/IP?」「DHCP?なんだか英語ばかりで眠くなりそう…」と感じていませんか?
大丈夫です、一歩ずつ理解していきましょう!
私たちが普段、意識せずにスマホやPCでWi-Fiに繋ぎ、YouTubeを見たりネットショッピングができたりするのは、裏側で「見えない郵便配達員たち」が猛烈なスピードで連携プレーを行っているからなんです。今回はその第一歩として、PCがネットワークに参加した瞬間に必ず行われる「DHCPのDORA(ドーラ)プロセス」と、その中でやり取りされる「オプションフィールド」の秘密を、現実世界の仕組みに例えて優しく紐解いていきます。
—
1. カフェの新規オープンに例える「DHCP」の基本
想像してみてください。あなたが新しくおしゃれなカフェをオープンしました。お客さん(=ネットワークに参加するPCやスマホ)がやって来ましたが、まだ自分の「座席番号(=IPアドレス)」が決まっていません。
もしお客さんが勝手に座席を決めて座ったらどうなるでしょうか? 他の人と座席が被って大喧嘩(IPアドレスの重複エラー)になってしまいますよね。
そこで、カフェには「案内係(=DHCPサーバー)」が常駐しています。お客さんが来店したときに、空いている座席番号をスムーズに割り当ててあげる係です。この「空いているIPアドレスを自動で貸し出す仕組み」こそが DHCP(Dynamic Host Configuration Protocol) なんです。
—
2. 4ステップの物語!DORAプロセスの裏側
PCがネットワークに繋がった瞬間、この案内係とPCの間で、まるで合言葉のような4つのステップの会話が繰り広げられます。それが頭文字を取った 「DORA(ドーラ)」 です。
パケットがネットワーク上をどのように駆け巡っているのか、そのドラマを覗いてみましょう。
[PC (クライアント)] [ネットワーク全体] [DHCPサーバー]
| | |
|--- 1. DHCP Discover (探す!) ------->| |
| |------------(ブロードキャスト)
| | |
|<-- 2. DHCP Offer (提案するよ) -------|<---------------------------|
| | |
|--- 3. DHCP Request (これに決めた!) ->| |
| |------------(ブロードキャスト)
| | |
|<-- 4. DHCP Acknowledge (OKだよ!) ---|<---------------------------|
| | |
ステップ1:Discover(発見:おーい、誰かいるかー?)
- PCの行動: 「私、新しいPCです! 誰かIPアドレスをください!」と、ネットワーク全体の向こうに向かって大声で叫びます。
- パケットの現実: 自分のIPアドレスがまだ分からないため、送信元IPアドレスは
0.0.0.0、送信先はネットワーク全体を意味するブロードキャストアドレス255.255.255.255を使ってパケットをばら撒きます。
ステップ2:Offer(提案:空いてる席、ここだよ!)
- DHCPサーバーの行動: 叫び声を聞いたサーバーが、「お、新しい子だな。じゃあ『
192.168.1.100』というIPアドレスはどうだい?」と提案を返します。 - パケットの現実: この時点ではまだPCにIPアドレスが正式に定まっていないため、サーバーも宛先をブロードキャストにして返事をします。
ステップ3:Request(要求:その席、借ります!)
- PCの行動: 「いくつか提案をもらったけど、私はこのサーバーから提示された『
192.168.1.100』を借ります!」と、ふたたびネットワーク全体に宣言します。 - パケットの現実: 他のDHCPサーバーにも「このアドレスは私がキープしたよ」と知らせるために、あえてブロードキャストで伝えます。
ステップ4:Acknowledge(確認・承認:毎度あり!契約成立!)
- DHCPサーバーの行動: 「了解! そのIPアドレスの貸し出しを正式に登録したよ。しっかり使うんだよ」と最終承認をパケットで返します。
- パケットの現実: これで無事にIPアドレスの貸し借り契約が完了し、PCはこの瞬間から晴れてネットワークの一員として通信できるようになります。
—
3. パケットの荷物につけられた「おまけ情報」:オプションフィールド
さて、無事にIPアドレス(座席番号)をもらったPCですが、実はそれだけではインターネットの海へ漕ぎ出すことはできません。
考えてみてください。座席番号(IPアドレス)をもらっても、「カフェの出口(=デフォルトゲートウェイ)」がどこにあるか、「お店の案内係の電話番号(=DNSサーバーのIPアドレス)」を知らなければ、外の世界と連絡が取れませんよね。
ここで登場するのが、DHCPパケットの後ろにくっついている「オプションフィールド(Option Field)」です。
郵便物に例えるなら、宛先や差出人の基本情報だけでなく、「配達時の注意事項や、一緒に同封されているチラシの束」のようなものです。このオプションのおかげで、IPアドレスだけでなく、ネットワークを渡り歩くために必要な重要インフラ情報を一網打尽で受け取ることができます。
代表的なDHCPオプションの例
ネットワークの現場でよく目にする代表的なオプション番号をいくつか覗いてみましょう。
- Option 3:ルーター(デフォルトゲートウェイ)のIPアドレス
- 「外のネットワークに行くときは、このルーターの扉を叩いてね」という案内です。
- Option 6:DNSサーバーのIPアドレス
- 「
google.comみたいな名前を、数字のIPアドレスに変換してくれるお助けマンの連絡先はこちらです」という情報です。 - Option 51:IPアドレスの有効期限(リース期間)
- 「このIPアドレスは、とりあえず3日間だけ貸出ね。期限が切れる前に更新手続きをしてね」というお約束の期間です。
—
4. 現場で役立つ!Linux(ISC DHCP)の設定ファイル例
インフラエンジニアとして現場に出ると、このDHCPサーバー(今回はLinuxの代表的な isc-dhcp-server など)をご自身で構築・設定する機会がやってきます。
先ほど解説した「IPアドレスの範囲」や「オプションフィールド」が、実際の現場でどのように設定されているのか、設定ファイルのサンプルを覗いてみましょう。
# /etc/dhcp/dhcpd.conf
# DHCPサーバーの全体設定ファイル例です
# このサーバーがネットワーク内の「お墨付き」の主導権を持つ設定
authoritative;
# ネットワーク全体の基本ルールを定義します (192.168.1.0/24 のネットワーク)
subnet 192.168.1.0 netmask 255.255.255.0 {
# 【IPアドレスの貸し出しプール範囲】
# この中から順番にPCへ座席番号が割り振られます
range 192.168.1.50 192.168.1.200;
# 【オプション3:デフォルトゲートウェイの設定】
# 外の世界へ繋がるルーターのIPアドレスを教えます
option routers 192.168.1.1;
# 【オプション6:DNSサーバーの設定】
# 名前解決をお願いするDNSサーバーのIPアドレスを指定します
option domain-name-servers 8.8.8.8, 1.1.1.1;
# 【オプション51:リース期間(秒単位)の設定】
# ここでは約1日(86400秒)で一度貸し出しがリセットされる設定にしています
default-lease-time 86400;
max-lease-time 172800;
}
エンジニアがこのファイルを記述してサーバーを起動することで、先ほどのDORAプロセスの裏側で、PCたちへこれらの設定が自動的に配られる仕組みが完成します。
—
5. まとめ
いかがでしたでしょうか?
一見難しそうに見えるDHCPのDORAプロセスも、「カフェの席を案内するスタッフとお客さんの会話」に置き換えてみると、パケットがどんな意図で、どんな順番でネットワークを駆け巡っているのかがイメージしやすくなったのではないでしょうか。
- Discover で探し、
- Offer で提案を受け、
- Request で選び、
- Acknowledge で完了する。
そしてそのやり取りの裏では、オプションフィールドというお役立ちメモが、ゲートウェイやDNSの情報をこっそり運んできてくれている――。
この仕組みを知っているだけで、会社や自宅で「あれ、ネットに繋がらないぞ?」というネットワークトラブルに直面したとき、「あ、今DORAプロセスの途中で止まっているな」「IPアドレスは取れたけどDNSのオプションがおかしいのかも?」といった、プロさながらの鋭い仮説が立てられるようになります。
焦らず、一歩ずつネットワークの奥深い世界を楽しんでいきましょう! それではまた次の記事でお会いしましょう。
コメント