RHEL9で複数インターフェース・マルチセグメントのDHCPサーバを使ってみた

どうも、Tです。

今までWindowsのフリーソフトを使ってDHCP環境を作っていましたが、ちゃんと検証環境内にDHCPサーバを作ろうと思いRHELを使ってDHCPサーバを作ったので備忘録です。

スポンサーリンク
アドセンス1

環境

OS情報

vSphere上の仮想マシンとして動作しているRHELマシンを使用しています。

# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)

設定自体はあまり変更していません。下記部分くらいになります。

  • firewalld無効
  • SELinux有効
  • RHNへ登録済み

操作はすべてrootユーザーで行っています。

ネットワーク情報

DHCPサーバのNICには事前にIPアドレスなどを設定済みです。

# nmcli device show
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:50:56:82:03:FB
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 192.168.10.203/24
IP4.GATEWAY: 192.168.10.254
IP4.ROUTE[1]: dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.10.254, mt = 100
IP4.DNS[1]: 192.168.10.201
IP4.DNS[2]: 192.168.10.202
IP4.SEARCHES[1]: k.local.lab
IP6.ADDRESS[1]: fe80::250:56ff:fe82:3fb/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256

GENERAL.DEVICE: ens35
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:50:56:82:BA:06
GENERAL.MTU: 1500
GENERAL.STATE: 100 (接続済み)
GENERAL.CONNECTION: ens35
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8
WIRED-PROPERTIES.CARRIER: オン
IP4.ADDRESS[1]: 192.168.11.203/24
IP4.GATEWAY: 192.168.11.254
IP4.ROUTE[1]: dst = 192.168.11.0/24, nh = 0.0.0.0, mt = 101
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.11.254, mt = 101
IP4.DNS[1]: 192.168.10.201
IP4.DNS[2]: 192.168.10.202
IP4.SEARCHES[1]: k.local.lab
IP6.ADDRESS[1]: fe80::47f2:26cf:7273:102c/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024

GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 100 (接続済み (外部))
GENERAL.CONNECTION: lo
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ::1/128, nh = ::, mt = 256

やりたいこと

本記事ではDHCPサーバに2枚のNICでそれぞれ別のセグメントのクライアントにIPアドレスを配布します。

DHCPで配布する情報は、各NICで以下のを想定しています。

項目NIC1側NIC2側
ドメインk.local.labk.local.lab
LANセグメント192.168.10.0/24192.168.11.0/24
サブネットマスク255.255.255.0255.255.255.0
デフォルトゲートウェイ192.168.10.254192.168.11.254
IP割当範囲開始:192.168.10.220

終了:192.168.10.249

開始:192.168.11.220

終了:192.168.11.249

DNSサーバー192.168.10.201

192.168.10.202

192.168.10.201192.168.10.202
デフォルトリース時間 ※121600秒(6時間)
最大リース時間 ※186400(24時間)

※1:それそれ別設定ではなく、共通項目設定として扱う。

DHCPサーバインストール

DHCPサーバをインストールします。

# dnf install dhcp-server
同じセグメントにIPを配布するDHCPサーバが複数存在すると想定されない挙動になるなどトラブルの原因になります。DHCPサーバをインストールする前に、ネットワーク上ですでに動作しているDHCPサーバがある場合は、機能を停止しておきましょう。

DHCPサーバ設定

DHCPサーバの設定ファイルを編集します。

 # vi /etc/dhcp/dhcpd.conf

内容は下記になります。

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

# Common setting
default-lease-time 21600;
max-lease-time 86400;

# 192.168.10.0/24 settings
subnet 192.168.10.0 netmask 255.255.255.0 {
   range 192.168.10.220 192.168.10.249;
   option routers 192.168.10.254;
   option broadcast-address 192.168.10.0;
   option domain-name-servers 192.168.10.201,192.168.10.202;
   option domain-name "k.local.lab";
}


# 192.168.11.0/24 settings
subnet 192.168.11.0 netmask 255.255.255.0 {
    range 192.168.11.220 192.168.11.249;
    option routers 192.168.11.254;
    option broadcast-address 192.168.11.0;
    option domain-name-servers 192.168.10.201,192.168.10.202;
    option domain-name "k.local.lab";
 }

各設定の意味は下記のようになっています。

項目意味
default-lease-timeデフォルトのリース期間です。
max-lease-timeDHCPクライアントからリース延長要求があった場合に、延長される最大期間です。
subnet <ネットワーク> netmask <サブネットマスク>設定対象になるネットワークセグメントの指定です。{}内のオプション値が反映される範囲です。
range配布するIPアドレスの範囲です。
option routersデフォルトゲートウェイの指定です。
option broadcast-addressブロードキャストアドレスの指定です。
option domain-name-serversDNSサーバーの指定です。
option domain-nameドメイン名の指定です。

設定が終わったのち、「dhcpd -t」コマンドを実行し設定ファイルが正しいことを確認します。下記のようにエラーが表示さなければ、書式などの誤りなく正しい設定ファイルになっています。

# dhcpd -t
Internet Systems Consortium DHCP Server 4.4.2b1
Copyright 2004-2019 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

DHCPサービスの自動起動を有効にし、起動します。

 # systemctl enable dhcpd --now

正常に起動していることを確認します。

# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
     Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; preset: disabled)
     Active: active (running) since Fri 2023-07-28 10:15:42 JST; 54min ago
       Docs: man:dhcpd(8)
             man:dhcpd.conf(5)
   Main PID: 2642 (dhcpd)
     Status: "Dispatching packets..."
      Tasks: 1 (limit: 48800)
     Memory: 4.6M
        CPU: 15ms
     CGroup: /system.slice/dhcpd.service
             mq2642 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

 7月 28 10:15:42 k-util dhcpd[2642]: Sending on   LPF/ens33/00:50:56:82:03:fb/192.168.10.0/24
 7月 28 10:15:42 k-util dhcpd[2642]: Sending on   Socket/fallback/fallback-net
 7月 28 10:15:42 k-util dhcpd[2642]: Server starting service.
 7月 28 10:15:42 k-util systemd[1]: Started DHCPv4 Server Daemon.
 7月 28 10:23:18 k-util dhcpd[2642]: DHCPREQUEST for 192.168.10.221 from 00:50:56:82:9a:59 (tpl-rhel92) via ens33
 7月 28 10:23:18 k-util dhcpd[2642]: DHCPACK on 192.168.10.221 to 00:50:56:82:9a:59 (tpl-rhel92) via ens33
 7月 28 10:42:19 k-util dhcpd[2642]: DHCPREQUEST for 192.168.11.220 from 00:50:56:82:62:c0 (testwin10) via ens35
 7月 28 10:42:19 k-util dhcpd[2642]: DHCPACK on 192.168.11.220 to 00:50:56:82:62:c0 (testwin10) via ens35
 7月 28 10:53:18 k-util dhcpd[2642]: DHCPREQUEST for 192.168.10.221 from 00:50:56:82:9a:59 (tpl-rhel92) via ens33
 7月 28 10:53:18 k-util dhcpd[2642]: DHCPACK on 192.168.10.221 to 00:50:56:82:9a:59 (tpl-rhel92) via ens33

動作確認

それぞれのセグメントにDHCPクライアントを配置し、DHCPサーバからIPアドレスが取得できることを確認します。

今回は、DHCPクライアントにWindows 10を使用しています。

192.168.10.0/24側確認

DHCPサーバから取得できています。

192.168.11.0/24側確認

DHCPサーバから取得できています。

おまけ

DHCPサーバで払い出した情報は、dhcpd.leasesファイルに保存されています。

# cd /var/lib/dhcpd
# ls -lh
合計 8.0K
-rw-r--r--. 1 dhcpd dhcpd 1.6K  7月 28 11:33 dhcpd.leases
-rw-r--r--. 1 dhcpd dhcpd 1.2K  7月 28 11:32 dhcpd.leases~
-rw-r--r--. 1 dhcpd dhcpd    0 11月  3  2022 dhcpd6.leases

dhcpd.leasesファイルの中身は下記のようになっています。

# cat 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.4.2b1

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

----
長いため一部割愛
----

lease 192.168.11.220 {
  starts 5 2023/07/28 02:33:09;
  ends 5 2023/07/28 08:33:09;
  cltt 5 2023/07/28 02:33:09;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:50:56:82:62:c0;
  uid "\001\000PV\202b\300";
  set vendor-class-identifier = "MSFT 5.0";
  client-hostname "testwin10";
}
lease 192.168.10.221 {
  starts 5 2023/07/28 02:33:23;
  ends 5 2023/07/28 08:33:23;
  cltt 5 2023/07/28 02:33:23;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:50:56:82:9a:59;
  uid "\001\000PV\202\232Y";
  client-hostname "tpl-rhel92";
}

なお、「dhcpd.leases」「dhcpd.leases~」を手動で削除などはしてはいけません。これらはDHCPサーバが動作するために必要なファイルです。

詳細は、下記をご参照ください。

3.12. 破損したリースデータベースの復元 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.

参考

公式

14.2. DHCP サーバーの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.
16.4. マルチホーム DHCP サーバーの設定 Red Hat Enterprise Linux 6 | Red Hat Customer Portal
Access Red Hat’s knowledge, guidance, and support through your subscription.

ブログ

How to Configure DHCP Server on RHEL 9 / Rocky Linux 9
In this post, we will show you how to install dhcp server on RHEL 9 or Rocky Linux 9. DHCP server dynamically assigns IP addresses to the client systems

まとめ

思っていた以上に簡単にDHCPが作れました。本番環境ではルータを経由したリレーなどの考慮も必要ですが、検証環境であればLinuxでさくっとDHCPサーバーを作るのはありですね。

スポンサーリンク
アドセンス1
アドセンス1
ブログランキング・にほんブログ村へ

シェアする

フォローする