俺だけのために Ore! Tips!

DHCP サーバのインストール

2004年06月15日 作業

参考 URL
http://www.linux.or.jp/JF/JFdocs/DHCP/dhcp-server-setup.html

DHCP サーバのインストール(OS は FreeBSD 4.8-RELEASE)


1.ファイルをゲット

mikan# cd /usr/local/src
mikan# lynx ftp://ftp.isc.org/isc/dhcp/
dhcp-2.0pl5.tar.gz を選択してダウンロード

mikan# ls -la dhcp*
-rw-r--r-- 1 root wheel 294909 Jun 12 23:36 dhcp-2.0pl5.tar.gz


2.ファイルを伸長、復元して、configure

mikan# tar xvfz dhcp-2.0pl5.tar.gz
dhcp-2.0pl5/
dhcp-2.0pl5/doc/
dhcp-2.0pl5/doc/rfc2131.txt
<略>
dhcp-2.0pl5/server/dhcpd.conf.cat5
dhcp-2.0pl5/server/dhcpd.leases.5
dhcp-2.0pl5/server/dhcpd.leases.cat5
mikan# cd dhcp-2.0pl5
mikan# ./configure
System Type: freebsd

ええ?これだけ?
一応、Makefile は更新されているようだが・・・

mikan# ls -la
total 98
drwxr-xr-x 8 1029 9986 512 Jun 12 23:38 .
drwxr-xr-x 19 root wheel 1536 Jun 12 23:37 ..
-rw-r--r-- 1 1029 9986 3049 Jun 10 1997 CHANGES
-rw-r--r-- 1 root 9986 11176 Jun 12 23:38 Makefile
-rw-r--r-- 1 1029 9986 7917 Jul 20 2000 Makefile.conf
-rw-r--r-- 1 1029 9986 3263 Feb 24 1999 Makefile.dist
-rw-r--r-- 1 1029 9986 24013 Sep 7 2000 README
-rw-r--r-- 1 1029 9986 26013 Sep 7 2000 RELNOTES
drwxr-xr-x 3 1029 9986 512 Jun 12 23:38 client
drwxr-xr-x 2 1029 9986 1024 Jun 12 23:38 common
-rwxr-xr-x 1 1029 9986 2415 Jul 14 1999 configure
drwxr-xr-x 2 1029 9986 512 Sep 7 2000 doc
drwxr-xr-x 5 1029 9986 512 Sep 7 2000 includes
drwxr-xr-x 2 1029 9986 512 Jun 12 23:38 relay
drwxr-xr-x 2 1029 9986 512 Jun 12 23:38 server


3.make & make インストール

mikan# make
Making all in common
cc -g -I.. -I../includes -c raw.c
cc -g -I.. -I../includes -c parse.c
cc -g -I.. -I../includes -c nit.c
<略>
cc -o dhcrelay dhcrelay.o ../common/libdhcp.a
sed -e "s#ETCDIR#/etc#" -e "s#DBDIR#/var/db#" -e "s#RUNDIR#/var/run#" < dhcrelay.8 >dhcrelay.man8
nroff -man dhcrelay.man8 >dhcrelay.cat8
mikan# make install
Installing in common
for dir in /usr/share/man/cat5; do foo=""; for bar in `echo ${dir} |tr / ' '`; do foo=${foo}/$bar; if [ ! -d $foo ]; then mkdir $foo; chmod 755 $foo; fi; done; done
<略>
install -c dhcrelay /usr/sbin
chmod 755 /usr/sbin/dhcrelay
install -c -m 444 dhcrelay.cat8 /usr/share/man/cat8/dhcrelay.0

うーむ、FreeBSD だと、ほんとにソースからの make が簡単じゃのお。Linux だと、ソースからインストールすると色々苦労があるが・・・

このマシンは、192.168.0.0/24 と 192.168.10.0/24 の gateway サーバにする予定(まだ、192.168.10.0/24 の I/F は設定していない)。
今回は、192.168.10.0/24 側だけ DHCP を動かす。
範囲は、192.168.10.65〜192.168.10.80 と、192.168.10.97〜192.168.10.128。


mikan# ifconfig -a
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::240:26ff:fe3f:727%ed0 prefixlen 64 scopeid 0x1
ether 00:40:26:3f:07:27
dc0: flags=8802 mtu 1500
ether 00:90:cc:a5:78:d7
media: Ethernet autoselect (none)
status: no carrier
<以下略>

という状況なので、dc0 の方に 192.168.10.0/24 なカードとして頑張っていただこう。

mikan# ifconfig dc0 inet 192.168.10.254 netmask 255.255.255.0
mikan# ifconfig dc0
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.10.254 netmask 0xffffff00 broadcast 192.168.10.255
inet6 fe80::290:ccff:fea5:78d7%dc0 prefixlen 64 scopeid 0x2
ether 00:90:cc:a5:78:d7
media: Ethernet autoselect (none)
status: no carrier

* /etc/rc.conf にも記述しておくのをお忘れなく。

で、DHCP サーバの設定ファイルを作成。(/etc/dhcpd.conf)
↓こんな感じ。

mikan# cat /etc/dhcpd.conf
# Net & Field DHCP Server Config File
# 2004.6.13 by Maaasamasa Shinoda

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option routers 192.168.10.254;
option domain-name-servers 192.168.0.1;
option domain-name "netandfield.com";

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.65 192.168.10.80;
range 192.168.10.97 192.168.10.128;
}

サーバを起動する前に /var/state/dhcp/dhcpd.leases を作成する。

mikan# mkdir -p /var/state/dhcp/
mikan# touch /var/state/dhcp/dhcpd.leases

よっしゃ、実行。

mikan# /usr/sbin/dhcpd -d -f dc0
Internet Software Consortium DHCP Server 2.0pl5
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.

Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html

Can't open lease database /var/db/dhcpd.leases: No such file or directory -- check for failed database rewrite attempt!
Please read the dhcpd.leases manual page if you.
don't know what to do about this.
exiting.

ありゃりゃ。
/var/state/dhcp/dhcpd.leases じゃなくて、/var/db/dhcpd.leases かよ。(参考にしたのが、Linux な人のページだったので(^^;)

mikan# rm -r /var/state/dhcp
mikan# ls -la /var/state/
total 4
drwxr-xr-x 2 root wheel 512 Jun 14 23:58 .
drwxr-xr-x 22 root wheel 512 Jun 13 16:08 ..
mikan# rm -r /var/state/
mikan# touch /var/db/dhcpd.leases

で、実行。

mikan# /usr/sbin/dhcpd -d -f dc0
Internet Software Consortium DHCP Server 2.0pl5
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.

Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html

Listening on BPF/dc0/00:90:cc:a5:78:d7/192.168.10.0
Sending on BPF/dc0/00:90:cc:a5:78:d7/192.168.10.0
Sending on Socket/fallback/fallback-net


よっしゃ、起動しましたで。
試しに、dc0 とクロスケーブルで直結した Libretto ff 1100CT(Windows98(SE にあらず))を接続してみる。

DHCPDISCOVER from 00:80:4c:33:f7:2d via dc0
DHCPOFFER on 192.168.10.65 to 00:80:4c:33:f7:2d via dc0
DHCPREQUEST for 192.168.10.65 from 00:80:4c:33:f7:2d via dc0
DHCPACK on 192.168.10.65 to 00:80:4c:33:f7:2d via dc0

とサーバ側にメッセージが!
ちゃんと、192.168.10.65 がリースされたようじゃん。
(MAC アドレスも Libretto のものだ)

Win98 の winipcfg で見てみると、
DNS 192.168.0.1
DHCP サーバー 192.168.10.254

と表示されているが、IP アドレスのところは何故か空白。
しかし、Win98 側から ping 192.168.10.254 は通るし、サーバ側からも Libretto に対して ping はきちんと通る。ばっちり。(もう一回 winipcfg を実行したら、今度はちゃんと IP アドレスが表示された。ま、Microsoft だから・・・(^^;)

%ping 192.168.10.65
PING 192.168.10.65 (192.168.10.65): 56 data bytes
64 bytes from 192.168.10.65: icmp_seq=0 ttl=128 time=1.579 ms
64 bytes from 192.168.10.65: icmp_seq=1 ttl=128 time=0.577 ms
64 bytes from 192.168.10.65: icmp_seq=2 ttl=128 time=0.599 ms
^C
--- 192.168.10.65 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.577/0.918/1.579/0.467 ms

これで、一応 DHCP も動くようなので、マシン立ち上げ時に自動起動するように設定しておこう。

mikan# grep dhcp /etc/defaults/*
/etc/defaults/rc.conf:dhcp_program="/sbin/dhclient" # Path to dhcp client program.
/etc/defaults/rc.conf:dhcp_flags="" # Additional flags to pass to dhcp client.

↑うーむ。/etc/rc.conf には dhcp client の設定はあるが、dhcpd の起動設定は無いようじゃね。
ということで、/usr/local/etc/rc.d 以下に起動スクリプトをおく形にする。

mikan# cat > /usr/local/etc/rc.d/dhcpd.sh
#!/bin/sh

/usr/sbin/dhcpd dc0

mikan# chmod 755 /usr/local/etc/rc.d/dhcpd.sh
mikan# ls -la /usr/local/etc/rc.d/dhcp*
-rwxr-xr-x 1 root wheel 31 Jun 15 00:37 /usr/local/etc/rc.d/dhcpd.sh

これだけ。
じゃ、実行してみる。

mikan# /usr/local/etc/rc.d/dhcpd.sh
Internet Software Consortium DHCP Server 2.0pl5
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.

Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html

Listening on BPF/dc0/00:90:cc:a5:78:d7/192.168.10.0
Sending on BPF/dc0/00:90:cc:a5:78:d7/192.168.10.0
Sending on Socket/fallback/fallback-net
mikan# ps -ax|grep dhcp
499 ?? Ss 0:00.00 /usr/sbin/dhcpd dc0
mikan#

うん。たぶん、これでOK!
Libretto を接続してみたら、今度もちゃんと 192.168.10.65 がリースされた。

あとは、/etc/dhcpd.conf をチューンしていけばよいのであろう。

前ページに戻る


Copyright (C) 2003-2004 S.Maaasamasa.