DHCP
DHCP 設定

講義

DHCP の目的

前回の IP アドレス設定実習のように, 一般にホストをインターネットに接続するためには最低限,

の情報が必要である.

ネットワークに加入するホストが頻繁に入れ替わるような 環境ではこれらの情報の設定は煩雑な作業となる. 特にノート PC など移動することが前提のホストであれば 接続するネットワークが変わるたびに接続情報を設定し直さなければならない.

サーバがインターネット接続に必要な情報を配信する仕組みとして DHCP (Dinamic Host Configuration Protocol) が広く利用されている. 接続に必要な情報を管理し各ホストへ連絡するホストを DHCP サーバと呼び, サーバと通信してその情報を利用するホストを DHCP クライアントと呼ぶ.

DHCP の大きな目的として

が挙げられる.

設定作業の簡略化

DHCP の長所はクライアントがサーバがどのホストであるかということを設定する 必要がないことである.クライアントは「DHCP を利用する」と設定するだけでよい. Windows や Linux などの OS は一般的に標準状態で DHCP クライアントの機能をもつ.

DHCP サーバは基本的にはネットワークごとに一つ動作させる. 同じネットワークに属するホストとは相手がわからなくても ブロードキャストを利用して通信することができることを利用している. ブロードキャストとはホストアドレス部全てが 1 である IP アドレスで, この宛先に情報を送信すると同じネットワークに属するホスト全てに 到達する.

サーバはブロードキャストを用いたクライアントからの要求に応じて 接続を確立し,使用可能な IP アドレスなどの接続に必要な情報 (サーバの設定により可変)をクライアントに送信する.クライアントはその 情報に従ってネットワーク設定を行う.

IPアドレスの有効利用

DHCP によって使用できる IP アドレスを増やせる訳ではないことに注意する. 使用できる IP アドレスは 上位組織に許可されている範囲のものであることには変わりないが, 許可された範囲内で現在使用されていない IP アドレスを要求のあったホストに 再利用することで効率的な運用を行うことができる.

利用されなくなったホストの IP アドレスを新しく利用を希望しているホストに 再利用することで限られた IP アドレスを有効利用するのだが,利用をやめる ホストから事前に必ず連絡があると期待することはできない.通信の異常により 連絡できずに接続が切れる場合もあるし,最初から IP アドレスの利用権を放棄する手続きを実装していないクライアントもある.

そのため,DHCP では「一定時間だけ利用権を与える」ことを基本とし, 期間内に延長要求があった場合は再び一定時間の延長を許可し, 要求がなければ利用権が自動消滅するように実装されている.

クライアントはサーバから IP アドレスの利用許可をうけるとき, 貸し出し期間の情報も受け取る. 貸し出し期間の半分が経過すると自動的に延長要求を サーバに出すように実装されている.

サーバ設定ファイル

サーバには貸し出す IP アドレスの範囲,デフォルトの貸し出し時間 等の情報が設定されている.設定は /etc/dhcp3/dhcpd.conf というテキストファイルに記述される.

ログと DHCP メッセージタイプ

DHCP サーバは実行中,動作の記録をログファイルに書き出す. ログファイルにはDHCPメッージタイプと呼ばれる, パケットの役割を示すキーワードが書かれている. DHCP サーバが動作している状態で クライアントを起動すると,以下の手順でIPアドレスが 決定される.

  1. クライアントがブロードキャストで DHCPDISCOVER を発信
  2. サーバがクライアントに使用可能なIPアドレスを DHCPOFFER で通知
  3. クライアントがブロードキャストで使用したい IP アドレスを DHCPREQUEST で通知
  4. サーバがクライアントに DHCPACK を返す

貸し出し期間の延長要求では以下のやりとりが行われる.

  1. クライアントがサーバに延長して使用したい IP アドレスを DHCPREQUEST で通知
  2. サーバがクライアントに DHCPACK を返す

実習

各 pc の名前を,班番号の 2 桁表記を A とすると 各班の教卓に向かって左側から pcA1, pcA2,...,pcA4 とする.

実習1. DHCPサーバのインストール

IP アドレスは以下の規則で決めた値を使用する.

内蔵有線ネットワークデバイス eth1 (eth0 などの場合もある.MAC アドレスがD8:D3:85 で始まる デバイスが内蔵有線デバイスなので,番号が異なる場合は以下適宜 読み替えること)を設定するには, システム->設定->ネットワーク接続から,有線タブを選択し, eth1 を選択する.

キーボード左上のシールの番号の下2桁の数字がxx とすると,その計算機の IP アドレスを 172.17.2.xx とする.

上位16ビットがネットワークアドレスであるため, サブネットマスクは 255.255.0.0 とする.

デフォルトゲートウェイは 172.17.254.254, 優先DNSサーバのアドレスは 172.17.254.254 である.

ネットワーク情報が正しく設定されているかどうかの確認はターミナルから 行う.ifconfig でIPアドレスとサブネットマスクを確認できる. デフォルトゲートウェイは route -n コマンド(受信先サイト 0.0.0.0 に対するゲートゥェイ)で確認できる. 優先 DNS サーバは cat /etc/resolv.conf で確認できる.

まず DHCP サーバを各班の pcA1 にインストールする.

Ubuntu Linux など,多くの Linux でソフトウェアのインストール, バージョンアップに apt と呼ばれるシステムを利用することができる. apt を使うことでソフトウェア間の依存関係,新しさをチェックし, 必要なファイルをダウンロードし, インストールするところまで自動的に行うことができる.

今回の実験では各班の pcA1 を DHCP サーバとし,pcA2, pcA3, pcA4 を DHCP クライアントとする. 実験を進めるとこれらのホストは外部から遮断される設定になる.

pcA1 に以下の方法で dhcp サーバをインストールする.

システム>システム管理>Synapticパッケージマネージャ, を起動する,Synaptic はパッケージの更新,インストールを行う GUI インターフェースである.最初に一回だけ「再読み込み」ボタンを押す.

「クイック検索」で dhcp を検索する.

dhcp3-server を選択する.右クリックでインストール指定を行う. パッケージ名の左に表示されるアイコンはそのパッケージの状態を示す. 意味はヘルプ>アイコン凡例で確認できる. インストール指定が終われば「適用」ボタンを押す. 自動的に必要なパッケージがインストールされる.

実習 2. ネットワーク構成の変更

pcA1 への DHCP サーバのインストールが終了すると ネットワーク構成を変更するために pcA1, pcA2, pcA3, pcA4 に接続されている ether ケーブルを外す.

ここからは班ごとに 4 台だけの PC からなる各班専用の ネットワーク 192.168.A.0/24 を設定する. pcA1, pcA2, pcA3, pcA4 それぞれの 内蔵 LAN ポートに 192.168.A.1/24, 192.168.A.2/24, 192.168.A.3/24, 192.168.A.4/24 を設定せよ.

デフォルトゲートウェイの設定は pcA1 には 172.17.254.254 を, pcA2, pcA3, pcA4 にはpcA1 の内蔵有線デバイスに設定した IP アドレスを設定せよ. ネームサーバーは指定する必要はない.

1 班に 1 台のハブを使用するので電源ケーブルを接続し,ハブと pcA1, pcA2, pcA3, pcA4 を 第5回実験で作成した ether ケーブルで接続する. ハブにはこの 4 台の PC のみ接続された状態にする.

設定を終了した後,画面上の右のほうにネットワークのアイコンをクリックし, Auto eth1 を有効にする.

班内の計算機で互いに IP アドレスを指定して ping を行い,接続されていることを 確認せよ.

実習 3. DHCP の起動,確認

pcA1 を DHCP サーバとし,IP アドレスは上で設定したもの をそのまま使う. pcA2, pcA3, pcA4 を DHCP クライアントとして IP アドレスを DHCP を使って設定する. DHCP サーバで以下の設定を行う.

設定は /etc/dhcp3/dhcpd.conf を編集することで行う. cd /etc/dhcp3 を実行して設定ファイルのある場所に 移動せよ.

このディレクトリもファイルも root 権限でなければ編集できないので ファイル操作には sudo コマンドが必要である. まず,sudo cp dhcpd.conf dhcpd.conf.20130527 等で編集前のファイルを別名で保存する. 設定ファイルを編集する場合はこのように編集前にバックアップを 保存する習慣をつけるべきである.こうしておくことで, 変更で問題が起こってもすぐに変更前の状態に戻ることができる.

次に sudo gedit /etc/dhcp3/dhcpd.conf コマンドで編集を開始する.

A班のネットワークで 使用できる IP アドレスは 192.168.A.1/24 から 192.168.A.254/24 である. DHCP で配布する範囲は設定ファイルで指定できる. 192.168.A.1/24 はDHCPサーバの 固定IPアドレスとして使用する.今回の実験では 192.168.A.101/24 から 192.168.A.200/24 をDHCP で配布するように設定する. この場合, dhcpd.conf に以下の行を追加すればよい.

dhcpd.conf への追加

subnet 192.168.A.0 netmask 255.255.255.0 {
  range 192.168.A.101 192.168.A.200;
}

subnet の行はこのサーバが所属するネットワークについての情報, range の行が配布する IP アドレスの範囲である.上記設定の代わりに 以下のようにデフォルトゲートウェイ,ネームサーバの情報も 配布するようにあわせて指定することが一般的であるが, 今回の実験では外部のネットワークへ接続しないので必要ない.

dhcpd.conf への追加(オプション情報)

subnet 192.168.A.0 netmask 255.255.255.0 {
  range 192.168.A.101 192.168.A.200;
  option routers 192.168.A.1;
  option domain-name-servers 192.168.89.254;
}

dhcpd.conf ファイルの編集が終わればターミナルで以下のコマンドを 入力し DHCP サーバを再起動し,変更を反映させる.

dhcpd の再起動

nauser@os-160:~$ sudo service dhcp3-server restart

DHCP の状況を観測するため pcA1 のターミナルでログの監視を行う. ログファイルは /var/log/messages である.ログファイルへは情報が ファイルの最後に逐次追加される.常に監視するには以下のオプションを 付けた tail コマンドを実行する.tail は大きなファイルの最後だけを表示する コマンドで -f オプションはリアルタイムでファイルの変化を表示させる.

ログの監視

nauser@os-160:~$ tail -f /var/log/messages

終了させるには Ctrl-c を押す.

/var/log/messages は大きなファイルなので必要な部分を抜き出すのに grep コマンドが便利である.

ログを grep

nauser@os-160:~$ grep dhcpd /var/log/messages

上記コマンドにより,ログファイルのうち dhcpd と書かれている行だけを 抜き出して表示することができる.

次に pcA2, pcA3, pcA4 を DHCP を利用する設定にして IP アドレスを取得する. システム>設定>ネットワーク接続を起動し, Auto eth1 を選択して「編集」を押す.IPv4 設定タブをクリックし, 自動(DHCP)を選択し,適用ボタンを押す.

変更が反映されない場合はメニューバー右のネットワークアイコンをクリックし, 一度切断したのち Auto eth1 を選択し,接続されることを確認する. クライアントがターミナルから ifconfig コマンドを実行することで 実際に取得した IP アドレスを確認する. 接続の確認は班内のホスト間の ping で行う.

pcA1 のログのうち DHCP のやりとりに関係する部分を確認せよ.

実習 4. 貸し出し延長

IP アドレス貸し出し延長のやりとりを確認する.

実習 3 の dhcpd.conf への追加のセクション内,range 行のすぐ後に 以下の行を挿入せよ.

貸し出し時間の設定

  default-lease-time 60;
  max-lease-time 60;

default-lease-time はクライアントから貸し出し時間の要求が無かった 場合のデフォルト貸し出し時間で,max-lease-time は貸し出し時間の要求が あった場合の許可する貸し出し時間の最大値である.どちらも単位は秒である. dhcpd.conf の変更を行なったらサーバで sudo service dhcp3-server restart を行い dhcpd を再起動させよ.

この設定によりクライアントへの貸し出し時間は 1 分になるのでその約半分の 30 秒程度を経過するとクライアントから貸し出し期間延長の要求が出されるはずである. サーバの設定が終ったらクライアントでIP アドレスの再取得を行なう. IP アドレスを再取得する簡単な方法はターミナルで sudo dhclient -r コマンド, sudo dhclient コマンドを続けて実行することである.dhclient -r は DHCP により得た IP アドレスを解放するコマンド, dhclient はアドレスを取得するコマンドである.

IP アドレスの再取得からサーバ pcA1 のログを観察し, 貸し出し延長の処理を確認せよ.

実習 5. IP アドレスの固定

DHCP は空いている IP アドレスを要求のあったホストに貸し出す機能であるが, 同じ機器に対して予約しておいた決まった IP アドレスを貸し出すこともできる. pcA2 の MAC アドレスがd8:d3:85:0a:4c:07 であれば 以下の記述を dhcpd.conf に追加するとその pc に強制的に 192.168.A.12 を割り当てることができる

IP アドレスの予約

host pcA2 {
  hardware ethernet d8:d3:85:0a:4c:07;
  fixed-address 192.168.A.12;
}

自分の班の pcA2, pcA3, pcA4 について,それぞれ 192.168.A.12, 192.168.A.13, 192.168.A.14 の割り当てが予約されるように サーバの dhcpd.conf を変更せよ. サーバで sudo service dhcp3-server restart を行ってから pcA2, pcA3, pcA4 で sudo dhclient -r と sudo dhclient コマンドをこの順で実行することで IP アドレスを再取得し,IP アドレスが変化しているかどうかを確認せよ. 取得した IP アドレスを確認するにはターミナルから ifconfig コマンドを 実行する.

サーバ pcA1 のログのうちこの DHCP のやりとりに関係する部分を確認せよ.

設定終了後, pcA2, pcA3, pcA4 の間で pingを行い, 通信できることを確認せよ.

すべての作業が終了したら pcA1 の dhcp3-server を消去する. 消去は, システム>システム管理>Synapticパッケージマネージャ, で Synaptic を起動して行う.dhcp3-server を検索し,パッケージ名の dhcp3-server の上で右クリックし,「削除指定」を選択し 「適用」ボタンを押せばよい.

課題

第 6 回課題「DHCP」 を提出せよ.


Updated in May 17, 2010, index.html, Yamamoto Hiroshi