DHCP
DHCP の設定

講義

DHCP の目的

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

の情報が必要である.

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

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

DHCP の大きな目的として

が挙げられる.

設定作業の簡略化

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

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

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

IPアドレスの有効利用

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

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

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

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

サーバ設定ファイル

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

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

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

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

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

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

実習

今回の実習で最初に構成するネットワークは以下の図 6.1 に示すものである. 各 pc の名前を,班番号の 2 桁表記を A とすると 各班の教卓に向かって左側から pcA1, pcA2,...,pcA4 とする.

DHCP実習

図 6.1 ネットワーク設計図

DHCP サーバ,NAT サーバとなる 3 号機の外部用アドレスは 以下のものとする.

表 6.2 3 号機の内蔵LAN設定表

内蔵 LANホスト名
1 班 172.17.2.15/16pc013
2 班 172.17.2.43/16pc023
3 班 172.17.2.16/16pc033
4 班 172.17.2.44/16pc043
5 班 172.17.2.17/16pc053
6 班 172.17.2.45/16pc063
7 班 172.17.2.18/16pc073
8 班 172.17.2.46/16pc083
9 班 172.17.2.19/16pc093
10 班 172.17.2.47/16pc103
11 班 172.17.2.20/16pc113
12 班 172.17.2.48/16pc123
13 班 172.17.2.21/16pc133
14 班 172.17.2.49/16pc143

実習 0. NAT の設定

第5回実験 を参考に図 6.1 の構成で 3 号機を NAT サーバーとして 永続的に動作する設定にせよ.

設定完了後,全計算機を再起動して 以下のことを確認し,結果を記録せよ.

実習 0.1

全計算機でブラウザを使用し,外部サイトにアクセスできることを確認せよ.

実習 0.2

自分のホストで 画面上のメニューの右のほうにある上下の矢印のアイコンを クリックし,「接続情報」を選択せよ. 設定されている IPアドレスとサブネットマスク, デフォルトルートと第一DNSサーバーが確認できるので記録せよ.

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

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

今回の実験では各班の pcA3 を DHCP サーバとし,pcA1, pcA2, pcA4 を DHCP クライアントとする. pcA3 に以下の方法で dhcp サーバをインストールする.

画面左のランチャーの「Ubuntuソフトウェアセンター」をクリックし, 左上の「すべてのソフトウェア」が選択されていることを確認して 右上の検索窓に「isc-dhcp-server」と入力する.

検索結果として表示された isc-dhcp-server をクリックし,インストールボタンを押す.

「認証」ダイアログが出たらログインしたユーザーの パスワードを入力する.

ダウンロード,インストールが完了したら左のパッケージの アイコンにチェックマークがつく.

実習 2. DHCP の起動,確認

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

DHCP サーバー(pcA3) で以下の設定を行う.

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

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

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

今回の設定では班内だけのネットワークで 使用できるプライベート IP アドレスは 192.168.1.1/24 から 192.168.1.254/24 である. DHCP で配布する範囲は設定ファイルで指定できる. 192.168.1.1/24 はDHCPサーバの 固定IPアドレスとして使用する.今回の実験では 192.168.1.101/24 から 192.168.1.200/24 をDHCP で配布するように設定する. それに加えて デフォルトゲートウェイ,ネームサーバの情報も 配布するようにあわせて指定する. この場合, dhcpd.conf に以下の行を追加すればよい.

dhcpd.conf への追加

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.101 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 172.17.254.254;
}

subnet の行はこのサーバが所属するネットワークについての情報, range の行が配布する IP アドレスの範囲である. option の2行でクライアントが設定すべきデフォルトゲートウェイ, ネームサーバの情報を指定している.

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

dhcpd の再起動

user1@pc001:~$ sudo service isc-dhcp-server restart

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

ログの監視

user1@pc001:~$ tail -f /var/log/syslog

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

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

ログを grep

user1@pc001:~$ grep dhcpd /var/log/syslog

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

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

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

実習2.1

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

実習2.2

pcA1, pcA2, pcA4 で 画面上のメニューの右のほうにある上下の矢印のアイコンを クリックし,「接続情報」を選択せよ. 設定されている IPアドレスとサブネットマスク, デフォルトルートと第一DNSサーバーが確認できるので記録し, 班のメンバーで情報を共有せよ.

実習 3. 貸し出し延長

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

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

貸し出し時間の設定

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

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

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

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

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

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

IP アドレスの予約

host pcA2 {
  hardware ethernet d8:d3:85:0a:4c:07;
  fixed-address 192.168.1.12;
}

実習 4.1

自分の班の pcA1, pcA2, pcA4 について,それぞれ 192.168.1.11, 192.168.1.12, 192.168.1.14 の割り当てが予約されるように サーバの dhcpd.conf を変更せよ. サーバで sudo service isc-dhcp-server restart を行ってから pcA1, pcA2, pcA4 で sudo dhclient -r eth1 と sudo dhclient eth1 コマンドをこの順で実行することで IP アドレスを再取得し,IP アドレスが変化しているかどうかを確認し, 記録せよ. 確認方法は自分のホストで 画面上のメニューの右のほうにある上下の矢印のアイコンを クリックして「接続情報」を選択すればよい. 画面に表示される IPアドレスとサブネットマスク, デフォルトルートと第一DNSサーバーを記録せよ.

実習 4.2

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

実習 4.3

設定終了後,自分のホストから班のメンバーの 他のホストすべてに対し pingを行い, 通信できることを確認せよ.また,ウェブブラウザ等を使用し, 外部ネットワークが使用可能であることを確認せよ.

すべての作業が終了したら pcA3 の isc-dhcp-server を消去する. 消去は, 「Ubuntuアプリケーションセンター」で 「isc-dhcp-server」を検索し,「削除」ボタンを押せばよい.

課題

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


Updated in November 7, 2014, index.html, Yamamoto Hiroshi