Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
14.2. DHCP サーバーの設定
dhcp パッケージには、Internet Systems Consortium (ISC)
DHCP
サーバーが含まれています。root
でこのパッケージをインストールします。
~]# yum install dhcp
dhcp パッケージをインストールすると、
/etc/dhcp/dhcpd.conf
ファイルが作成されます。これは単なる空の設定ファイルです。root
で以下のコマンドを実行します。
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
サンプルの設定ファイルは、
/usr/share/doc/dhcp-version;/dhcpd.conf.example
にあります。/etc/dhcp/dhcpd.conf
を設定するする際に、このファイルを使用してください。詳細は以下で説明します。
14.2.1. 設定ファイル
DHCP
サーバーを設定するには、最初にクライアントのネットワーク情報を保存している設定ファイルを作成します。このファイルを使用して、クライアントシステムに対するオプションを宣言します。
設定ファイルには追加のタブや空白行が含まれているため、簡単に書式を整えることができます。キーワードは大文字と小文字の区別がなく、行頭がハッシュ記号 (
#
) で始まる行はコメントとみなされます。
設定ファイルのステートメントには、次のような 2 つのタイプがあります。
- パラメーター: タスクの実行方法、タスクを実行するかどうか、クライアントに送信するネットワーク設定のオプションを規定します。
- 宣言 - ネットワークトポロジの記述、クライアントの記述、クライアントのアドレス指定、宣言グループへのパラメーターグループの適用を行います。
キーワードオプションから始まるパラメーターは、オプション と呼ばれます。オプションは、
DHCP
オプションを制御します。一方、パラメーターはオプションでない値を設定し、DHCP
サーバーの動作を制御します。
中括弧 (
{ }
) で囲まれたセクションの前で宣言されたパラメーター (オプションを含む) は、グローバルパラメーターとみなされます。グローバルパラメーターは、これ以降のすべてのセクションに適用されます。
重要
設定ファイルが変更された場合、
systemctl restart dhcpd
コマンドを使って DHCP
デーモンを再起動するまでは変更内容は反映されません。
注記
毎回
DHCP
設定ファイルを変更してサービスを再起動させる代わりに、omshell
コマンドを使用すると、DHCP
サーバーへの接続、クエリー、設定の変更をインタラクティブに行うことができます。omshell
を使用すると、DHCP サーバーの実行中でも変更を行うことができます。omshell
の詳細については、omshell
の man ページを参照してください。
例14.1「サブネットの宣言」では、
routers
、subnet-mask
、domain-search
、domain-name-servers
、および time-offset
の各オプションは、それらの下で宣言されている host
ステートメントに使用されます。
機能するサブネットと、
DHCP
サーバーが接続するサブネットではすべて、subnet
宣言が 1 つ必要になります。これは DHCP
デーモンにアドレスがそのサブネット上にあることを認識する方法を指示します。subnet
宣言は、そのサブネットに動的に割り当てるアドレスがない場合でも、各サブネットに必要となります。
この例では、サブネット内のすべての
DHCP
クライアントに対するグローバルオプションと range
が宣言されています。クライアントには range
内の IP
アドレスが割り当てられています。
例14.1 サブネットの宣言
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-search "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; }
サブネット内のシステムに動的
IP
アドレスをリースする DHCP
サーバーを設定するには、例14.2「Range パラメーター」の例の値を修正します。これにより、クライアントのデフォルトのリース時間、最大リース時間、ネットワークの設定値を宣言します。この例ではクライアントシステムに、range
192.168.1.10
から 192.168.1.100
までの IP
アドレスを割り当てます。
例14.2 Range パラメーター
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-search "example.com"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; }
ネットワークインターフェースカードの MAC アドレスに基づいてクライアントに
IP
アドレスを割り当てるには、host
宣言内の hardware ethernet
パラメーターを使用します。例14.3「DHCP を使用した静的 IP アドレス」の例では、host apex
宣言により、MAC アドレス 00:A0:78:8E:9E:AA
のネットワークインターフェースカードが常に IP
アドレス 192.168.1.4
を受け取るように指定されます。
オプションのパラメーターである
host-name
を使用すると、クライアントにホスト名を割り当てることができる点にも留意してください。
例14.3 DHCP を使用した静的 IP アドレス
host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; }
Red Hat Enterprise Linux 7 では、InfiniBand IPoIB インターフェースへの静的
IP
アドレスの割り当てをサポートしています。ただし、これらのインターフェースには通常のハードウェアイーサネットアドレスがないため、IPoIB インターフェースに一意の ID を指定する別の方法を使用する必要があります。標準では、オプションの dhcp-client-identifier=
コンストラクトを使用して、IPoIB インターフェースの dhcp-client-identifier
フィールドを指定します。DHCP
サーバーのホストコンストラクトは、最大でホストの 1 節あたりハードウェアイーサネット 1 つと dhcp-client-identifier
エントリー 1 つをサポートします。ただし、固定アドレスエントリーは複数ある場合があり、DHCP
サーバーは、DHCP
リクエストを受信したネットワークに適切なアドレスに自動的に応答します。
例14.4 複数インターフェースにおける DHCP を使用した静的 IP アドレス
たとえば 2 つの InfiniBand インターフェースと各物理的インターフェース上に
P_Key
インターフェースがあり、イーサネット接続もある場合など、マシンの設定が複雑な場合は、以下の静的 IP
コンストラクトを使用できます。
Host apex.0 { option host-name “apex.example.com”; hardware ethernet 00:A0:78:8E:9E:AA; option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:11; fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50; } host apex.1 { option host-name “apex.example.com”; hardware ethernet 00:A0:78:8E:9E:AB; option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:12; fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50; }
デバイスに適切な
dhcp-client-identifier
を見つけるには、通常、接頭辞 ff:00:00:00:00:00:02:00:00:02:c9:00
を使用して、IPoIB インターフェースの最後の 8 バイトを追加します (これは、IPoIB インターフェースが接続されている InfiniBand ポートの 8 バイトの GUID と同じものです)。旧式のコントローラーのなかには、この接頭辞が適切でないものもあります。その場合、DHCP
サーバーで tcpdump を使用し、着信 IPoIB DHCP
リクエストを取得して、そこから適切な dhcp-client-identifier
を収集することが推奨されます。例を示します。
]$ tcpdump -vv -i mlx4_ib0
tcpdump: listening on mlx4_ib0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:42:44.131447 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request, length 300, htype 32, hlen 0, xid 0x975cb024, Flags [Broadcast] (0x8000)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Hostname Option 12, length 10: "rdma-qe-03"
Parameter-Request Option 55, length 18:
Subnet-Mask, BR, Time-Zone, Classless-Static-Route
Domain-Name, Domain-Name-Server, Hostname, YD
YS, NTP, MTU, Option 119
Default-Gateway, Classless-Static-Route, Classless-Static-Route-Microsoft, Static-Route
Option 252, NTP
Client-ID Option 61, length 20: hardware-type 255, 00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:02:00:21:ac:c1
上記のダンプでは、Client-ID フィールドが表示されています。hardware-type 255
は ID の最初の ff:
に対応しており、ID の残りの部分は DHCP
設定ファイルに表記するそのままの形で引用されています。
同じ物理ネットワークを共有するすべてのサブネットは、例14.5「Shared-network 宣言」のように
shared-network
宣言内で宣言される必要があります。shared-network
内でも囲まれた subnet 宣言の外にあるパラメーターは、グローバルパラメーターとみなされます。shared-network
に割り当てる名前は、そのネットワークの記述的なタイトルにします。たとえば、テストラボ環境のサブネットの場合は、「test-lab」というタイトルにします。
例14.6「Group 宣言」にあるように、
group
宣言を使用すると、宣言のグループにグローバルパラメーターを適用できます。たとえば、共有ネットワーク、サブネット、ホストをグループ化できます。
例14.6 Group 宣言
group { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-search "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } host raleigh { option host-name "raleigh.example.com"; hardware ethernet 00:A1:DD:74:C3:F2; fixed-address 192.168.1.6; } }
注記
提供されている設定ファイルのサンプルをベースとして使用し、それにカスタムの設定オプションを追加できます。このファイルを適切な場所にコピーするには、
root
で以下のコマンドを実行します。
~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf
ここでの version_number は、
DHCP
バージョン番号になります。
オプションステートメントの全一覧とその機能については、
dhcp-options(5)
の man ページを参照してください。
14.2.2. リースデータベース
DHCP
サーバーでは、/var/lib/dhcpd/dhcpd.leases
ファイルが DHCP
クライアントのリースデータベースを格納しています。このファイルは変更しないでください。最近割り当てられた各 IP
アドレスの DHCP
リース情報は、このリースデータベースに自動的に保存されます。この情報には、リース期間、IP
アドレスの割り当て先、リースの開始日と終了日、リース取得に使用されるネットワークインターフェースカードの MAC アドレスが含まれます。
リースデータベースの時刻はすべて、現地時間でなく協定世界時 (UTC) を使用します。
リースデータベースは、サイズが大きくなり過ぎるのを避けるために適宜再作成されます。最初に、すべての既知のリースは一時的なリースデータベースに保存されます。
dhcpd.leases
ファイルの名前は dhcpd.leases~
に変更され、一時的なリースデータベースが dhcpd.leases
に書き込まれます。
リースデータベースがバックアップファイルに名前変更された後、新規ファイルが書き込まれる前に、
DHCP
DHCP デーモンが強制終了されるか、システムがクラッシュする可能性があります。この場合、dhcpd.leases
ファイルは存在しませんが、サービスを起動する必要があります。この際、新規のリースファイルを作成しないでください。作成すると、それまでのリースはすべて失われ、多くの問題が発生します。これを解決する方法は、dhcpd.leases~
バックアップファイルの名前を dhcpd.leases
に変更して、デーモンを起動することです。
14.2.3. サーバーの起動と停止
重要
DHCP
サーバーの初回起動時には、dhcpd.leases
ファイルが存在しないと起動に失敗します。ファイルが存在しない場合、touch /var/lib/dhcpd/dhcpd.leases
コマンドを使用してファイルを作成してください。このサーバーが DNS
サーバーとして BIND も実行している場合、このステップは不要です。named
サービスを開始すると、自動的に dhcpd.leases
ファイルを確認するためです。
これまで稼働していたシステムで、新規のリースファイルを作成しないでください。作成すると、それまでのリースはすべて失われ、多くの問題が発生します。これを解決する方法は、
dhcpd.leases~
バックアップファイルの名前を dhcpd.leases
に変更して、デーモンを起動することです。
DHCP
サービスを起動するには、以下のコマンドを実行します。
systemctl start dhcpd.service
DHCP
サービスを停止するには、以下のコマンドを実行します。
systemctl stop dhcpd.service
デフォルトでは、
DHCP
サービスはブート時に起動しません。ブート時にデーモンが自動的に起動するように設定する方法については、『Red Hat Enterprise Linux システム管理者のガイド』を参照してください。
システムに複数のネットワークインターフェースが接続されており、
DHCP
サーバーがいずれか 1 つのインターフェースでのみ DHCP
リクエストをリッスンするようにするには、DHCP
サーバーがそのデバイス上でのみリッスンするように設定します。DHCP
デーモンは、/etc/dhcp/dhcpd.conf
ファイル内でサブネット宣言がなされているインターフェース上でのみ、リッスンします。
これは、ネットワークカードが 2 つあるファイアウォールマシンで役立ちます。1 つのネットワークカードを
DHCP
クライアントとして設定して、インターネットの IP
アドレスを取得します。もう 1 つのネットワークカードは、ファイアウォールの背後にある内部ネットワークの DHCP
サーバーとして使用できます。内部ネットワークに接続されたネットワークカードのみを指定すると、ユーザーはインターネット経由でデーモンに接続できないため、システムをよりセキュアにできます。
コマンドラインオプションを指定するには、
root
で dhcpd.service
ファイルをコピーしてから編集します。例を示します。
~]#[Service] セクションの下にある行を編集します。cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
~]#vi /etc/systemd/system/dhcpd.service
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid your_interface_name(s)その後に
root
でサービスを再起動します。
~]#systemctl --system daemon-reload
~]#systemctl restart dhcpd
/etc/systemd/system/dhcpd.service
ファイルの [Service] セクションの下では、ExecStart=/usr/sbin/dhcpd
にコマンドラインオプションを追加できます。使用可能なオプションには、以下のものがあります。
-p portnum
:dhcpd
がリッスンする UDP ポート番号を指定します。デフォルト値はポート 67 です。DHCP
サーバーは、指定された UDP ポートよりも番号が 1 つ大きいポートにあるDHCP
クライアントに応答を送信します。たとえば、デフォルトのポート 67 を使用する場合、サーバーはポート 67 でリクエストをリッスンし、ポート 68 にあるクライアントに応答します。ポートが指定され、DHCP
リレーエージェントが使用される場合、DHCP
は DHCP リレーエージェントがリッスンするポートと同じポートを指定する必要があります。詳細は「DHCP リレーエージェント」を参照してください。-f
: フォアグラウンドプロセスとしてデーモンを実行します。これは主にデバッグ用に使用されます。-d
: 標準エラー記述子にDHCP
サーバーデーモンを記録します。これは主にデバッグ用に使用されます。このオプションを指定しないと、ログは/var/log/messages
に書き込まれます。-cf filename
: 設定ファイルの場所を指定します。デフォルトの場所は/etc/dhcp/dhcpd.conf
です。-lf filename
: リースデータベースファイルの場所を指定します。リースデータベースファイルがすでに存在する場合、DHCP
サーバーを起動する度に、同じファイルが使用されるようにすることが非常に重要です。このオプションは、実稼働環境以外のマシンでデバッグする目的にのみ使用することが強く推奨されます。デフォルトの場所は/var/lib/dhcpd/dhcpd.leases
です。-q
- デーモンの起動時に著作権に関するメッセージ全体を表示しません。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。