Product SiteDocumentation Site

10.7. DHCP

DHCP (Dynamic Host Configuration Protocol の略語) とは、マシンが起動時にネットワーク設定を自動的に取得することを可能にするプロトコルです。DHCP のおかげで、ネットワーク設定の管理を中央集権化し、すべてのデスクトップマシンに類似した設定を行う、ことが可能になります。
DHCP サーバは多くのネットワーク関連パラメータを提供します。DHCP サーバが提供する最も一般的なパラメータは IP アドレスとマシンの所属するネットワークですが、他にも DNS サーバ、WINS サーバ、NTP サーバなどの情報を提供することも可能です。
(bind の開発にも参加している) Internet Software Consortium が DHCP サーバの主開発者です。対応する Debian パッケージは isc-dhcp-server です。

10.7.1. 設定

DHCP サーバの設定ファイル (/etc/dhcp/dhcpd.conf) で最初に編集する必要がある場所はドメイン名と DNS サーバです。DHCP サーバがローカルネットワーク (ブロードキャストが届く範囲として定義される) に 1 台しかない場合、authoritative 指示文を有効化しなければいけません (コメントを外さなければいけません)。また、subnet セクションを作成し、そこに提供先のローカルネットワークと設定情報を記述します。以下の例は、192.168.0.1 を持つゲートウェイ担当のルータが存在する 192.168.0.0/24 ローカルネットワークに適合します。配布される IP アドレスは 192.168.0.128 から 192.168.0.254 までの範囲です。

例 10.15 /etc/dhcp/dhcpd.conf の抜粋

#
# Sample configuration file for ISC dhcpd for Debian
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style interim;

# option definitions common to all supported networks...
option domain-name "internal.falcot.com";
option domain-name-servers ns.internal.falcot.com;

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

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# My subnet
subnet 192.168.0.0 netmask 255.255.255.0 {
    option routers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    range 192.168.0.128 192.168.0.254;
    ddns-domainname "internal.falcot.com";
}

10.7.2. DHCP と DNS

DNS ゾーン内に DHCP クライアントを自動登録するという、便利な機能があります。この機能を使うことで、各マシンの意味のある名前を使ってアクセスできるようになります (この機能を使わない場合、machine-192-168-0-131.internal.falcot.com などの匿名性のある名前を使ってアクセスすることになります)。この機能を使うには、DNS サーバを設定して DHCP サーバから internal.falcot.com DNS ゾーンの更新を受け入れるようにして、DHCP サーバを設定して各クライアントの登録情報の更新を DNS サーバに送信するようにします。
bind の場合、DHCP サーバからの更新を受け入れる各ゾーンに allow-update 指示文を追加する必要があります (internal.falcot.com ドメインの 1 つと逆引きゾーンの両方に追加する必要があります)。この指示文は更新要求を受け入れる IP アドレスをリストします。つまり、考え得る DHCP サーバの全アドレスを列挙します (そうすることが適切なら、ローカルアドレスと公開アドレスの両方を指定します)。
allow-update { 127.0.0.1 192.168.0.1 212.94.201.10 !any };
注意してください! bind は変更することが可能なゾーンに変更を加え、設定ファイルを定期的に上書きします。この自動手続きにより作成されるファイルは手作業で書かれたものよりも人間にとって読みづらいため、Falcot の管理者は権限委譲された DNS サーバを備える internal.falcot.com ドメインを用意しています。さらに、これは falcot.com ゾーンファイルは手作業で制御することを意味します。
上で引用した DHCP サーバの設定には、既に DNS ゾーンの更新に必要な指示文が含まれています。そしてその指示文とはサブネットを表すブロック中の ddns-update-style interim;ddns-domain-name "internal.falcot.com"; です。