3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RHEL 8 で DHCPサーバーを構築する

Last updated at Posted at 2020-09-21

1.環境

RHEL8.2 を使用しました。

$ cat /etc/redhat-release 
Red Hat Enterprise Linux release 8.2 (Ootpa)
$

2.作業に必要な基本コマンド

後々でいろいろとコマンドを使用する事になるので、参照用にコマンドの一覧をリストしておきます。

# 起動   
$ systemctl start dhcpd

# 停止
$ systemctl stop dhcpd

# ステータスの確認
$ systemctl status dhcpd

# 自動起動
$ systemctl enable dhcpd

# 自動起動設定確認
$ systemctl is-enabled dhcpd

# ファイルの構文確認
$ dhcpd -t

3.DHCP サーバーのインストールと構成

##3.1 dhcpd のインストール

yum で dhcp-server をインストールします。

$ yum install -y dhcp-server
Updating Subscription Management repositories.
Last metadata expiration check: 2:43:50 ago on Tue Sep  8 22:55:55 2020.
Dependencies resolved.
===================================================================================================================
 Package        Architecture        Version              Repository                        Size
===================================================================================================================
Installing:
 dhcp-server     x86_64          12:4.3.6-40.el8       rhel-8-for-x86_64-baseos-rpms        529 k

Transaction Summary

<省略>     
                                                                                                                                                

Installed:
  dhcp-server-12:4.3.6-40.el8.x86_64

Complete!
[root@ns1 dhcp]#

##3.2. dhcpd の設定

###3.2.1 dhcpd.service の編集

サンプルの設定ファイルをコピーします。

$ cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

上記でコピーした /etc/systemd/system/dhcpd.service を編集します。

(追記:後から気づいたのですが、この後、dhcpd.service を編集して dhcpd を使用するインターフェイスを指定するのですが、ここで書いてる方法より「3.2.2 dhcpd でインターフェイスを指定する方法」を使用した方がスマートです。)

この例では特定の Interface の ens256にだけ DHCP を有効にします。IPv4の例です。
※IPv6の場合は、設定ファイル名は /etc/dhcp/dhcpd6.conf で、systemd サービス名 も dhcpd6になります。

$ vim /etc/systemd/system/dhcpd.service
/etc/systemd/system/dhcpd.service
[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
Wants=network-online.target
After=network-online.target
After=time-sync.target

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/dhcpd
# 以下のラインを変更する。DHCP Server に使用するインターフェイス ens256 を追加する。
# ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS  ens256
StandardError=null

[Install]
WantedBy=multi-user.target

###3.2.2 dhcpd でインターフェイスを指定する方法

後から気づいたのです、dchpd.service のファイルを直接編集しなくても dhcpd で使用するインターフェイスを指定できます。
/etc/sysconfig/dhcpd を編集して以下を追加します。

/etc/sysconfig/dhcpd
DHCPDARGS="ens192"   # DHCPDサービスを使いたい Interface 名

このDHCPDARGS は、dchpd.service 内の DHCPD サービスの起動コマンドの引数に渡されます。

###3.2.3 dhcpd.conf の編集

次に /etc/dhcp/dhcpd.conf を編集します。
始めは何も書かれてないはずです。以下のように編集します。

$ vi /etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
option domain-name "example.com";
default-lease-time 86400;

authoritative;

subnet 192.0.2.0 netmask 255.255.255.0 {
  range 192.0.2.20 192.0.2.99;          # IP Address のレンジ
  option domain-name-servers 192.0.2.100;    # DNS Server のアドレス。この例は DHCP と DNS兼用なので自アドレス。
  option routers 192.0.2.1;            # DHCPクライアントに、GatewayのIPとして渡される。
  option broadcast-address 192.0.2.255;
  max-lease-time 172800;
}

編集が終わったら、設定をリロードして dhcpd を起動します。

設定ファイルの構文を確認します。

$ dhcpd -t

リロードします。

$ systemctl daemon-reload

再起動します

$ systemctl start dhcpd

# ステータスを確認します。
$ systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/etc/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-09-09 10:51:32 EDT; 10s ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 39370 (dhcpd)
   Status: "Dispatching packets..."
    Tasks: 1 (limit: 23426)
   Memory: 4.8M
   CGroup: /system.slice/dhcpd.service
           └─39370 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid ens256

Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Config file: /etc/dhcp/dhcpd.conf
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Database file: /var/lib/dhcpd/dhcpd.leases
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: PID file: /var/run/dhcpd.pid
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Source compiled to use binary-leases
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Wrote 0 leases to leases file.
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Listening on LPF/ens256/00:50:56:96:49:d2/192.0.2.0/24
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Sending on   LPF/ens256/00:50:56:96:49:d2/192.0.2.0/24
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Sending on   Socket/fallback/fallback-net
Sep 09 10:51:32 ns1.example.com dhcpd[39370]: Server starting service.
Sep 09 10:51:32 ns1.example.com systemd[1]: Started DHCPv4 Server Daemon.

# 自動起動を有効にしておきます。
$ systemctl enable dhcpd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /etc/systemd/system/dhcpd.service.

以上で、DHCPサーバーのインストールは完了です。

4.ログの確認

以下のコマンドで dhcpd のログが確認できます。

tail -f /var/log/messages | grep dhcp
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?