DHCP (Dynamic Host Configuration Protocol) は、 システムをネットワークに接続するだけで、 ネットワークでの通信に必要な情報を入手することができる仕組みです。 FreeBSD では ISC (Internet Software Consortium) による DHCP の実装を使用しています。したがって、 ここでの説明のうち実装によって異なる部分は ISC のもの用になっています。
この節は ISC DHCP
システムのクライアント側およびサーバ側の構成要素の両方について説明します。
クライアント側のプログラムである dhclient
は
FreeBSD のベースシステム内に含まれています。そして、サーバ側の要素は
net/isc-dhcp3-server
port
から利用可能です。下記の説明の他に、
dhclient(8), dhcp-options(5) および dhclient.conf(5)
マニュアルページが役にたつ情報源です。
クライアントとなるマシン上で、
DHCP のクライアントである dhclient
を実行すると、
まず設定情報の要求をブロードキャストします。デフォルトでは、
このリクエストには UDP のポート 68 を使用します。
サーバは UDP のポート 67 で応答し、クライアントの IP アドレスと、
ネットマスクやルータ、DNS サーバなどの関連する情報を提供します。
これらの情報のすべては DHCP の
「リース」 の形で送られ、DHCP
サーバ管理者によって決められたある一定の時間内でのみ有効になります。
これによって、ネットワークに存在しなくなったホストの
IP アドレスは自動的に回収されることになります。
DHCP クライアントはサーバから非常に多くの情報を取得することができます。 dhcp-options(5) に非常に大きなリストが載っています。
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
を編集して、
次の行を追加してください。
で説明されているように fxp0
の部分を、
動的に設定したいインタフェースの名前で置き換えることを忘れないようにしてください。
もし、使っている dhclient
の場所を変更していたり、dhclient
にフラグを渡したい場合は、
同様に下のように書き加えてください。
DHCP サーバ dhcpd
は、Ports Collection に
net/isc-dhcp3-server
の一部として収録されています。
この port には ISC DHCP サーバと文書が含まれています。
/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) にもうすこし詳しい解説があります。
この節は DHCP の ISC (Internet Software Consortium) 実装を用いて FreeBSD システムを DHCP サーバとして動作させる方法の情報を提供します。
DHCP のサーバ部分は FreeBSD の一部として提供されません。
したがって、このサービスを提供するために
net/isc-dhcp3-server
port をインストールする必要があるでしょう。
Ports Collection を使用する情報についての詳細は
5章アプリケーションのインストール - packages と ports を参照してください。
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
にコピーするべきでしょう。
dhcpd.conf
はサブネットおよびホストに関する宣言で構成されます。
例を使って説明するのが最も簡単でしょう。
このオプションは、 デフォルト探索ドメインとしてクライアントに渡されるドメインを指定します。 これが意味するところの詳細については resolv.conf(5) を参照してください。 | |
このオプションはクライアントが使用する、 コンマで区切られた DNS サーバのリストを指定します。 | |
クライアントに渡されるネットマスクです。 | |
クライアントは特定のリース期限を要求することもできます。 それ以外の場合は、サーバはこのリース期限値 (秒) でリースを割り当てるでしょう。 | |
これはサーバがリースする時間の最大値です。
クライアントがこれより長いリースを要求しても、
| |
このオプションは、リースが受理、またはリリースされたときに DHCP サーバが DNS を更新しようとするかどうかを指定します。 ISC 実装では、このオプションは 必須 です。 | |
これはどの範囲の IP アドレスが、 クライアントに割り当てるために予約されたプールに使用されるかを示します。 この範囲に含まれている IP アドレスはクライアントに渡されます。 | |
クライアントに供給されるデフォルトゲートウェイを宣言します。 | |
(リクエストが生じた時に DHCP サーバがホストを認識できるように) ホストのハードウェア MAC アドレスを指定します。 | |
ホストに常に同じ IP アドレスを付与することを指定します。 DHCP サーバはリース情報を返す前にホスト名の名前解決をするので、 ここにホスト名を書いても構いません。 |
dhcpd.conf
を書き終えたら以下のコマンドでサーバを起動できます。
#
/usr/local/etc/rc.d/isc-dhcpd.sh start
今後サーバの設定に変更を加える必要が生じた時には、
SIGHUP
シグナルを
dhcpd に送っても、
多くのデーモンがそうであるようには、
設定ファイルが再読み込み されない
ことに注意してください。
SIGTERM
シグナルを送ってプロセスを停止し、
それから上記のコマンドを用いて再起動させる必要があります。
/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)
マニュアルページにはより詳細な情報が含まれます。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。