DHCPサーバーの設定


参考文献:FreeBSDパーフェクトネットワーク(毎日コミュニケーションズ)

パソコンにIPアドレスを割り当てる場合、手動で割り当てる方法と、自動で割り当てる方法があります。
数が少ないうちは、手動で割り当てるのも良いですが、数が多くなってくると大変になってきます。 その場合DHCPサーバーを使用して、IPアドレスを割り当てる事が必要になってきます。
DHCPサーバーは、クライアント(FreeBSDに繋いでるパソコン)からの要求を受けて、利用可能なIPアドレスの中から、自動的に、クライアントにIPアドレスを割り当てます。
DHCP_ZU1.GIF - 3,066BYTES

FreeBSD4.2Rには、DHCPサーバーの方は組み込まれていないので、インストールする必要があります。 ISC-DHCPを組み込みたいところですが、インターネット上のFreeBSD関連のWebページでは、WIDE-DHCPの方が多く取り上げられているので、ここでもWIDE-DHCPをインストールする事にします。

wide-dhcpのインストール
インストールは、portsでインストールする方法とpackageでインストールする方法がありますが、packageでインストールした方が楽なのでpackageでインストールします。(^^;
packageのFTPサイトからwide-dhcpを探し出して、取ってきてください。
この時点では、FreeBSDからインターネットに直接接続することは出来ないので、Windows等をインストールしているパソコンから、FTP接続してファイルを取ってきます。
その後、フロッピーディスクにコピーしてから、FreeBSDのマシンにフロッピーディスクをマウントさせて、コピーをするなどの方法で、ファイルを持ってきましょう。
フロッピーデスクにコピーしたら、pkg_addコマンドを使用してインストールします。


hoge# mount -t msdos /dev/fd0 /mnt/floppy
hoge# cp /mnt/floppy/wide-dhcp-1.4.0p6.tgz /usr/tmp/
hoge# pkg_add /usr/tmp/wide-dhcp-1.4.0p6.tgz
何も表示されていなければ、インストールされています。

dhcpdb.poolの編集
無事インストールが済んだら、次は設定ファイルの編集です。まず、dhcpdb.poolというファイルを作成します。
/usr/local/share/examples/dhcp/にdhcpdb.pool.sampleという設定ファイルのサンプルがあるので、これを参考にして編集します。
まずは、dhcpdb.pool.sampleをdhcpdb.poolの名前に変えて、/etcのディレクトリにコピーします。

hoge# cp /usr/local/share/examples/dhcp/dhcpdb.pool.sample /etc/dhcpdb.pool

そして、エデイタで編集します。
FreeBSDで標準使用できるエデイタには、viとeeがありますが、Windowsのエデイタになれてしまった人には、viは使用しづらいので、eeをここではを使用していきます。
使い方は簡単で、ee ファイル名 という感じで使用します。
ee(エデイタ)はESCキーを押せば、メニューがでますので、操作が分からなくなったらESCキーを押して、メニューを表示させて値要しましょう。また、日本語フォントが組み込まれていない場合、日本語は文字化けを起こしますが、日本語はコメントにしか使用しないため、特に支障はありません。
まずは、エデイタでdhcpdb.poolを開いてみましょう。

hoge# ee /etc/dhcpdb.pool

こんな感じに編集します。#で始まる行は、コメント扱いになります。
# # start of /etc/dhcpdb.pool 
#
global:!snmk=255.255.255.0:tmof=32400:
#
# "global"というエントリで全体的な設定
# サブネットマスクは/24に
# UTCとの差は9時間=32400秒
#
internal:tblc=global:rout=192.168.0.15:dht1=500:dht2=850:\
:brda=192.168.0.255:\
:dnsv=211.11.96.1 192.168.0.15:dnsd=foo.jp:
#
# "internal"というエントリをつくる
# 全体的な設定globalを参照する
# rout=ルーティング経路です。ゲートウェイマシン(このサーバー)は192.168.0.15なので。
# dht1とdht2はよくわからない
# brda=クライアントを接続しているネットのbroadcast address・・・
# dnsv=ネームサーバー(DNS)のアドレス。複数指定できます。この場合左からブロバイダープライマリ、ローカルです。
# dnsd=サーバのドメイン名。自分のサーバードメインに書き換えてください。
#
# 以下にDHCPで割り当てるエントリを記載する
# とりあえず、192.168.0.2〜192.168.0.10まで、DHCPが自由に割り当てられるような設定。
# 必要に応じて、変更してください。

2:  :ipad=192.168.0.2:dfll=3600:maxl=7200:tblc=internal:
3:  :ipad=192.168.0.3:dfll=3600:maxl=7200:tblc=internal:
4:  :ipad=192.168.0.4:dfll=3600:maxl=7200:tblc=internal:
5:  :ipad=192.168.0.5:dfll=3600:maxl=7200:tblc=internal:
6:  :ipad=192.168.0.6:dfll=3600:maxl=7200:tblc=internal:
7:  :ipad=192.168.0.7:dfll=3600:maxl=7200:tblc=internal:
8:  :ipad=192.168.0.8:dfll=3600:maxl=7200:tblc=internal:
9:  :ipad=192.168.0.9:dfll=3600:maxl=7200:tblc=internal:
10: :ipad=192.168.0.10:dfll=3600:maxl=7200:tblc=internal:
#
# end of/etc/dhcpdb.pool
#

snmk
ネットワークマスクを指定します。
tmof
UTC(世界標準時計)からのオフセットを秒単位で指定します。日本時間は9時間進んでいますので32400(9*60*60)を指定します。
dnsv
ネームサーバーのIPアドレスを指定します。複数指定する場合は空白で区切って記述します。
dnsd
ドメイン名を指定します。
dfll
デフォルトの割当期限を指定します。デフォルトは3600秒です。
maxl
最大の割当期限を指定します。デフォルトは3600秒です。
tblc
valueの名前を持つ定義内容を取り込みます。
dht1
DHCPクライアントがユニキャストにより割当期限の延長を開始する時期を0.1%単位で指定します。ここでは500を指定していますので50%を意味しています。
brda
ブロードキャストアドレスを指定します。
rout
ルータ(ゲートウェイマシン)のアドレスを指定します。
ipad
クライアントへ割り当てるIPアドレスを指定します。
IPアドレスの動無限的割り当て
maxlに0xffffffffを指定します。
実際に試したことはありませんが、192.168.0.190に動的に無限に割り当てる場合は以下のようになると思います。。
190: :ipad=192.168.0.190:maxl=7200:tblc=internal:



起動スクリプトwide-dhcps.shの作成
dhcpdb.poolを作成したら、次はDHCPを自動起動させるために、wide-dhcps.shというファイルを作成しますが、その前に、/etc/dhcpdb.relayの名前で、空のファイルを作成しておきます。

hoge# touch /etc/dhcpdb.relay

そして、/usr/local/etc/rc.d/wide-dhcps.sh.sampleのファイルを使用してwide-dhcps.shのファイルを作成します。

hoge# cp /usr/local/etc/rc.d/wide-dhcps.sh.sample /usr/local/etc/rc.d/wide-dhcps.sh

そして、wide-dhcps.shをエデイタで編集します。

hoge# ee /usr/local/etc/rc.d/wide-dhcps.sh

エデイタでwide-dhcps.shを開いたら、/usr/local/sbin/dhcps [Interface Name]という行を探してください。そして、ここの行の[Interface Name]に自分の使用しているネットワークカード名を記入します。
#!/bin/sh
DB_POOL=/etc/dhcpdb.pool
DB_RELAY=/etc/dhcpdb.relay
DB_BIND=/var/db/dhcpdb.bind
if [ -f ${DB_POOL} -a -f ${DB_RELAY} \
		-a -x /usr/local/sbin/dhcps ]; then
	if [ -f ${DB_BIND} ]; then
		find ${DB_POOL} -newer ${DB_BIND} -exec /bin/rm ${DB_BIND} \;
	fi
	/usr/local/sbin/dhcps [Interface Name]
	echo -n ' dhcps'
fi

#!/bin/sh
DB_POOL=/etc/dhcpdb.pool
DB_RELAY=/etc/dhcpdb.relay
DB_BIND=/var/db/dhcpdb.bind
if [ -f ${DB_POOL} -a -f ${DB_RELAY} \
		-a -x /usr/local/sbin/dhcps ]; then
	if [ -f ${DB_BIND} ]; then
		find ${DB_POOL} -newer ${DB_BIND} -exec /bin/rm ${DB_BIND} \;
	fi
	/usr/local/sbin/dhcps ed1
	echo -n ' dhcps'
fi

ネットワークカード名がわからない場合は、ifconfig -aで調べることが出来ます。NE2000互換のカードの場合は、ed1やed0になると思います。

編集が終了したら、システムをリブートして、DHCPが起動されていることを確認しましょう。

hoge# shutdown -r now
リブート・・・。

クライアント側(Windows)での確認
次にクライアント側(Windows95)での設定を行います。
まずは、Windowsのタスクバーで「ファイル名を指定して実行」を選択します。
TASK-BAR.GIF - 4,145BYTES

winipcfgを入力してOKボタンを押します。
WINIPCFG.GIF - 3,091BYTES

アダプタをネットワークカードに合わせて、dhcpdb.poolで記入したIPアドレスが割り当てられているか確認します。尚、IPアドレスが、0.0.0.0のままだったら、更新ボタンを押してみましょう。
ADAPTA.GIF - 10,524BYTES
このページを参考にして設定した場合は、デフォルトゲートウェイが192.168.0.15になっているはずです。
192.168.0.15でない場合は、/etc/rc.confのファイルの中で、defaultrouterのIPアドレスの指定が適切でないと思われます。
尚、defaultrouterは指定しなくても、FreeBSDでは自動的に設定をしてくれますので、この設定は#でも付けてコメントアウトしておきましょう。

以上でDHCPの設定は終了です。これで、IPアドレスでのサーバーへのアクセスが可能になりました。


BACK