目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 管理ガイド / サービス / DHCP
適用項目 SUSE Linux Enterprise Server 15 SP3

32 DHCP

DHCP(「Dynamic Host Configuration Protocol」)の目的は、ネットワーク設定を各ワークステーションでローカルに行うのではなく、(サーバから)一元的に割り当てることです。DHCPを使用するように設定されたクライアントは、自身の静的アドレスを制御できません。サーバからの指示に従って、すべてが自動的に設定されるからです。クライアント側でNetworkManagerを使用する場合は、クライアントを設定する必要はありません。これは、環境を変更し、一度に1つのインタフェースしかない場合に便利です。DHCPサーバが実行しているマシン上ではNetworkManagerを使用しないでください。

ヒント
ヒント: IBM Z: DHCPのサポート

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.10192.168.2.20および192.168.2.100192.168.2.200)を操作対象とします。

DHCPサーバは、クライアントが使用するIPアドレスとネットマスクを供給するだけでなく、ホスト名、ドメイン名、ゲートウェイ、およびネームサーバアドレスも供給します。この他にも、DHCPを使用して一元的に設定できるパラメータがあり、たとえば、クライアントが現在時刻をポーリングするタイムサーバやプリントサーバも設定可能です。

32.1 YaSTによるDHCPサーバの設定

DHCPサーバをインストールするには、YaSTを起動して、ソフトウェア › ソフトウェア管理の順に選択します。フィルタ › パターンの順に選択してから、DHCPおよびDNSサーバを選択します。依存関係のあるパッケージのインストールを確認して、インストールプロセスを完了します。

重要
重要: LDAPのサポート

YaST DHCPモジュールは、サーバ設定をローカルに(DHCPサーバを実行するホスト上に)保存するか、その設定データをLDAPサーバに管理させるように、セットアップできます。LDAPを使用するには、LDAP環境を設定してからDHCPサーバを設定してください。

LDAPの詳細については、Chapter 5, LDAP with 389 Directory Serverを参照してください。

YaST DHCPモジュール(yast2-dhcp-server)を使用すると、ローカルネットワーク用に独自のDHCPサーバをセットアップできます。このモジュールは、ウィザードモードまたはエキスパート設定モードで実行できます。

32.1.1 初期設定(ウィザード)

このモジュールを初めて起動すると、ウィザードが開始して、サーバ管理に関していくつかの基本的な事項を決定するように要求されます。この初期セットアップを完了すると、必要最低限の機能が設定された基本的なサーバ設定が生成されます。エキスパートモードは、さらに高度な設定タスクを行う場合に使用できます。以下に手順を示します。

  1. そのリストから、DHCPサーバがリスンするインタフェースを選択し、選択次へを順にクリックします。図32.1「DHCPサーバ: カードの選択」を参照してください。

    注記
    注記: DHCPとfirewalld

    Open Firewall for Selected Interfaces (選択したインタフェース用にファイアウォールを開く)オプションはSUSE Linux Enterprise Server15 SP3 firewalldをサポートしていないことに注意してください。DHCPポートを手動で開くには、次を実行します

           tux > sudo firewall-cmd --zone=public --permanent --add-service=dhcp
           tux > sudo firewall-cmd --reload
    DHCPサーバ: カードの選択
    図 32.1: DHCPサーバ: カードの選択
  2. チェックボックスを使って、LDAPサーバがDHCP設定を自動的に格納する必要があるかどうかを指定します。テキストボックスに、DHCPサーバで管理する全クライアントのネットワークを指定します。この指定には、ドメイン名、タイムサーバのアドレス、プライマリネームサーバとセカンダリネームサーバのアドレス、印刷サーバとWINSサーバのアドレス(WindowsクライアントとLinuxクライアントの両方が混在するネットワークを使用する場合)、ゲートウェイアドレスおよびリース期間が含まれます。図32.2「DHCPサーバ: グローバル設定」を参照してください。

    DHCPサーバ: グローバル設定
    図 32.2: DHCPサーバ: グローバル設定
  3. クライアントに対する動的IPアドレスの割り当て方法を設定します。そのためには、サーバがDHCPクライアントに割当て可能なIPアドレスの範囲を指定します。これらのアドレスは、すべて同じネットマスクを使用する必要があります。また、クライアントがリースの延長を要求せずにIPアドレスを維持できるリース期間も指定します。必要に応じて、最大リース期間、つまりサーバが特定のクライアントのIPアドレスを保持している期間を指定します。図32.3「DHCPサーバ: ダイナミックDHCP」を参照してください。

    DHCPサーバ: ダイナミックDHCP
    図 32.3: DHCPサーバ: ダイナミックDHCP
  4. DHCPサーバ開始方法を定義します。システムのブート時にDHCPサーバを自動的に起動するか、必要に応じて(たとえば、テスト目的で)手動で起動するか指定します。完了をクリックして、サーバの環境設定を完了します。図32.4「DHCPサーバ: 起動」を参照してください。

    DHCPサーバ: 起動
    図 32.4: DHCPサーバ: 起動
  5. 前のステップで説明した方法で動的DHCPを使用するかわりに、アドレスを疑似静的方式で割り当てるようにサーバを設定することもできます。下部のテキストボックスを使用して、この方法で管理するホストのリストを指定します。具体的には、名前IPアドレスに、この種のクライアントに与える名前とIPアドレスを指定し、さらにハードウェアアドレスネットワークタイプ(トークンリングまたはイーサネット)を指定します。上部に表示されるクライアントリストを修正するには、追加編集、および削除を使用します。図32.5「DHCPサーバ: ホスト管理」を参照してください。

    DHCPサーバ: ホスト管理
    図 32.5: DHCPサーバ: ホスト管理

32.1.2 DHCPサーバ設定(エキスパート)

前述の環境設定方法に加えて、DHCPサーバのセットアップを詳細に変更できるようにエキスパート設定モードが用意されています。エキスパート環境設定を開始するには、スタートアップダイアログのDHCPサーバエキスパート環境設定をクリックします(図32.4「DHCPサーバ: 起動」を参照)。

Chroot環境と宣言

この最初のダイアログでDHCPサーバの起動を選択し、既存の環境設定を編集可能にします。DHCPサーバの動作のうち、重要なのはchroot環境またはchroot jailで動作してサーバホストを保護する機能です。DHCPサーバが外部からの攻撃にさらされるとしても、攻撃者はchroot jailの中にとどまるためシステムの残りの部分には進入できません。ダイアログの下部には、定義済みの宣言を示すツリービューが表示されます。これらの修正には、追加削除、および編集を使用します。詳細を選択すると、上級者用のダイアログが追加表示されます。図32.6「DHCPサーバ: chroot jailと宣言」を参照してください。追加を選択した後で、追加する宣言のタイプを定義します。[詳細]で、サーバのログファイルを表示し、TSIGキー管理を設定し、DHCPサーバのセットアップに従ってファイアウォールの環境設定を調整します。

DHCPサーバ: chroot jailと宣言
図 32.6: DHCPサーバ: chroot jailと宣言
宣言タイプの選択

DHCPサーバのグローバルオプションは、多数の宣言で構成されています。このダイアログでは、宣言タイプサブネットホスト共有ネットワークグループアドレスプール、およびクラスを設定できます。この例は、新しいサブネットの選択を示しています(図32.7「DHCPサーバ: 宣言タイプの選択」を参照)。

DHCPサーバ: 宣言タイプの選択
図 32.7: DHCPサーバ: 宣言タイプの選択
サブネットの設定

このダイアログでは、IPアドレスとネットマスクを使用して新しいサブネットを指定できます。ダイアログの中央部分で追加編集、および削除を使用して、選択したサブネットのDHCPサーバ起動オプションを変更します。サブネットのダイナミックDNSを設定するには、ダイナミックDNSを選択します。

DHCPサーバ: サブネットの設定
図 32.8: DHCPサーバ: サブネットの設定
TSIGキー管理

前のダイアログでダイナミックDNSを設定するように選択した場合は、セキュアゾーン転送用のキー管理を設定できます。OKを選択すると別のダイアログが表示され、ダイナミックDNSのインタフェースを設定できます(図32.10「DHCPサーバ: ダイナミックDNS用のインタフェースの設定」を参照)。

DHCPサーバ: TSIGの設定
図 32.9: DHCPサーバ: TSIGの設定
ダイナミックDNS: インタフェースの設定

ここでは、このサブネットでダイナミックDNSを有効にするを選択して、サブネットのダイナミックDNSを有効化できます。その後、ドロップダウンリストを使用して正引きゾーンと逆引きゾーン両方のTSIGキーを有効にして、そのキーがDNSとDHCPサーバに共通であることを確認します。グローバルダイナミックDNS設定の更新を使用すると、ダイナミックDNS環境に従ってグローバルDHCPサーバ設定を自動的に更新および調整できます。最後に、ダイナミックDNSに従って更新する正引きゾーンと逆引きゾーンについて、プライマリネームサーバの名前を個別に指定し、この2つのゾーンを定義します。OKを選択すると、サブネットの設定ダイアログに戻ります(図32.8「DHCPサーバ: サブネットの設定」を参照)。OKを選択すると、エキスパート設定ダイアログに戻ります

DHCPサーバ: ダイナミックDNS用のインタフェースの設定
図 32.10: DHCPサーバ: ダイナミックDNS用のインタフェースの設定
注記
注記: ignore client-updatesオプション

ゾーンのダイナミックDNSを有効にすると、YaSTはクライアント互換性を改善するため、ignore client-updatesオプションを自動的に追加します。不要な場合は、このオプションを無効にすることができます。

ネットワークインタフェースの環境設定

DHCPサーバがリスンするインタフェースを定義し、ファイアウォール設定を調整するには、[エキスパート環境設定]ダイアログで詳細 › インタフェースの設定の順に選択します。表示されるインタフェースリストから、DHCPサーバがリスンするインタフェースを1つ以上選択します。すべてのサブネット内のクライアントがサーバと通信できるようにする必要があり、サーバホストでもファイアウォールを実行する場合は、ファイアウォールを適宜調整してください。

注記
注記: DHCPとfirewalld

Open Firewall for Selected Interfaces (選択したインタフェース用にファイアウォールを開く)オプションはSUSE Linux Enterprise Server15 SP3 firewalldをサポートしていないことに注意してください。DHCPポートを手動で開くには、次を実行します

        tux > sudo firewall-cmd --zone=public --permanent --add-service=dhcp
        tux > sudo firewall-cmd --reload
DHCPサーバ: ネットワークインタフェースとファイアウォール
図 32.11: DHCPサーバ: ネットワークインタフェースとファイアウォール

設定ステップをすべて完了した後、OKを選択してダイアログを閉じます。これでサーバは新規環境設定に従って起動します。

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ファイルの基本的な例を見てみましょう。

例 32.1: 環境設定ファイル/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.10192.168.2.20および192.168.2.100192.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デーモンはあらゆる状況で、対応するホストに同じデータのセットを割り当てます。

例 32.2: 環境設定ファイルへの追加
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_CHROOTEDnoに設定します。

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/)を参照してください。また、dhcpddhcpd.confdhcpd.leases、およびdhcp-optionsのマニュアルページにも詳細が記載されています。