dhcpd.leases(5) | FreeBSD File Formats Manual | dhcpd.leases(5) |
名前
dhcpd.leases - DHCP クライアントへの貸し出しデータベース説明
Internet Software Consortium DHCP サーバは、割り当てたアドレスの貸し出し記録を永続的なデータベースに保持しています。このデータベースはフリーフォームの ASCII ファイルで、一連の貸し出し宣言 (declaration) からなります。貸し出しが要求・更新・破棄されると、その新しい値がこの貸し出しファイルの末尾に記録されます。よって、ひとつの貸し出しに対して複数の宣言があった場合は、ファイルの後ろの方にあるものが現在のものになります。最初に dhcpd がインストールされたときは、貸し出しデータベースは存在していません。しかし dhcpd は、貸し出しデータベースが存在していないと起動しません。この目的の初期データベースには、 /var/state/dhcp/dhcpd.leases という空のファイルを作るだけでかまいません。
貸し出しデータベースが際限なく大きくなるのを防ぐため、このファイルは時々書き換えられます。まず一時的な貸し出しデータベースが作成され、現在わかっている貸し出し記録がすべてそこにダンプされます。次に、古い貸し出しデータベースが /var/state/dhcp/dhcpd.leases~ という名前に変更されます。最後に、新たに書き出された貸し出しデータベースが適切な場所に移動されます。
古い貸し出しデータベースの名前が変更された後、新しいデータベースが適切な場所に移動される前には間隔があるので、この間に dhcpd プロセスが kill されたりシステムがクラッシュすると、 /var/state/dhcp/dhcpd.leases が存在しなくなる危険性があります。この場合 dhcpd は起動しなくなり、手動での修復が必要になります。このとき新しい貸し出しファイルを 単純に作成してはいけません。こうすると、古い割り当てはすべて失われ、混乱が生じることになります。そうではなく、/var/state/dhcp/dhcpd.leases~ を /var/state/dhcp/dhcpd.leases にリネーム、すなわち正しい古い貸し出しファイルを元に戻してから、 dhcpd を起動してください。このようにすれば、正しい貸し出しファイルに復元できます。
フォーマット
貸し出し宣言が保存されるフォーマットは、 dhcpd.conf(5) や dhclient.conf(5) ファイルの読み込みに用いられるのと同じ再帰パーサによって解釈されます。
lease ip-address { statements... }
各貸し出し宣言には、クライアントに貸し出されている IP アドレスがひとつ含まれます。括弧の内部の文は、貸し出しの有効期間と割り当て先とを定義します。
貸し出しの開始時刻と終了時刻は、それぞれ ``starts'' および ``end'' 文によって記録されます。
starts date;
ends date;
日付は次のように指定されます。
weekday year/month/day hour:minute:second
曜日 (weekday) は、貸し出しの期限切れを人間にわかりやすくするために書かれています。番号 0 から 6 で指定され、0 が日曜日に対応しています。曜日は入力では無視されます。年 (year) は世紀の部分とともに指定され、よって通常は (ものすごく長い貸し出しでない限り) 4 桁になります。月 (month) は 1 から始まり、1 が 1 月に対応します。月内日 (day) も同じく 1 から始まります。時 (hour) は 0 から 23 の数値で、分 (minute) は 0 から 59 の数値で、秒 (second) も同じく 0 から 59 の数値で、それぞれ指定します。
貸し出し期間の両時刻はグリニッジ平均時 (GMT) で指定され、ローカルのタイムゾーンではありません。実はグリニッジは年内のある期間サマータイムになるので、貸し出しの時刻が常に壁時計時刻と同じになるところは、世界中のどこにも存在しません。 Unix マシンでは、GMT での現時刻は date -u と入力すればわかります。
貸し出しを要求したネットワークインターフェースの MAC アドレスは、 hardware 文で記録されます。
hardware hardware-type mac-address;
MAC アドレスは、コロンで区切られた 16 進のオクテットで指定されます。
クライアントがアドレス要求時にクライアント識別子を用いた場合は、そのクライアント識別子が uid 文で記録されます。
uid client-identifier;
クライアント識別子は 16 進のオクテットで指定されます。これはクライアントが ASCII 文字列を利用したか、あるいは新しい「ハードウェア形式/MAC アドレス」形式を利用したかによりません。
クライアントが (DHCP-DNS Interaction ドラフトのある版で指定されているように) Client Hostname オプションでホスト名を送ってきた場合には、そのホスト名は client-hostname 文で記録されます。
client-hostname "hostname";
クライアントが (Windows 95 などでのように) Hostname オプションで自分のホスト名を送ってきた場合には、そのホスト名は hostname 文で記録されます。
hostname "hostname";
DHCP サーバは、ある貸し出しが (なんらかの意味で) 誤用された、と指定することがあります。割り当てを受けたクライアントがその割り当てを NAK した場合とか、サーバがあるアドレスを割り当てる際にそれが利用中であるかを調べたところ、実はそのアドレスがすでに使われていた場合などがこれに該当します。このような場合には abandoned 文が用いられ、その貸し出しは破棄し、再割り当てするな、ということを示します。
abandoned;
破棄された貸し出しは、自動的に再生されます。クライアントが新しいアドレスを要求したときに、割り当てるべき新しいアドレスがなかった場合には、サーバは破棄されたアドレスがないかどうか調べ、もっとも前に破棄された貸し出しアドレスを割り当てます。貸し出しアドレスが衝突していないかを調べる際には、標準的なチェック機構が用いられます。従って破棄された貸し出しの IP アドレスがまだ利用されていた場合は,、そのアドレスは再び破棄されることになります。
クライアントが破棄されたアドレスを 要求した場合は、サーバはそのアドレスが破棄された理由を、貸し出しファイルが壊れたためであるとみなし、またそのクライアントは貸し出しを調査したときに反応したマシンであり、そのためにそのアドレスが破棄扱いになったのだとみなします。この場合には、そのアドレスは直ちにそのクライアントに割り当てられます。