DHCP(動態主機配置協議的縮寫)動態地將唯一的 IP 地址和其他信息分配給客戶端系統。 DHCP 分配的一些信息包括主機名、域名、默認網關和 DNS 服務器的 IP 地址。系統管理員可以避免手動為每個客戶端系統分配 IP 地址和相關信息。在家庭和小型企業設置中,路由器通常充當 DHCP 服務器。但是,對於較大的設置,應將專用服務器配置為 DHCP 服務器。 在 Linux 上,您可以輕鬆設置 DHCP 服務器為您的客戶端分配 IP 地址。
本教程展示瞭如何在 Linux 上配置 DHCP 以自動為客戶端分配 IP 地址。
DHCP 的工作原理
讓我們稍微談談 DHCP 的工作原理。
考慮客戶端和 DHCP 服務器連接到同一個有線網絡的場景。
- 客戶端機器開機時發送廣播消息 DHCP 檢測 到您網絡上的所有設備。
- 當此消息到達 DHCP 服務器時,DHCP 服務器 DHCP 提供 包含發送給客戶端的 IP 地址的消息。
- 那麼客戶應該 DHCP 請求 從 DHCP 服務器請求此 IP 地址。
- 然後 DHCP 服務器將發送它。 DHCPACK 檢查請求並提供客戶端 IP 地址。
先決條件
- 最少 2 台 Linux 機器(用於 DHCP 服務器和客戶端)
- 用戶的 sudo 權限
- 使用 DHCP 服務器配置的靜態 IP
筆記:
出於演示目的,我在同一個 LAN 上使用了 3 台 Linux 機器。您可以將它們視為通過交換機相互連接。
DHCP 服務器
對於使用的 DHCP 服務器:
- 具有靜態 IP ‘192.168.9.1’ 和主機名 ‘ubuntu’ 的 Ubuntu 20.04 LTS
DHCP客戶端
我們為 DHCP 客戶端使用了兩台機器:
- 主機名為“mypc”的 Ubuntu 20.04
- 主機名為“mint”的 Mint 20
安裝 DHCP 服務器
首先,更新系統上的系統存儲庫索引。為此,請在終端中發出以下命令:
$ sudo apt update
通過在終端中發出以下命令來安裝 DHCP 服務器:
$ sudo apt-get install isc-dhcp-server -y
DHCP 服務器配置
在將您的 Linux 系統配置為 DHCP 服務器之前,請確保它已配置靜態 IP 地址,以便客戶端可以輕鬆連接到它。否則,客戶端將很難找到要連接的 DHCP 服務器。
裡面 /etc/default/isc-dhcp-server 該文件必須指定 DHCP 服務器偵聽的接口。要編輯此文件,請在終端中發出以下命令:
$ sudo nano /etc/default/isc-dhcp-server
裡面 接口 v4e首先指定DHCP服務器監聽的接口,如ens33、eth0、eth1。
INTERFACESv4="interface_name"
在這種情況下,接口是 ens33,因此條目更改為:
INTERFACESv4="ens33"
配置文件後,保存並關閉它。
然後使用位於以下位置的默認配置文件配置 DHCP 服務器: /etc/dhcp/dhcpd.conf.
編輯 /etc/dhcp/dhcpd.conf 這些文件是:
$ sudo nano /etc/dhcp/dhcpd.conf
刪除並取消註釋以下行 # 前面的符號。
authoritative;
還將以下行添加到文件中:
default-lease-time 600; max-lease-time 7200; # subnet subnet 192.168.9.0 netmask 255.255.255.0 { # range of subnet range 192.168.9.5 192.168.9.15; # gateway address option routers 192.168.9.1; # DNS server address option domain-name-servers 8.8.8.8, 8.8.4.4; }
配置文件後,保存並關閉它。
從 DHCP 服務器為客戶端分配靜態 IP 地址
默認情況下,DHCP 服務器向客戶端發布動態 IP 地址。但是,它也可以配置為向客戶端分配固定或靜態 IP 地址。某些網絡設備(打印機、路由器等)或需要從外部遠程連接的設備需要固定地址。要將靜態 IP 地址分配給特定機器,您需要其 MAC 地址。
假設您要為客戶端分配 MAC 地址。 00:0c:29:c1:d5:d4 固定IP 192.168.1.13 每次。
編輯 /etc/dhcp/dhcpd.conf 打開該文件並添加一個主機條目,其中包含您要分配給客戶端的客戶端 MAC 地址和靜態 IP 地址。
host mint { hardware ethernet 00:0c:29:c1:d5:d4; fixed-address 192.168.9.13; }
筆記: 不要從動態 IP 範圍中獲取靜態 IP 地址。
現在,每當具有匹配 MAC 地址 (00:0c:29:c1:d5:d4) 的客戶端向 DHCP 服務器發送 DHCPDISCOVER 消息時,它都會收到相同的 IP 地址 192.168.9.13。
重新啟動 DHCP 服務
配置完成後,重啟DHCP Server服務。為此,請在終端中發出以下命令:
$ sudo systemctl restart isc-dhcp-server.service
使用以下命令檢查 DHCP 服務器的狀態:
$ sudo systemctl status isc-dhcp-server.service
以下輸出顯示 DHCP 服務處於活動狀態並且成功運行且沒有錯誤。
DHCP 客戶端配置
接下來,配置兩台客戶端機器。從配置文件中定義的子網範圍為客戶端分配一個隨機 IP。另一個客戶端被分配了一個靜態 IP。
默認情況下,在 Ubuntu 操作系統中配置了動態 IP 地址。但是,如果您使用靜態 IP 地址,則可以將其配置為從 DHCP 服務器獲取 IP 地址。
客戶端 1 – 從 DHCP 服務器獲取動態 IP 地址。
首先使用以下命令找到網絡接口名稱:
$ ifconfig
找到接口名稱後,在終端中發出以下命令來配置網絡接口:
$ sudo nano /etc/network/interfaces
將以下行插入文件中。
auto <interface_name> iface <interface_name>inet dhcp
在我們的例子中,它看起來像這樣:
auto ens33 iface ens33 inet dhcp
保存並關閉文件並在終端中使用以下命令重新啟動網絡管理器服務:
$ sudo systemctl restart network-manager.service
然後運行 ifconfig 命令檢查客戶端的 IP 地址。
$ ifconfig
在下面的輸出中,我們可以看到客戶端從 DHCP 服務器配置中定義的子網範圍接收到 IP 地址 192.168.9.5。
要查找 DHCP 服務器的 IP 地址,請在終端中發出以下命令:
$ sudo grep -R “DHCPOFFER” /var/sys/log
從輸出中,我們可以看到 IP 地址是由 192.168.9.1 分配的。這是您的 DHCP 服務器的 IP 地址。
如果客戶端機器沒有從 DHCP 服務器獲得 IP 地址,請使用以下命令釋放/更新 IP 地址。
$ sudo dhclient -r
$ sudo dhclient -v
現在跑步 如果配置 運行命令以找出客戶端的 IP 地址。這一次,我希望客戶端從 DHCP 服務器收到一個 IP 地址。
客戶端 2 – 從 DHCP 服務器獲取靜態 IP 地址。
在第二台客戶端機器上,我在 DHCP 服務器配置文件中添加了一個靜態/固定 IP 地址條目。在客戶端計算機上,首先配置接口以從 DHCP 服務器獲取 IP 地址。
使用以下命令查找網絡接口名稱:
$ ifconfig
找到接口名稱後,在終端中發出以下命令來配置網絡接口:
$ sudo nano /etc/network/interfaces
將以下行插入文件中。
auto <interface_name>
iface <interface_name>inet dhcp
在我們的例子中,它看起來像這樣:
auto ens33
iface ens33 inet dhcp
保存並關閉文件並在終端中使用以下命令重新啟動網絡管理器服務:
$ sudo systemctl restart network-manager.service
然後運行 ifconfig 命令檢查客戶端的 IP 地址。
$ ifconfig
在下面的輸出中,我們可以看到客戶端從 DHCP 服務器接收到靜態 IP 地址 192.168.9.13。這與您添加到 DHCP 配置文件中的靜態 IP 地址相同。
要查找 DHCP 服務器的 IP 地址,請在終端中發出以下命令:
$ sudo grep -R “DHCPOFFER” /var/sys/log
從輸出中,我們可以看到 IP 地址是由 DHCP 服務器 192.168.9.1 分配的。
如果客戶端機器沒有從 DHCP 服務器獲得 IP 地址,請使用以下命令釋放/更新 IP 地址。
$ sudo dhclient –r -v
$ sudo dhclient -v
現在跑步 如果配置 運行命令以找出客戶端的 IP 地址。這一次,我希望客戶端從 DHCP 服務器收到一個 IP 地址。
查看DHCP服務器分配的IP地址
您還可以從您的 DHCP 服務器中找出要分配給您的客戶端的動態地址。
在 DHCP 服務器機器上,在終端中運行以下命令以列出 DHCP 服務器分配的地址。
$ dhcp-lease-list
下面的輸出僅顯示了 DHCP 服務器動態分配給客戶端的 IP 地址。 請注意,DHCP 服務器發布的靜態 IP 地址未列出。
在本文中,您學習瞭如何在 Linux 系統上安裝和配置 DHCP 服務器,以便為客戶端分配動態和靜態 IP 地址。只需幾個簡單的步驟,即可在您的 Linux 機器上配置 DHCP 服務器。配置完成後,分配的 IP 地址和相關信息會自動分配給網絡上的每台機器。