自宅でDHCPサーバ構築実践(dhcpd/CentOS 8)

インフラサーバ

今回は CentOS 8.0 と dhcpd 4.3.6 を使ってDHCPサーバを構築してみます。

※CentOS 8 のインストールから始める方はまずは以下の記事からどうぞ

DHCPサーバ構築の流れ

  1. dhcp-server のインストール
  2. コンフィグファイル(dhcpd.conf)の編集
  3. クライアントでの動作確認
  4. DHCPサーバのログの確認

DHCPサーバ構築

dhcp-server のインストール

まずDHCPサーバを構築するために必要なパッケージをインストールします。

以下のコマンドでDCHP関連のパッケージを確認します。

yum search dhcp
メタデータの期限切れの最終確認: 0:46:35 時間前の 2019年11月17日 12時37分17秒 に実施しました。
============================================== 名前 & 概要 一致: dhcp ===============================================
dhcp-server.i686 : Provides the ISC DHCP server
dhcp-server.x86_64 : Provides the ISC DHCP server
dhcp-relay.x86_64 : Provides the ISC DHCP relay agent
dhcp-libs.x86_64 : Shared libraries used by ISC dhcp client and server
dhcp-libs.i686 : Shared libraries used by ISC dhcp client and server
dhcp-libs.x86_64 : Shared libraries used by ISC dhcp client and server
dhcp-client.x86_64 : Provides the ISC DHCP client daemon and dhclient-script
dhcp-client.i686 : Provides the ISC DHCP client daemon and dhclient-script
dhcp-client.x86_64 : Provides the ISC DHCP client daemon and dhclient-script
dhcp-common.noarch : Common files used by ISC dhcp client, server and relay agent
dhcp-common.noarch : Common files used by ISC dhcp client, server and relay agent
================================================== 概要 一致: dhcp ==================================================
bind-export-libs.x86_64 : ISC libs for DHCP application
bind-export-libs.i686 : ISC libs for DHCP application
bind-export-libs.x86_64 : ISC libs for DHCP application
dnsmasq.x86_64 : A lightweight DHCP/caching DNS server
dnsmasq.x86_64 : A lightweight DHCP/caching DNS server
dnsmasq-utils.x86_64 : Utilities for manipulating DHCP server leases

DHCPサーバ構築を説明しているいくつかのページでは、パッケージとして dhcp をインストールすると説明されていましたが、CentOS 8 では dhcp というパッケージは無く代わりに dhcp-serverというパッケージがありました。
以下コマンドで dhcp-server の詳細を確認してみます。

yum info dhcp-server
メタデータの期限切れの最終確認: 0:48:15 時間前の 2019年11月17日 12時37分17秒 に実施しました。
利用可能なパッケージ
名前         : dhcp-server
エポック     : 12
バージョン   : 4.3.6
リリース     : 30.el8
アーキテクチ : i686
サイズ       : 553 k
ソース       : dhcp-4.3.6-30.el8.src.rpm
Repo         : BaseOS
概要         : Provides the ISC DHCP server
URL          : http://isc.org/products/DHCP/
ライセンス   : ISC
説明         : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
             : individual devices on an IP network to get their own network
             : configuration information (IP address, subnetmask, broadcast address,
             : etc.) from a DHCP server. The overall purpose of DHCP is to make it
             : easier to administer a large network.
             : 
             : This package provides the ISC DHCP server.

名前         : dhcp-server
エポック     : 12
バージョン   : 4.3.6
リリース     : 30.el8
アーキテクチ : x86_64
サイズ       : 529 k
ソース       : dhcp-4.3.6-30.el8.src.rpm
Repo         : BaseOS
概要         : Provides the ISC DHCP server
URL          : http://isc.org/products/DHCP/
ライセンス   : ISC
説明         : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
             : individual devices on an IP network to get their own network
             : configuration information (IP address, subnetmask, broadcast address,
             : etc.) from a DHCP server. The overall purpose of DHCP is to make it
             : easier to administer a large network.
             : 
             : This package provides the ISC DHCP server.

上の内容より dhcp-server をインストールすれば大丈夫そうなので、インストールします。

yum -y install dhcp-server
(略)
インストール済み:
  dhcp-server-12:4.3.6-30.el8.x86_64

完了しました!

dhcp-server のインストールができました。

コンフィグファイル(dhcpd.conf)の編集

DHCPサーバのコンフィグファイルは dhcpd.conf です。パスは以下の通りです。

/etc/dhcp/dhcpd.conf
ls -l
合計 12
-rw-r--r--. 1 root root 513  5月 11  2019 dhclient.conf
drwxr-xr-x. 2 root root  23  5月 11  2019 dhclient.d
-rw-r--r--. 1 root root 123  5月 11  2019 dhcpd.conf
-rw-r--r--. 1 root root 126  5月 11  2019 dhcpd6.conf

dhcpd.conf の内容はデフォルトでは空になっています。#はコメントアウトを意味しています。
#より右側にある文字列は設定としては認識されないということです。

cat dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

それでは設定をしていきます。今回は以下のネットワークを想定します。

注意点
同じネットワーク内にDHCPサーバが2台以上存在すると上手くいきません。
ルータでDHCP機能が動作している場合はDHCP機能をOFFにしておいてください。

必要に応じて dhcpd.conf のバックアップを取ってから編集します。
今回のDHCPサーバのパラメータは以下の通りです。

パラメータ

  1. 対象ネットワークアドレス:192.168.179.0 /24
  2. 払い出すIPアドレスの範囲:192.168.179.30 ~ 192.168.179.50
  3. DNSサーバ:192.168.179.1
  4. デフォルトゲートウェイ:192.168.179.1
  5. ブロードキャストアドレス:192.168.179.255
  6. リースタイム:86400秒(24時間)
  7. 最大リースタイム:129600秒(36時間)

編集後の dhcpd.conf の内容は以下の通りです。
上のパラメータの番号と下の設定内容の行番号が対応しています。

subnet 192.168.179.0 netmask 255.255.255.0 {
range 192.168.179.30 192.168.179.50;
option domain-name-servers 192.168.179.1;
option routers 192.168.179.1;
option broadcast-address 192.168.179.255;
default-lease-time 86400;
max-lease-time 129600;
}

1行目の【 subnet 192.168.179.0 netmask 255.255.255.0 {】から8行目の【}】までの {} の中がネットワーク 192.168.179.0 に関する設定のまとまりになっています。

dhcpd.conf の構文チェック

dhcpd -t コマンドで dhcpd.conf の構文チェックができます。

dhcpd -t
Internet Systems Consortium DHCP Server 4.3.6
Copyright 2004-2017 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
ldap_gssapi_principal is not set,GSSAPI Authentication for LDAP will not be used
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases

上はエラーが無い場合の出力です。エラーがある場合はエラーメッセージが出力されます。

dhcpd サービスの起動

コンフィグファイルの編集が完了したら、dhcpd サービスを起動させます。

systemctl start dhcpd
systemctl enable dhcpd ←★自動起動設定

クライアントでの動作確認

クライアント側でDHCPサーバからネットワーク情報を取得できるかを確認します。

ネットワークアダプタの設定

ネットワークアダプタの設定で、IPアドレスとDNSサーバアドレスを自動取得する設定とします。

ネットワーク情報の再取得

コマンドプロンプトでコマンドを実行します。

既に別のDHCPサーバからネットワーク情報を取得している場合は、以下コマンドで一旦設定をリリースします。

ipconfig /release

その後、以下コマンドを実行しDHCPサーバからネットワーク情報を再取得します。

ipconfig /renew

(略)

Wireless LAN adapter Wi-Fi 2:

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 2001:268:c084:a515:8c4a:9856:1588:7abb
   一時 IPv6 アドレス. . . . . . . . . .: 2001:268:c084:a515:14b2:abd9:929b:a036
   リンクローカル IPv6 アドレス. . . . .: fe80::8c4a:9856:1588:7abb%12
   IPv4 アドレス . . . . . . . . . . . .: 192.168.179.30
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::6ee4:daff:fee7:75f%12
                                          192.168.179.1

DHCPサーバから情報取得できたようです。詳しいネットワーク情報を確認してみます。

ipconfig /all

(略)

Wireless LAN adapter Wi-Fi 2:

   接続固有の DNS サフィックス . . . . .:
   説明. . . . . . . . . . . . . . . . .: BUFFALO WI-U2-433DHP Wireless LAN Adapter
   物理アドレス. . . . . . . . . . . . .: 84-AF-EC-74-B8-6F
   DHCP 有効 . . . . . . . . . . . . . .: はい
   自動構成有効. . . . . . . . . . . . .: はい
   IPv6 アドレス . . . . . . . . . . . .: 2001:268:c084:a515:8c4a:9856:1588:7abb(優先)
   一時 IPv6 アドレス. . . . . . . . . .: 2001:268:c084:a515:14b2:abd9:929b:a036(優先)
   リンクローカル IPv6 アドレス. . . . .: fe80::8c4a:9856:1588:7abb%12(優先)
   IPv4 アドレス . . . . . . . . . . . .: 192.168.179.30(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   リース取得. . . . . . . . . . . . . .: 2019年11月17日 15:58:49
   リースの有効期限. . . . . . . . . . .: 2019年11月18日 13:41:57
   デフォルト ゲートウェイ . . . . . . .: fe80::6ee4:daff:fee7:75f%12
                                          192.168.179.1
   DHCP サーバー . . . . . . . . . . . .: 192.168.179.5
   DHCPv6 IAID . . . . . . . . . . . . .: 361017324
   DHCPv6 クライアント DUID. . . . . . .: 00-01-00-01-1F-1D-13-6B-70-85-C2-02-64-6D
   DNS サーバー. . . . . . . . . . . . .: fe80::6ee4:daff:fee7:75f%12
                                          192.168.179.1
   NetBIOS over TCP/IP . . . . . . . . .: 有効

DHCPサーバに設定した通りのネットワーク設定が取得できています。

DHCPサーバのログの確認

以下ファイルにDHCPクライアントのリース情報が記録されています。

/var/lib/dhcpd/dhcpd.leases
cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.6

# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;

lease 192.168.179.30 {
  starts 0 2019/11/17 04:42:00;
  ends 1 2019/11/18 04:42:00;
  tstp 1 2019/11/18 04:42:00;
  cltt 0 2019/11/17 04:42:00;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 84:af:ec:74:b8:6f;
  uid "\001\204\257\354t\270o";
  set vendor-class-identifier = "MSFT 5.0";
  client-hostname "クライアントホスト名";
}
server-duid "\000\001\000\001%c\213\254`g W,l";

また /var/log/messages にもログが記録されます。

tail -n 30 /var/log/messages
(略)
Nov 17 16:37:45 testSV dhcpd[18086]: DHCPDISCOVER from 84:af:ec:74:b8:6f ("クライアントホスト名") via wlp2s0
Nov 17 16:37:46 testSV dhcpd[18086]: DHCPOFFER on 192.168.179.30 to 84:af:ec:74:b8:6f ("クライアントホスト名") via wlp2s0
Nov 17 16:37:46 testSV dhcpd[18086]: DHCPREQUEST for 192.168.179.30 (192.168.179.5) from 84:af:ec:74:b8:6f ("クライアントホスト名") via wlp2s0
Nov 17 16:37:46 testSV dhcpd[18086]: DHCPACK on 192.168.179.30 to 84:af:ec:74:b8:6f ("クライアントホスト名") via wlp2s0
(略)

DHCPのメッセージの流れが確認できます。

以上です。

―――――――――――――

タイトルとURLをコピーしました