Contents

Linux - DHCP 伺服器

除了手動設置伺服器 IP ,最常用的就是 DHCP 動態主機設定協定 (Dynamic Host Configuration Protocol),除了常見的家用路由器有此功能外,也能在 RHEL 上架設私人的 DHCP Server。

1. DHCP 伺服器簡介

DHCP 伺服器是接收 LAN 內的 255.255.255.255 的 DHCPDISCOVER 廣播封包後,來發送 DHCPOFFER 給客戶端,並且會記錄客戶端的租借時間跟 MAC 地址,並且能設定發放的IP範圍及手動綁定MAC 地址所對應的 IP,對於發送多台區域網路內機器及管理有者不同的許用需求。


2. DHCP Server 安裝

DHCP Server 安裝方式十分容易 , 已經預設在 RHEL 8 的 BaseOS 倉庫裡,直接透過 yum 即可安裝

1
yum install dhcp-server -y

3. DHCP Server 設定

DHCP Server 設定檔路徑 : /etc/dhcp/dhcpd.conf

設定檔範例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100  192.168.0.150;  # 1
  option domain-name-servers 8.8.8.8;  # 2
  option domain-name "lab.example.com"; # 3
  option routers 192.168.0.1;  # 4
  option broadcast-address 192.168.0.255; # 5
  default-lease-time 600; # 6
  max-lease-time 7200;    # 7
}

host web.lab.example.com {
  hardware ethernet 52:54:00:01:fa:0c; # 8
  fixed-address 192.168.0.3;  # 9
}

範例說明 :

  1. IP 範圍為 192.168.0.100 - 192.168.0.150
  2. DNS Server為 8.8.8.8
  3. DNS 補齊名稱為 lab.example.com
  4. 預設路由閘道為 192.168.0.1
  5. 廣播地址為 192.168.0.255
  6. 預設租借時間為 600 s
  7. 最常租借時間為 7200 s
  8. 設定客戶端 MAC Address
  9. 固定此 MAC Address IP

4. 開通防火牆

1
2
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --reload
Tip
DHCP 預設使用 67/UDP 通訊。

5. 啟用服務

1
systemctl enable --now dhcpd

6. LAB 練習

Servera 設定 DHCP 伺服器並設定發放 IP 範圍為 10.10.10.20-30/24 ,且定義 ServerC 的 eth3 ( 52:54:00:16:36:5b ) 固定取得IP 為 10.10.10.100 ;可以使用 HowHow 第二版 Lab 環境

https://hackmd.io/_uploads/Hkacmmk5j.png

6.1 安裝 DHCP 伺服器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[root@servera ~]# yum install dhcp-server -y
Last metadata expiration check: 0:00:25 ago on Sun 01 Jan 2023 09:09:14 PM CST.
Dependencies resolved.
======================================================================================================
 Package                  Architecture        Version                       Repository           Size
======================================================================================================
Installing:
 dhcp-server              x86_64              12:4.3.6-48.el8               baseos              529 k
Upgrading:
 dhcp-client              x86_64              12:4.3.6-48.el8               baseos              317 k
 dhcp-common              noarch              12:4.3.6-48.el8               baseos              206 k
 dhcp-libs                x86_64              12:4.3.6-48.el8               baseos              147 k

6.2 配置檔設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cat >> /etc/dhcp/dhcpd.conf << EOF
> subnet 10.10.10.0 netmask 255.255.255.0 {
>   range 10.10.10.20  10.10.10.30;
> }
>
> host serverc {
>   hardware ethernet  52:54:00:16:36:5b;
>   fixed-address 10.10.10.100;
> }
> EOF

6.3 防火牆開通DHCP

1
2
3
4
[root@servera ~]# firewall-cmd --permanent --add-service=dhcp
success
[root@servera ~]# firewall-cmd --reload
success

6.4 配置 Server A 伺服器 IP

1
2
3
4
[root@servera ~]# nmcli con add con-name dhcpd ipv4.addresses 10.10.10.254/8 ipv4.method manual ifname eth3 type ethernet
Connection 'dhcpd' (3feeed58-3f7a-4b16-b083-d057cedb4815) successfully added.
[root@servera ~]# nmcli con up dhcpd
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/191)
Note
囿於 LAB 環境中 Server A 與 Server C 的 eth3 端口為同一個交換機上,要在此網路介面卡上配置 IP,才能使 Server C 客戶端自動取得。

6.4 啟動 DHCP 服務

1
2
3
4
5
6
[root@servera ~]# systemctl enable --now dhcpd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.
[root@servera ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
...

6.5 查看客戶端

  1. Server C 將會自動取得 10.10.10.100 IP ( 固定 )
1
2
3
4
[root@serverc ~]# ip -4 a s eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 10.10.10.100/24 brd 10.10.10.255 scope global dynamic noprefixroute eth3
       valid_lft 43055sec preferred_lft 43055sec
  1. Server B 將會取得範圍內 IP
1
2
3
4
[root@serverb ~]# ip -4 a s eth3
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 10.10.10.20/24 brd 10.10.10.255 scope global dynamic noprefixroute eth3
       valid_lft 42958sec preferred_lft 42958sec

7. 小節

DHCP Server 在內部私人網路十分方便,不僅配置容易,也能自定義所需來管理機器。



如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!