はじめる人のびぎねっと。

プライバシーポリシー

読み物

DHCPサーバーを動かそう

DHCPの役割

DHCP(Dynamic Host Configration Protocol)とは、LANなどの閉じたネットワーク内で、使用できるIPアドレスの中から、未使用のIPアドレスを選んで、クライアントに動的に割り振る機能です。

DHCPサーバーを設定すれば、LAN内に接続されているクライアント1台毎にIPアドレスを設定しなくてもネットワークに接続するだけで通信を行うことができるようになります。

注意!  1つのネットワーク内ではDHCPサーバーは1台しか動かさないようにしてください。2台以上のDHCPサーバが1つのネットワーク内にあると、正しく動作しません。

ネットワークカードを複数装着したゲートウェイマシンでのDHCPサーバーの設定は、装着されているネットワークカード全てに対しての設定が必要になります。設定が足りない場合、DHCPサーバーはエラーで起動しません。

このエラーは、そのネットワークに対する「空」の設定を作ることによって回避できますが、それでもネットワーク内で(IPアドレスの割り当てをしてくれない)DHCPサーバーが動作している事になります。万一、同じネットワーク内で他にもDHCPサーバーが起動している場合、そのネットワークで正しいIP割り当てが行えなくなることがあるので要注意です。

事例 社内ネットワークとは別に自分用のローカルネットワークを構築しており、ネットワーク間を自前のゲートウェイでIPマスカレード等で接続している。このゲートウェイマシンでDHCPを動かそうとして、社内ネットワーク側のDHCPを混乱させた。

DHCPサーバーのインストール

ここでは、Red Hat Linux 7.2 をDHCPサーバー、Windows 2000 をクライアントとして設定していきます。

まず、設定したいLinuxマシンにdhcpのRPMパッケージがインストールされているかどうかを調べます。

確認例

# rpm -q dhcpd

 [ # rpm -qa | grep dhcp ] として調べた場合、dhcpcd-○○ というファイルがインストールされている事がありますが、これはdhcp「クライアント」です。サーバーはdhcpdで、クライアントはdhcpcdです。

パッケージがインストールされていない場合は、CD-ROM等よりRPMパッケージをインストールしましょう。(ここでは、Red Hat Linux 7.2のCD-ROMの2枚目のディスクに入っているdhcp-2.0pl5-8 をインストールします)

# mount /mnt/cdrom  ←CD-ROMのマウント
# rpm -ivh /mnt/cdrom/RedHat/RPMS/dhcp-2.0pl5-8.i386.rpm
   ↑RPMパッケージのインストール

DHCPサーバーの設定の前に情報を整理する

0からのIPアドレスの振り方』を参考にしながら、ネットワーク内で使えるIPアドレスの情報を整理します。予め決めておくべき項目と設定例は以下の通りです。

ドメイン名 sample.net
ネットワークアドレス(サブネット) 192.168.1.0
ブロードキャストアドレス 192.168.1.255
ネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.1.1
DNSサーバーのIPアドレス 192.168.1.10
IP範囲(アドレスレンジ) 192.168.1.100~192.168.1.254

ここではLANをクラスCのプライベートIPアドレスで構成しています。『0からのIPアドレスの振り方』での例では、IPアドレスの第4オクテットの割り振り方は以下のように決めています。ここでは、この状況に合わせて設定することにします。

1~10 特に重要なサーバー用のアドレス
11~99 固定的に使用しているワークステーション等に使用するアドレス
100~254 クライアントPC等に使用するアドレス。動的アドレス用

ここに挙げたのはあくまで一例です。当然こうでなくてはいけない、ということではないので、それぞれのネットワークの状態に従って各項目を決定してください。

dhcpd.confファイルの設定1

決定したIPアドレス等の情報を、DHCPサーバーの設定ファイル「/etc/dhcpd.conf」に書き込みます。このファイルはデフォルトの状態では作成されていないので、新規に作成します。

/etc/dhcpd.confファイル(最低限の設定例)

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.254;  ←アドレスレンジ
        option routers 192.168.1.1;  ←デフォルトゲートウェイ
 }

ここでは、DHCPクライアントに対して割り当てるIPアドレスの範囲と、デフォルトゲートウェイの値を設定しています。

dhcpd.leasesファイルの作成

Red Hat Linux 7.2の場合、dhcpがインストールされていれば /var/lib/dhcp/dhcpd.leases というファイルが作成されますが、もし存在していない場合は空のファイルを作成します。(/var/lib/dhcp/ ディレクトリが無い場合は、ディレクトリも作成してください)

# touch /var/lib/dhcp/dhcpd.leases

以上で基本的な設定は終了です。設定ファイルに記述ミスがないか確認します。

# /usr/sbin/dhcpd -d -f

設定ミスがあった場合はエラー箇所が表示されるので、エラーメッセージをよく見て設定が間違えていないかを確認してください。

DHCPサーバーの起動

設定が完了したら、DHCPサーバーを起動します。

# service dhcpd start

クライアントの設定(Windows2000の場合)

DHCPサーバーが動き出したら、次はDHCPクライアントの設定です。

クライアントのWindows 2000で、「マイネットワーク」右クリック→「プロパティ」を選択します。「ローカルエリア接続」右クリック→「プロパティ」を選択します。リストボックスから「インターネット プロトコル(TCP/IP)」を選択し、「プロパティ」ボタンをクリックします。

表示された「インターネット プロトコル(TCP/IP)」ダイアログボックスで、[IP アドレスを自動的に取得する]と[DNSサーバーのアドレスを自動的に取得する]をチェックし、OKボタンを押せば完了です。


▲クリックすると拡大します

クライアントでIPアドレスの取得確認1

Windows 2000のネットワーク設定を変更したら、しばらく反応が返ってこない場合があります。これは、Windowsがネットワーク上のDHCPサーバーを探し出し、IPアドレスの割り当てを受けようとしているからです。OSに反応が戻ったら、IPアドレスが取得できたかを調べましょう。調べるには、コマンドロンプトでipconfigコマンドを実行します。なお、コマンドプロンプトは「スタートボタン」→「プログラム」→「アクセサリ」→「コマンドプロンプト」で実行できます。


▲確認画面1(クリックすると拡大します)

 Connection-specific DNS Suffix は、「dhcpd.confファイルの設定1」でドメイン名を設定していないので表示されません。

dhcpd.confファイルの設定2

最初のDHCPサーバー設定では最低限の設定しか行いませんでしたので、整理した情報を元にさらに細かい設定を行います。

/etc/dhcpd.confファイル(詳細な設定例)

option domain-name "sample.net"; ←ドメイン名
option domain-name-servers 192.168.1.10; ←DNSサーバーのIPアドレス
subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.254;
        option routers 192.168.1.1;
        option subnet-mask 255.255.255.0; ←ネットマスク
        option broadcast-address 192.168.0.255; ←ブロードキャストアドレス
}

設定を変更した場合には、必ずDHCPサーバーを再起動させてください。

DHCPサーバーの再起動

# service dhcpd restart

クライアントでIPアドレスの取得確認2

WindowsクライアントがDHCPサーバからIPアドレスが正しく取得できたことを調べるには、コマンドプロンプトでipconfigコマンドを実行します。


▲確認画面2(クリックすると拡大します)

 ドメイン名を設定したので、Connection-specific DNS Suffix にドメイン名が表示されました。

クライアントで詳細情報を確認する

より詳細なクライアントの設定情報を得るには、コマンドロンプトでipconfigコマンドに/allオプションを付けて実行します。

C:\>ipconfig /all


▲確認画面3(クリックすると拡大します)

設定した各情報が、DHCPサーバーで設定した値になっていることを確認してください。

起動設定

設定に問題がなく、正常に動作していることが確認できたら、Linuxを起動した時にDHCPサーバーが自動的に起動するように設定しておきましょう。

設定例

# chkconfig dhcpd on

ネットワークカードが2つ装着されている場合

DHCPサーバーを動作させるLinuxマシンにネットワークカードが2つ装着されている場合、/etc/sysconfig/dhcpdファイルにDHCPサービスを提供したいネットワークに接続されたネットワークインターフェースの指定を行う必要があります。

たとえば、ネットワークインターフェースeth0の接続されたネットワークにDHCPサービスを提供するならば、/etc/sysconfig/dhcpdファイルは以下のようになります

/etc/sysconfig/dhcpdファイル

# Command line options here
 DHCPARGS=eth0

もしこの指定が無い場合、存在するネットワークインターフェースが接続している全てのネットワークに対するDHCPの設定が/etc/dhcpd.confファイルに必要となります。設定が不足している場合には、DHCPサーバーを起動することができません。

このページのTOPへ