HAYAGUI

FreeBSD 4.5 + DHCPサーバとクライアント

はじめに

DHCP サーバと、DHCP クライアントをインストールしてみます。
DHCPでリースするIPアドレスは、DNSに登録する方法にしました。参考にしたページは、こちら。 FreeBSD QandA 393(http://www.jp.freebsd.org/QandA/HTML/393.html)

DNS にIPアドレスを登録

DNS に、DHCP でリースするIPアドレスを追加します。
eden# cd /etc/namedb
eden# pwd
/etc/namedb
eden# ls
PROTO.localhost.rev     localhost.zone          named.conf.sample
hayagui.rev             make-localhost          named.root
hayagui.zone            named.conf              named.root.org
localhost.rev           named.conf.org
正引きの zone ファイルを開いて追加します。シリアルを更新するのを忘れないように。
# vi hayagui.zone

dhcp15          IN      A       192.168.0.15
dhcp16          IN      A       192.168.0.16
dhcp17          IN      A       192.168.0.17
dhcp18          IN      A       192.168.0.18
dhcp19          IN      A       192.168.0.19
次に、逆引きの rev ファイルを開いて追加します。シリアルを更新するのを忘れないように。
# vi hayagui.rev

15      IN      PTR     dhcp15.hayagui.com.
16      IN      PTR     dhcp16.hayagui.com.
17      IN      PTR     dhcp17.hayagui.com.
18      IN      PTR     dhcp18.hayagui.com.
19      IN      PTR     dhcp19.hayagui.com.
DNS をリスタートします。
eden# /usr/sbin/ndc restart
new pid is 319
eden#
これで、追加は終わり。 確認しましょう。
eden# nslookup
Default Server:  eden.hayagui.com
Address:  192.168.0.8

> 192.168.0.15
Server:  eden.hayagui.com
Address:  192.168.0.8

Name:    dhcp15.hayagui.com
Address:  192.168.0.15

> dhcp15
Server:  eden.hayagui.com
Address:  192.168.0.8

Name:    dhcp15.hayagui.com
Address:  192.168.0.15

>
正しく引けていますね。

DHCPサーバをインストール

/stand/sysinstall で、isc-dhcp3-3.0.1.r4 をインストール。
/usr/local/etc/dhcpd.conf.sample を dhcpd.conf としてコピーします。
eden# cd /usr/local/etc
eden# pwd
/usr/local/etc
eden# ls dhcpd.conf.sample
dhcpd.conf.sample
eden# cp dhcpd.conf.sample dhcpd.conf
このファイルを開いて、以下のように編集します。
option domain-name-servers eden.hayagui.com;
option domain-name "hayagui.com";

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.15 192.168.0.19;
  option routers 192.168.0.1;
  option broadcast-address 192.168.0.255;
}
次に、リース情報ログを書くファイルを作成します。
eden# touch /var/db/dhcpd.leases
起動スクリプトファイルを作成します。
eden# cd /usr/local/etc/rc.d
eden# pwd
/usr/local/etc/rc.d
eden# ls
apache.sh               samba.sh.sample         webmin.sh
isc-dhcpd.sh.sample     slapd.sh.sample
isc-dhcrelay.sh.sample  snmpd.sh
eden#
いろいろありますが、isc-dhcpd.sh.sample を isc-dhcpd.sh にコピーします。
eden# cp isc-dhcpd.sh.sample isc-dhcpd.sh
起動させるには、このシェルスクリプトを使用します。
eden# /usr/local/etc/rc.d/isc-dhcpd.sh start

クライアントの設定

FreeBSD 4.5R のPCを DHCP クライアントにする方法を記します。

/etc/rc.conf を開いて、使用しているデバイスの設定に dhcp という文字列に設定します。

mico# cat rc.conf

#ifconfig_fxp0="inet 192.168.0.7  netmask 255.255.255.0"
ifconfig_fxp0="dhcp"

再起動するとIPアドレスを取得します。
> ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::220:e0ff:fe60:1be6%fxp0 prefixlen 64 scopeid 0x1
        inet 192.168.0.19 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:20:e0:60:1b:e6
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010 mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
faith0: flags=8002 mtu 1500
IPアドレスがこのように設定されても、ローカルに設定されているホスト名はDNSで登録されている名前と異なることになります。
> hostname
mico.hayagui.com
IPアドレスがリースされると、DHCPサーバの /var/db/dhcpd.leases には、以下のように記録されます。
eden# cd /var/db
eden# ls
dhcpd.leases    ipf             mountdtab       port.mkversion
dhcpd.leases~   locate.database pkg
eden# cat dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone.   This is
# not a bug, so please don't ask about it.   There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature.   If this is inconvenient or confusing to you, we sincerely
# apologize.   Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.1rc4

lease 192.168.0.19 {
  starts 2 2002/09/10 13:57:29;
  ends 2 2002/09/10 14:07:29;
  binding state active;
  next binding state free;
  hardware ethernet 00:20:e0:60:1b:e6;
}

MACアドレスを判断して指定したIPアドレスを割り当てる

DHCPサーバに対してIPアドレスのリースを要求したホストのMACアドレスを判断して、 指定したIPアドレスを割り当てる方法を説明します。

/usr/local/etc/dhcpd.conf を開いて、以下のように追加します。

host dhcp15 {
  hardware ethernet 00:20:e0:60:1b:e6;
  fixed-address 192.168.0.15;
}
DHCP を再起動します。
eden# /usr/local/etc/rc.d/isc-dhcpd.sh restart
Internet Software Consortium DHCP Server V3.0.1rc4
Copyright 1995-2001 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 1 leases to leases file.
Listening on BPF/sis0/00:a0:cc:79:ac:8a/192.168.0.0/24
Sending on   BPF/sis0/00:a0:cc:79:ac:8a/192.168.0.0/24
Sending on   Socket/fallback/fallback-net
 dhcpdeden#
クライアントが再起動すると、割り当てたIPアドレスを取得していることがわかります。
> ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::220:e0ff:fe60:1be6%fxp0 prefixlen 64 scopeid 0x1
        inet 192.168.0.15 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:20:e0:60:1b:e6
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
faith0: flags=8002<BROADCAST,MULTICAST> mtu 1500
> 
> hostname
mico.hayagui.com
プリントサーバなどに DHCP があるのは、この設定を使うのかな?

戻る



(C)1999 - 2002 Kenji Ito All rights reserved.