32 DHCP #
DHCP(「Dynamic Host Configuration Protocol」)の目的は、ネットワーク設定を各ワークステーションでローカルに行うのではなく、(サーバから)一元的に割り当てることです。DHCPを使用するように設定されたクライアントは、自身の静的アドレスを制御できません。サーバからの指示に従って、すべてが自動的に設定されるからです。クライアント側でNetworkManagerを使用する場合は、クライアントを設定する必要はありません。これは、環境を変更し、一度に1つのインタフェースしかない場合に便利です。DHCPサーバが実行しているマシン上ではNetworkManagerを使用しないでください。
IBM Zプラットフォーム上では、OSAおよびOSA Expressネットワークカードを使用しているインタフェースに対してのみDHCPを使用できます。DHCPの自動環境設定機能に必要なMACアドレスを持つのは、これらのカードだけです。
DHCPサーバの設定方法の1つとして、ネットワークカードのハードウェアアドレス(通常は、固定)を使用して各クライアントを識別し、そのクライアントがサーバに接続するたびに同じ設定を提供する方法があります。DHCPはサーバが用意したアドレスプールから、アドレスを各関連クライアントに動的に割り当てるように設定することもできます。後者の場合、DHCPサーバは要求を受信するたびに、接続が長期にわたる場合でも、クライアントに同じアドレスを割り当てようと試みます。これは、ネットワークにアドレス以上のクライアントが存在しない場合にのみ機能します。
DHCPは、システム管理者の負担を軽減します。サーバの環境設定ファイルを編集して、アドレスに関するあらゆる変更(大きな変更であっても)と一般的なネットワークの環境設定を一元的に実装できます。これは、多数のワークステーションをいちいち再設定するのに比べてはるかに簡単です。また、特に新しいコンピュータをネットワークに統合する場合、IPアドレスをプールから割り当てられるので、作業が楽になります。適切なネットワークの環境設定をDHCPサーバから取得する方法は、日常的に、ラップトップをさまざまなネットワークで使用する場合に特に便利です。
この章では、192.168.2.1
をゲートウェイとし、DHCPサーバをワークステーション192.168.2.0/24
と同じサブネットで実行します。このサーバは、固定IPアドレス192.168.2.254
を持ち、2つのアドレス範囲(192.168.2.10
~192.168.2.20
および192.168.2.100
~192.168.2.200
)を操作対象とします。
DHCPサーバは、クライアントが使用するIPアドレスとネットマスクを供給するだけでなく、ホスト名、ドメイン名、ゲートウェイ、およびネームサーバアドレスも供給します。この他にも、DHCPを使用して一元的に設定できるパラメータがあり、たとえば、クライアントが現在時刻をポーリングするタイムサーバやプリントサーバも設定可能です。
32.1 YaSTによるDHCPサーバの設定 #
DHCPサーバをインストールするには、YaSTを起動して、
› の順に選択します。 › の順に選択してから、 を選択します。依存関係のあるパッケージのインストールを確認して、インストールプロセスを完了します。YaST DHCPモジュールは、サーバ設定をローカルに(DHCPサーバを実行するホスト上に)保存するか、その設定データをLDAPサーバに管理させるように、セットアップできます。LDAPを使用するには、LDAP環境を設定してからDHCPサーバを設定してください。
LDAPの詳細については、Chapter 5, LDAP with 389 Directory Serverを参照してください。
YaST DHCPモジュール(yast2-dhcp-server
)を使用すると、ローカルネットワーク用に独自のDHCPサーバをセットアップできます。このモジュールは、ウィザードモードまたはエキスパート設定モードで実行できます。
32.1.1 初期設定(ウィザード) #
このモジュールを初めて起動すると、ウィザードが開始して、サーバ管理に関していくつかの基本的な事項を決定するように要求されます。この初期セットアップを完了すると、必要最低限の機能が設定された基本的なサーバ設定が生成されます。エキスパートモードは、さらに高度な設定タスクを行う場合に使用できます。次の手順に従います。
そのリストから、DHCPサーバがリスンするインタフェースを選択し、図32.1「DHCPサーバ:カードの選択」」を参照してください。
、 を順にクリックします。「注記: DHCPとfirewalld
SUSE Linux Enterprise Server
15 SP2の firewalldをサポートしていないことに注意してください。DHCPポートを手動で開くには、次を実行しますtux >
sudo
firewall-cmd --zone=public --permanent --add-service=dhcp
tux >
sudo
firewall-cmd --reload
図 32.1: DHCPサーバ:カードの選択 #チェックボックスを使って、LDAPサーバがDHCP設定を自動的に格納する必要があるかどうかを指定します。テキストボックスに、DHCPサーバで管理する全クライアントのネットワークを指定します。この指定には、ドメイン名、タイムサーバのアドレス、プライマリネームサーバとセカンダリネームサーバのアドレス、印刷サーバとWINSサーバのアドレス(WindowsクライアントとLinuxクライアントの両方が混在するネットワークを使用する場合)、ゲートウェイアドレスおよびリース期間が含まれます。詳細については、図32.2「DHCPサーバ:グローバル設定」を参照してください。
図 32.2: DHCPサーバ:グローバル設定 #クライアントに対する動的IPアドレスの割り当て方法を設定します。そのためには、サーバがDHCPクライアントに割当て可能なIPアドレスの範囲を指定します。これらのアドレスは、すべて同じネットマスクを使用する必要があります。また、クライアントがリースの延長を要求せずにIPアドレスを維持できるリース期間も指定します。必要に応じて、最大リース期間、つまりサーバが特定のクライアントのIPアドレスを保持している期間を指定します。詳細については、図32.3「DHCPサーバ:ダイナミックDHCP」を参照してください。
図 32.3: DHCPサーバ:ダイナミックDHCP #DHCPサーバ開始方法を定義します。システムのブート時にDHCPサーバを自動的に起動するか、必要に応じて(たとえば、テスト目的で)手動で起動するか指定します。図32.4「DHCPサーバ:起動」を参照してください。
をクリックして、サーバの環境設定を完了します。詳細については、図 32.4: DHCPサーバ:起動 #前のステップで説明した方法で動的DHCPを使用するかわりに、アドレスを疑似静的方式で割り当てるようにサーバを設定することもできます。下部のテキストボックスを使用して、この方法で管理するホストのリストを指定します。具体的には、図32.5「DHCPサーバ:ホスト管理」を参照してください。
と に、この種のクライアントに与える名前とIPアドレスを指定し、さらに と (トークンリングまたはイーサネット)を指定します。上部に表示されるクライアントリストを修正するには、 、 、および を使用します。詳細については、図 32.5: DHCPサーバ:ホスト管理 #
32.1.2 DHCPサーバ設定(エキスパート) #
前述の環境設定方法に加えて、DHCPサーバのセットアップを詳細に変更できるようにエキスパート設定モードが用意されています。エキスパート環境設定を開始するには、図32.4「DHCPサーバ:起動」を参照)。
ダイアログの をクリックします(- chroot環境と宣言
この最初のダイアログで図32.6「DHCPサーバ:Chroot Jailと宣言」を参照してください。 を選択後、追加する宣言の種類を定義します。 から、サーバのログファイルの表示、TSIGキー管理の設定、およびDHCPサーバのセットアップに応じたファイアウォール設定の調整を行うことができます。
を選択し、既存の環境設定を編集可能にします。DHCPサーバの動作のうち、重要なのはchroot環境またはchroot jailで動作してサーバホストを保護する機能です。DHCPサーバが外部からの攻撃にさらされるとしても、攻撃者はchroot jailの中にとどまるためシステムの残りの部分には進入できません。ダイアログの下部には、定義済みの宣言を示すツリービューが表示されます。これらの修正には、 、 、および を使用します。 を選択すると、上級者用のダイアログが追加表示されます。図 32.6: DHCPサーバ:Chroot Jailと宣言 #- 宣言タイプの選択
DHCPサーバの図32.7「DHCPサーバ:宣言タイプの選択」を参照)。
は、多数の宣言で構成されています。このダイアログでは、宣言タイプ 、 、 、 、 、および を設定できます。この例は、新しいサブネットの選択を示しています(図 32.7: DHCPサーバ:宣言タイプの選択 #- サブネットの設定
このダイアログでは、IPアドレスとネットマスクを使用して新しいサブネットを指定できます。ダイアログの中央部分で
、 、および を使用して、選択したサブネットのDHCPサーバ起動オプションを変更します。サブネットのダイナミックDNSを設定するには、 を選択します。図 32.8: DHCPサーバ:サブネットの設定 #- TSIGキー管理
前のダイアログでダイナミックDNSを設定するように選択した場合は、セキュアゾーン転送用のキー管理を設定できます。図32.10「DHCPサーバ:ダイナミックDNS用のインタフェースの設定」を参照)。
を選択すると別のダイアログが表示され、ダイナミックDNSのインタフェースを設定できます(図 32.9: DHCPサーバ:TSIGの設定 #- ダイナミックDNS:インタフェースの設定
ここでは、図32.8「DHCPサーバ:サブネットの設定」を参照)。 を選択すると、エキスパート設定ダイアログに戻ります
を選択して、サブネットのダイナミックDNSを有効化できます。その後、ドロップダウンリストを使用して正引きゾーンと逆引きゾーン両方のTSIGキーを有効にして、そのキーがDNSとDHCPサーバに共通であることを確認します。 を使用すると、ダイナミックDNS環境に従ってグローバルDHCPサーバ設定を自動的に更新および調整できます。最後に、ダイナミックDNSに従って更新する正引きゾーンと逆引きゾーンについて、プライマリネームサーバの名前を個別に指定し、この2つのゾーンを定義します。 を選択すると、サブネットの設定ダイアログに戻ります(図 32.10: DHCPサーバ:ダイナミックDNS用のインタフェースの設定 #- ネットワークインタフェースの環境設定
DHCPサーバがリスンするインタフェースを定義し、ファイアウォール設定を調整するには、[エキスパート環境設定]ダイアログで
› の順に選択します。表示されるインタフェースリストから、DHCPサーバがリスンするインタフェースを1つ以上選択します。すべてのサブネット内のクライアントがサーバと通信できるようにする必要があり、サーバホストでもファイアウォールを実行する場合は、ファイアウォールを適宜調整してください。注記: DHCPとfirewalld
SUSE Linux Enterprise Server
15 SP2の firewalldをサポートしていないことに注意してください。DHCPポートを手動で開くには、次を実行しますtux >
sudo
firewall-cmd --zone=public --permanent --add-service=dhcp
tux >
sudo
firewall-cmd --reload
図 32.11: DHCPサーバ:ネットワークインタフェースとファイアウォール #
設定ステップをすべて完了した後、
を選択してダイアログを閉じます。これでサーバは新規環境設定に従って起動します。32.2 DHCPソフトウェアパッケージ #
SUSE Linux Enterprise Serverでは、DHCPサーバとDHCPクライアントのどちらも利用できます。使用可能なDHCPサーバは、Internet Systems Consortiumによって公開されたdhcpd
です。クライアント側には、dhcp-client
(同じくISCが公開)およびwicked
パッケージに付属のツールがあります。
デフォルトでは、wicked
ツールは、wickedd-dhcp4
およびwickedd-dhcp6
というサービスに付属してインストールされています。どちらもシステムをブートするたびに自動的に起動され、DHCPサーバを検出します。環境設定ファイルは必要ありません。標準的なセットアップであればほとんどの場合、そのまま使用できます。複雑な状況で使用する場合は、環境設定ファイル/etc/dhclient.conf
および/etc/dhclient6.conf
によって制御されるISC dhcp-client
を使用します。
32.3 DHCPサーバdhcpd #
DHCPシステムの中核には、動的ホスト環境設定プロトコルデーモンがあります。このサーバは、環境設定ファイル/etc/dhcpd.conf
に定義された設定に従ってアドレスを「リース」し、その使用状況を監視します。システム管理者は、このファイルのパラメータと値を変更して、プログラムの動作をさまざまな方法で調整できます。例32.1「環境設定ファイル/etc/dhcpd.conf」で、/etc/dhcpd.conf
ファイルの基本的な例を見てみましょう。
default-lease-time 600; # 10 minutes max-lease-time 7200; # 2 hours option domain-name "example.com"; option domain-name-servers 192.168.1.116; option broadcast-address 192.168.2.255; option routers 192.168.2.1; option subnet-mask 255.255.255.0; subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.20; range 192.168.2.100 192.168.2.200; }
DHCPサーバを用いてネットワーク内でIPアドレスを割り当てるには、このサンプルのような環境設定ファイルを用意すれば十分です。各行の末尾にセミコロンが付いていることに注意してください。これがなければ、dhcpdは起動しません。
サンプルファイルは、3つのセクションに分けられます。最初のセクションは、要求側クライアントにIPアドレスがリースされた場合に、デフォルトで最大何秒間経過すればリースの更新が必要になるか(デフォルトリース時間
)が定義されます。このセクションには、DHCPサーバがコンピュータにIPアドレスを割り当てた場合に、コンピュータが更新を求めずにそのIPアドレスを保持できる最大時間(max-lease-time
)も指定されています。
2つ目のセクションでは、基本的なネットワークパラメータがグローバルレベルで定義されています。
option domain-name
の行は、ネットワークのデフォルトドメインを定義してます。option domain-name-servers
エントリには、IPアドレスをホスト名(また逆方向に)に解決するためのDNSサーバを最大3つ指定します。ネームサーバは、DHCPをセットアップする前に、使用しているマシン上またはネットワーク上のどこか他の場所で設定するのが理想的です。また、ネームサーバでは、各ダイナミックアドレスに対してホスト名を定義し、またその逆も定義する必要があります。独自のネームサーバを設定する方法については、第31章 「ドメインネームシステム」を参照してください。option broadcast-address
の行は、要求しているクライアントで使用されるブロードキャストアドレスを定義します。option routers
の行では、ローカルネットワークでホストに配信できないデータパケットの送信先を(指定されたソース/ターゲットホストアドレスおよびサブネットに応じて)が指定されます。通常、特に小規模ネットワークでは、このルータはインターネットゲートウェイと同一です。option subnet-mask
では、クライアントに割り当てるネットマスクを指定します。
ファイルの最後のセクションでは、サブネットマスクを含め、ネットワークを定義します。最後に、DHCPが対象のクライアントにIPアドレスを割り当てるために使用するアドレス範囲を指定します。例32.1「環境設定ファイル/etc/dhcpd.conf」では、クライアントは192.168.2.10
~192.168.2.20
および192.168.2.100
~192.168.2.200
の範囲にある任意のアドレスを与えられます。
これら数行を編集すると、systemctl start dhcpd
コマンドを使用してDHCPデーモンを有効にできるようになります。DHCPデーモンはすぐに使用できます。rcdhcpd
check-syntax
コマンドを使用すると、簡単な構文チェックを実行できます。サーバでエラーが発生して中断する、起動時にdone
が返されないなど、環境設定に関して予期しない問題が発生した場合は、journalctl
コマンドで問い合わせることができるメインシステムログで情報を探せば、原因が突き止められます(第17章 「journalctl
:systemd
ジャーナルのクエリ」を参照してください)。
デフォルトのSUSE Linux Enterprise Serverシステムでは、セキュリティ上の理由から、chroot環境でDHCPデーモンを起動します。デーモンが見つけられるように、環境設定ファイルは、chroot環境にコピーします。通常は、systemctl start dhcpd
コマンドによって自動的にこのファイルがコピーされるので、手動でコピーする必要はありません。
32.3.1 固定IPアドレスを持つクライアント #
DHCPは、事前定義の静的アドレスを特定のクライアントに割り当てる場合にも使用できます。明示的に割り当てられるアドレスは、プールから割り当てられる動的アドレスに常に優先します。たとえばアドレスが不足していて、サーバがクライアント間でアドレスを再配布する必要がある場合でも、静的アドレスは動的アドレスと違って期限切れになりません。
静的アドレスを割り当てられたクライアントを識別するために、dhcpdは、ハードウェアアドレスを使用します。ハードウェアアドレスは、6つのオクテットペアで構成される世界で唯一の固定数値コードで、すべてのネットワークデバイスの識別に使用されます(たとえば、00:30:6E:08:EC:80
)。たとえば、例32.2「環境設定ファイルへの追加」のような数行を例32.1「環境設定ファイル/etc/dhcpd.conf」に示す環境設定ファイルに追加すると、DHCPデーモンはあらゆる状況で、対応するホストに同じデータのセットを割り当てます。
host jupiter { hardware ethernet 00:30:6E:08:EC:80; fixed-address 192.168.2.100; }
クライアントの名前を1行目に(host
HOSTNAME (ここではjupiter
に置き換わる))、MACアドレスを2行目に入力します。LinuxホストでMACアドレスを確認するには、ip
link show
コマンドの後にネットワークデバイス(たとえば、eth0
)を指定して実行します。出力例を次に示します。
link/ether 00:30:6E:08:EC:80
上の例では、MACアドレス00:30:6E:08:EC:80
を持つネットワークカードが装着されたクライアントに、IPアドレス192.168.2.100
とホスト名jupiter
が自動的に割り当てられます。指定するハードウェアの種類は、ほとんどの場合ethernet
ですが、IBMシステムでよく使用されるtoken-ring
もサポートされています。
32.3.2 SUSE Linux Enterprise Serverのバージョン #
セキュリティ向上のため、SUSE Linux Enterprise ServerバージョンのISC製DHCPサーバには、Ari Edelkind氏開発の非root/chrootパッチが付属しています。これにより、dhcpdをユーザID nobody
で実行したり、chroot環境で実行したりできます(/var/lib/dhcp
)。これの機能を使用するには、環境設定ファイルdhcpd.conf
が/var/lib/dhcp/etc
に存在する必要があります。initスクリプトは、起動時に環境設定ファイルをこのディレクトリに自動的にコピーします。
この機能に関するサーバの動作は、環境設定ファイル/etc/sysconfig/dhcpd
のエントリを使用して制御できます。非chroot環境でdhcpdを実行するには、/etc/sysconfig/dhcpd
内の変数DHCPD_RUN_CHROOTED
を「no」に設定します。
chroot環境内であっても、dhcpdを有効にしてホスト名を解決するには、次のような他の環境設定ファイルをコピーする必要があります。
/etc/localtime
/etc/host.conf
/etc/hosts
/var/run/netconfig/resolv.conf
これらのファイルは、initスクリプトの起動時に、/var/lib/dhcp/etc/
にコピーされます。コピーされたファイルが/etc/ppp/ip-up
のようなスクリプトによって動的に変更されている場合は、必要な変更箇所がないか注意する必要があります。ただし、環境設定ファイルに(ホスト名でなく) IPアドレスだけを指定している場合は、これについて考える必要はありません。
環境設定の中に、chroot環境にコピーすべき追加ファイルが存在する場合は、etc/sysconfig/dhcpd
ファイルのDHCPD_CONF_INCLUDE_FILES
変数で、これらのファイルを設定します。syslogデーモンの再起動後もDHCPログが継続して動作するようにするには、/etc/sysconfig/syslog
ファイル内のSYSLOGD_ADDITIONAL_SOCKET_DHCP
エントリを指定します。
32.4 その他の情報 #
DHCPの詳細については、Internet Systems ConsortiumのWebサイト(https://www.isc.org/dhcp/)を参照してください。また、dhcpd
、dhcpd.conf
、dhcpd.leases
、およびdhcp-options
のマニュアルページにも詳細が記載されています。