22.10. DHCP
戻る | 第22章 高度なネットワーク | 次へ

## 22.10. DHCP

原作: Sutter Greg [FAMILY Given].

### 22.10.1. DHCP とは何でしょうか?

DHCP (Dynamic Host Configuration Protocol) は、 システムをネットワークに接続するだけで、 ネットワークでの通信に必要な情報を入手することができる仕組みです。 FreeBSD では ISC (Internet Software Consortium) による DHCP の実装を使用しています。したがって、 ここでの説明のうち実装によって異なる部分は ISC のもの用になっています。

### 22.10.2. この節で説明していること

この節は ISC DHCP システムのクライアント側およびサーバ側の構成要素の両方について説明します。 クライアント側のプログラムである `dhclient` は FreeBSD のベースシステム内に含まれています。そして、サーバ側の要素は `net/isc-dhcp3-server` port から利用可能です。下記の説明の他に、 dhclient(8), dhcp-options(5) および dhclient.conf(5) マニュアルページが役にたつ情報源です。

### 22.10.3. DHCP の動作

クライアントとなるマシン上で、 DHCP のクライアントである `dhclient` を実行すると、 まず設定情報の要求をブロードキャストします。デフォルトでは、 このリクエストには UDP のポート 68 を使用します。 サーバは UDP のポート 67 で応答し、クライアントの IP アドレスと、 ネットマスクやルータ、DNS サーバなどの関連する情報を提供します。 これらの情報のすべては DHCP の 「リース」 の形で送られ、DHCP サーバ管理者によって決められたある一定の時間内でのみ有効になります。 これによって、ネットワークに存在しなくなったホストの IP アドレスは自動的に回収されることになります。

DHCP クライアントはサーバから非常に多くの情報を取得することができます。 dhcp-options(5) に非常に大きなリストが載っています。

### 22.10.4. FreeBSD への組み込み

FreeBSD は ISC の DHCP クライアントである `dhclient` を完全に組み込んでいます。 DHCP クライアントはインストーラと基本システムの両方で提供されています。 ですから DHCP サーバを走らせているネットワーク上ではネットワーク関係の設定についての詳細な知識は必要になりません。 `dhclient` は、3.2 以降のすべての FreeBSD の配布物に含まれています。

DHCP は sysinstall で対応されており、sysinstall でのネットワークインタフェイス設定の際は、 「このインタフェイスの設定として DHCP を試してみますか? (Do you want to try DHCP configuration of this interface?)」 という質問が最初になされます。 これに同意することで `dhclient` が実行され、 それが成功すればネットワークの設定情報は自動的に取得されます。

システム起動時に DHCP を使ってネットワーク情報を取得するように するには、次の二つを行なう必要があります。

- `bpf` デバイスがカーネルに組み込まれていることを確認します。 これを組み込むには、カーネルコンフィグレーションファイルに `pseudo-device bpf` という行を追加し、カーネルを再構築します。 カーネルの構築に関する詳細は、 9章FreeBSD カーネルのコンフィグレーション を参照してください。

  `bpf` デバイスは、 FreeBSD にはじめから用意されている `GENERIC` カーネルに組み込まれていますので、 自分で設定を変えたカスタムカーネルを使っているのでなければ、 DHCP を動作させるためにカーネルを再構築する必要はありません。

  ### 注記:

  セキュリティに関心のある方向けに注意しておきます。 `bpf` デバイスは、パケットスニファ (盗聴プログラム) を動作させることができる (ただし `root` 権限が必要) デバイスです。 `bpf` は DHCP を動作させるために かならず必要ですが、 セキュリティが非常に重要な場面では DHCP をいつか使うかもしれないというだけで `bpf` デバイスをカーネルに追加すべきではないでしょう。

- `/etc/rc.conf` を編集して、 次の行を追加してください。

  ifconfig_fxp0="DHCP"

  ### 注記:

  で説明されているように `fxp0` の部分を、 動的に設定したいインタフェースの名前で置き換えることを忘れないようにしてください。

  もし、使っている `dhclient` の場所を変更していたり、`dhclient` にフラグを渡したい場合は、 同様に下のように書き加えてください。

  dhcp_program="/sbin/dhclient" dhcp_flags=""

DHCP サーバ `dhcpd` は、Ports Collection に `net/isc-dhcp3-server` の一部として収録されています。 この port には ISC DHCP サーバと文書が含まれています。

### 22.10.5. 関連ファイル

- `/etc/dhclient.conf`

  `dhclient` は設定ファイル `/etc/dhclient.conf` を必要とします。 大抵の場合、このファイルはコメントだけであり、 デフォルトが通常使いやすい設定になっています。 この設定ファイルは dhclient.conf(5) マニュアルページで説明しています。

- `/sbin/dhclient`

  `dhclient` は静的にリンクされており、 `/sbin` に置かれています。dhclient(8) マニュアルページで `dhclient` コマンドについてより詳しく説明しています。

- `/sbin/dhclient-script`

  `dhclient-script` は FreeBSD 特有の、 DHCP クライアント設定スクリプトです。これについては dhclient-script(8) マニュアルページで説明されていますが、 これを編集する必要はほとんど発生しないでしょう。

- `/var/db/dhclient.leases`

  DHCP クライアントはこのファイルに有効なリースのデータベースをログとして記録します。 dhclient.leases(5) にもうすこし詳しい解説があります。

### 22.10.6. 参考になる文献

DHCP のプロトコルは RFC 2131 に完全に記述されています。また dhcp.org にも有用な情報源が用意されています。

### 22.10.7. DHCP サーバのインストールと設定

#### 22.10.7.1. この節で説明していること

この節は DHCP の ISC (Internet Software Consortium) 実装を用いて FreeBSD システムを DHCP サーバとして動作させる方法の情報を提供します。

DHCP のサーバ部分は FreeBSD の一部として提供されません。 したがって、このサービスを提供するために `net/isc-dhcp3-server` port をインストールする必要があるでしょう。 Ports Collection を使用する情報についての詳細は 5章アプリケーションのインストール - packages と ports を参照してください。

#### 22.10.7.2. DHCP サーバのインストール

FreeBSD システムを DHCP サーバとして設定するために、bpf(4) デバイスがカーネルに組み込まれていることを保証する必要があります。 そうするためには、カーネルコンフィギュレーションファイルに `pseudo-device bpf` を追加して、 カーネルを再構築してください。 カーネルの構築に関する詳細は 9章FreeBSD カーネルのコンフィグレーション を参照してください。

`bpf` デバイスは、 FreeBSD にはじめから用意されている `GENERIC` カーネルの一部なので、DHCP を動作させるためにカスタムカーネルを作成する必要はありません。

### 注記:

セキュリティを特に意識する人は、`bpf` `bpf` はパケットスニファ (盗聴プログラム) が正常に (このようなプログラムはさらに特権アクセスを必要としますが) 動作することを可能にするデバイスでもあることに注意してください。 `bpf` は DHCP を使用するために必要 です。 しかし、セキュリティをとても気にしているなら、 DHCP をいつか使うかもしれないというだけで `bpf` デバイスをカーネルに含めるべきではないでしょう。

次に行わねばならないのは、 `net/isc-dhcp3-server` port によってインストールされた `dhcpd.conf` のサンプルを編集することです。 デフォルトでは、これは `/usr/local/etc/dhcpd.conf.sample` で、 編集する前にこれを `/usr/local/etc/dhcpd.conf` にコピーするべきでしょう。

#### 22.10.7.3. DHCP サーバの設定

`dhcpd.conf` はサブネットおよびホストに関する宣言で構成されます。 例を使って説明するのが最も簡単でしょう。

option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; }

| このオプションは、 デフォルト探索ドメインとしてクライアントに渡されるドメインを指定します。 これが意味するところの詳細については resolv.conf(5) を参照してください。
| このオプションはクライアントが使用する、 コンマで区切られた DNS サーバのリストを指定します。
| クライアントに渡されるネットマスクです。
| クライアントは特定のリース期限を要求することもできます。 それ以外の場合は、サーバはこのリース期限値 (秒) でリースを割り当てるでしょう。
| これはサーバがリースする時間の最大値です。 クライアントがこれより長いリースを要求しても、 `max-lease-time` 秒だけしか有効にならないでしょう。
| このオプションは、リースが受理、またはリリースされたときに DHCP サーバが DNS を更新しようとするかどうかを指定します。 ISC 実装では、このオプションは 必須 です。
| これはどの範囲の IP アドレスが、 クライアントに割り当てるために予約されたプールに使用されるかを示します。 この範囲に含まれている IP アドレスはクライアントに渡されます。
| クライアントに供給されるデフォルトゲートウェイを宣言します。
| (リクエストが生じた時に DHCP サーバがホストを認識できるように) ホストのハードウェア MAC アドレスを指定します。
| ホストに常に同じ IP アドレスを付与することを指定します。 DHCP サーバはリース情報を返す前にホスト名の名前解決をするので、 ここにホスト名を書いても構いません。

`dhcpd.conf` を書き終えたら以下のコマンドでサーバを起動できます。

`#` `/usr/local/etc/rc.d/isc-dhcpd.sh start`

今後サーバの設定に変更を加える必要が生じた時には、 `SIGHUP` シグナルを dhcpd に送っても、 多くのデーモンがそうであるようには、 設定ファイルが再読み込み されない ことに注意してください。 `SIGTERM` シグナルを送ってプロセスを停止し、 それから上記のコマンドを用いて再起動させる必要があります。

#### 22.10.7.4. ファイル

- `/usr/local/sbin/dhcpd`

  dhcpd は静的にリンクされ `/usr/local/sbin` に置かれます。 dhcpd に関するそれ以上の情報は port とともにインストールされる dhcpd(8) マニュアルページにあります。

- `/usr/local/etc/dhcpd.conf`

  dhcpd はクライアントへのサービス提供をはじめる前に設定ファイル `/usr/local/etc/dhcpd.conf` を必要とします。このファイルは、 サーバの稼働に関する情報に加えて、 サービスされているクライアントに提供される情報のすべてを含む必要があります。 この設定ファイルについての詳細は、 port によってインストールされる dhcpd.conf(5) マニュアルページを参照してください。

- `/var/db/dhcpd.leases`

  DHCP サーバは発行したリースのデータベースをこのファイルにログとして保持します。 port によってインストールされる dhcpd.leases(5) にはもう少し詳しい説明があります。

- `/usr/local/sbin/dhcrelay`

  dhcrelay は、DHCP サーバがクライアントからのリクエストを、 別のネットワーク上にある DHCP サーバに転送する高度な環境下で使用されます。 この機能が必要なら、`net/isc-dhcp3-server` port をインストールしてください。 port とともに提供される dhcrelay(8) マニュアルページにはより詳細な情報が含まれます。

戻る | 上に戻る | 次へ
22.9. NIS/YP | ホーム | 22.11. DNS

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。