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
[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
を編集して以下を追加します。
DHCPDARGS="ens192" # DHCPDサービスを使いたい Interface 名
このDHCPDARGS
は、dchpd.service
内の DHCPD サービスの起動コマンドの引数に渡されます。
###3.2.3 dhcpd.conf の編集
次に /etc/dhcp/dhcpd.conf
を編集します。
始めは何も書かれてないはずです。以下のように編集します。
$ vi /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