一、DHCP简介
DHCP(动态主机配置协议,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于简化IP地址的分配和管理。它在局域网中广泛应用,旨在为内部网络主机自动分配IP地址,以及为网络管理员提供集中管理手段。
DHCP的主要作用和优点:
- 集中管理:DHCP允许网络管理员集中管理IP地址的分配,以及其他网络配置参数,如网关、DNS服务器等。这有助于减轻管理和维护成本,提高网络配置效率。
- 动态分配:DHCP动态分配IP地址,使得IP地址的利用率更高,避免了IP地址的浪费,通过自动配置IP地址,减少了手动配置的可能性,从而减少了人为错误导致的问题,减轻了网络管理员的工作负担。
DHCP基本协议架构中,主要包括以下三种角色:
- DHCP Client: DHCP客户端,通过与DHCP服务器进行报文交互,获取IP地址和其他网络配置信息,完成自身的地址配置。在设备接口上配置DHCP Client功能,这样接口可以作为DHCP Client,使用DHCP协议从DHCP Server动态获得IP地址等参数,方便用户配置,也便于集中管理。
- DHCP Relay:
DHCP中继,负责转发来自客户端方向或服务器方向的DHCP报文,协助DHCP客户端和DHCP服务器完成地址配置功能。如果DHCP服务器和DHCP客户端不在同一个网段范围内,则需要通过DHCP中继来转发报文,这样可以避免在每个网段范围内都部署DHCP服务器,既节省了成本,又便于进行集中管理。
在DHCP基本协议架构中,DHCP中继不是必须的角色。只有当DHCP客户端和DHCP服务器不在同一网段内,才需要DHCP中继进行报文的转发。 - DHCP Server: DHCP服务器,负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IP地址和其他网络配置信息。
二、DHCP工作原理
2.1 DHCP客户端与服务器的交互模式
DHCP客户端为了获取合法的动态IP地址,在不同阶段与服务器之间交互不同的信息,通常存在以下三种模式:
- DHCP客户端动态获取IP地址
图1 DHCP客户端动态获取IP地址的四步交互过程
如图1所示,DHCP客户端首次登录网络时,主要通过四个阶段与DHCP服务器建立联系
- 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。
在发现阶段,DHCP客户端通过发送DHCP DISCOVER报文来寻找DHCP服务器。由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP DISCOVER报文。所有收到DHCP DISCOVER报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。 - 提供阶段:即DHCP服务器提供IP地址的阶段。
网络中接收到DHCP DISCOVER报文的DHCP服务器,会从地址池选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址、域名服务器地址等)通过DHCP OFFER报文发送给DHCP客户端。 - 选择阶段:即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端只接收第一个收到的DHCP OFFER报文。然后以广播方式发送DHCP REQUEST请求报文,该报文中包含服务器标识选项(Option54),即它选择的DHCP服务器的IP地址信息。
以广播方式发送DHCP REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。 - 确认阶段:即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP REQUEST报文后,DHCP服务器会根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则向客户端发送包含它所提供的IP地址和其它设置的DHCP ACK确认报文。DHCP客户端收到该确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。如果DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。
DHCP Client获得IP地址后,上线之前会检测正在使用的网关的状态,如果网关地址错误或网关设备故障,DHCP客户端将重新使用四步交互方式请求新的IP地址。
- DHCP客户端重用曾经分配的IP地址
图2 DHCP客户端重用曾经分配的IP地址的两步交互过程
如图2所示,DHCP客户端重新登录网络时,主要通过以下几个步骤与DHCP服务器建立联系:
- 重新登录网络是指客户端曾经分配到可用的IP地址,再次登录网络时IP地址还在相应的租期之内。客户端不需要再发送DHCP DISCOVER报文,而是直接发送包含前一次分配的IP地址的DHCP REQUEST请求报文,即报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。
- DHCP服务器收到DHCP REQUEST报文后,如果客户端申请的地址没有被分配,则返回DHCP ACK确认报文,通知该DHCP客户端继续使用原来的IP地址。
- 如果此IP地址无法再分配给该DHCP客户端使用(例如已分配给其它客户端),DHCP服务器将返回DHCP NAK报文。客户端收到后,重新发送DHCP DISCOVER报文请求新的IP地址。
- DHCP客户端更新租约DHCP当DHCP客户端获得IP地址时,会进入到绑定状态,客户端会设置3个定时器,分别用来控制租期更新、重绑定和判断是否已经到达租期。DHCP服务器为客户分配IP地址时,可以为定时器指定确定的值。若服务器没有设置定时器的值,客户端就使用缺省值。定时器的缺省值如表1所示:
表1 定时器的缺省值:
定时器 | 默认值 |
租期更新 | 总租期的50% |
重绑定 | 总租期的87.5% |
到达租期 | 总租期 |
图3 DHCP客户端更新租约过程
如图3所示,DHCP客户端更新租约,主要通过以下几个步骤与DHCP服务器建立联系:
- IP租约期限达到50%(T1)时,DHCP客户端会自动以单播的方式,向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租约。如果收到DHCP ACK报文,则租约更新成功;如果收到DHCP NAK报文,则重新发起申请过程。
- IP租约期限达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动向DHCP服务器发送更新其IP租约的广播报文。如果收到DHCP ACK报文,则租约更新成功;如果收到DHCP NAK报文,则重新发起申请过程。
- 如果IP租约到期前都没有收到服务器响应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
- DHCP客户端主动释放IP地址
DHCP客户端不再使用分配的IP地址时,会主动向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租约。DHCP服务器会保留这个DHCP客户端的配置信息,以便该客户端重新申请地址时,重用这些参数。
三、DHCP Relay工作原理
DHCP Relay即DHCP中继,它实现了不同网段间的DHCP服务器和客户端之间的报文交互。DHCP中继承担处于不同网段间的DHCP客户端和服务器之间中继服务,将DHCP协议报文跨网段透传到目的DHCP服务器,最终使网络上的DHCP客户端可以共同使用一个DHCP服务器。
客户端首次申请地址时通过DHCP中继获得地址过程如图4所示。
图4 DHCP中继工作过程:
DHCP中继的工作过程如图4所示。DHCP客户端发送请求报文给DHCP服务器, DHCP中继收到该报文并适当处理后,以单播形式发送给指定的位于其它网段上的DHCP服务器。服务器根据请求报文中提供的必要信息,通过DHCP中继将配置信息返回给客户端,完成对客户端的动态配置
- DHCP中继接收到DHCP DISCOVER或DHCP REQUEST报文后,将进行如下处理:
- 为防止DHCP报文形成环路,抛弃报文头中hops字段的值大于限定跳数的DHCP请求报文。否则,继续进行下面的操作。将hops字段增加1,表明又经过一次DHCP中继。
- 检查giaddr字段。如果是0,需要将giaddr字段设置为接收请求报文的接口IP地址。如果接口有多个IP地址,可选择其一。以后从该接口接收的所有请求报文都使用该IP地址。如果giaddr字段不是0,则不修改该字段。
- 将请求报文的TTL设置为DHCP中继设备的TTL缺省值,而不是原来请求报文的TTL减1。对中继报文的环路问题和跳数限制问题都可以通过hops字段来解决。
- DHCP请求报文的目的地址修改为DHCP服务器或下一个DHCP中继的IP地址,从而将DHCP请求报文转发给DHCP服务器或下一个DHCP中继。
- DHCP服务器根据Relay Agent IP Address字段为客户端分配IP地址等参数,并将DHCP应答报文发送给Relay Agent IP Address字段标识的DHCP中继。DHCP中继接收到DHCP应答报文后,会进行如下处理:
- DHCP中继假设所有的应答报文都是发给直连的DHCP客户端。Relay Agent IP Address字段用来识别与客户端直连的接口。如果Relay Agent IP Address字段不是本地接口的地址,DHCP中继将丢弃应答报文。
- DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP应答报文广播发送给DHCP客户端;否则将DHCP应答报文单播发送给DHCP客户端,其目的地址为Your (Client) IP Address字段内容,链路层地址为Client Hardware Address字段内容。
客户端通过DHCP中继延长地址租期的过程如图5所示。
图5 客户端通过DHCP中继更新租约:
- DHCP客户端经过首次正确登录网络后,只需直接向上次为它分配IP地址的DHCP服务器直接以单播的形式发送DHCP REQUEST报文。
- DHCP服务器直接向客户端发送单播的确认响应报文或者拒绝响应报文。
DHCP Relay支持向DHCP服务器发送Release报文:
在网络中可以在DHCP中继上直接向服务器发送Release报文请求释放服务器给某客户端分配的IP地址,而不需要由客户端发起Release请求。可以通过在DHCP中继上配置Relay释放命令实现服务器对客户端的地址释放操作。
四、IP地址的分配与更新原则
4.1 IP地址分配的优先次序
DHCP服务器按照如下次序为客户端选择IP地址:
- DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。
- 客户端以前曾经使用过的IP地址,即客户端发送的DHCP DISCOVER报文中请求IP地址选项的地址。
- 在DHCP地址池中,按照IP地址从大到小的顺序查询,选择最先找到的可供分配的IP地址。
- 如果在DHCP地址池中未找到可供分配的IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误。
4.2 防止IP地址重复分配的方法
为防止IP地址重复分配导致地址冲突,DHCP服务器为客户端分配地址前,需要先对该地址进行探测。
地址探测是通过Ping命令实现的,检测是否能在指定时间内得到Ping应答。如果没有得到应答,则继续发送Ping报文,直到发送Ping包的数量达到最大值。如果仍然超时,则可以认为这个IP地址的网段内没有设备使用该IP地址,从而确保客户端被分得的IP地址是唯一的(根据RFC2132实现)。
4.3 IP地址预留
DHCP支持预留IP地址给客户端,预留的IP地址可以是地址池中的地址,也可以不是。如果是的话,则将其不列入到地址池可分配的IP地址中,这些预留出去的地址一般用于某个DNS服务器的IP地址。
4.4 PC机释放IP地址与更新租约的方法
在PC机上(即DHCP客户端)需要首先释放旧IP地址,然后获取新IP地址。
- 释放旧IP地址:
操作系统不同命令会有所不同。可以使用下面两种方法中的一种。
- 在用户PC机的Windows 7环境下使用ipconfig /release命令来主动释放IP地址;
- 在Windows 98 MS-DOS界面下执行winipcfg /release命令来主动释放IP地址。
- 更新IP地址租约或申请新的IP地址:同一操作系统下,申请新的IP地址和更新IP地址使用的命令一样。如果用户希望申请更新IP地址,则需要在PC机上(即DHCP客户端)首先释放旧的IP地址,而更新租约不需要提前释放IP地址。
不同的操作系统使用的命令也不同。用户可以使用下面两种方法中的一种。
- 在用户PC机的Windows 7环境下使用ipconfig /renew命令来更新IP地址租约或申请新的IP地址;
- 在Windows 98 MS-DOS界面下执行winipcfg /renew命令来更新IP地址租约或申请新的IP地址。
此时用户PC机向DHCP服务器发送DHCP DISCOVER报文。
五、配置DHCP
5.1 实验环境
本地实验环境如图6所示,路由器Router1连接到互联网Internet,下挂3台设备,分别是DHCP-Server、Client1-Linux、Client2-Windows,DHCP-Server用来配置DHCP服务,为Client1-Linux和Client2-Windows主机分配IP地址,另外DHCP-Server的e1网口和Client1-Linux的e1网口连接到管理网络,方便ssh远程管理。
图6 DHCP实验拓扑:
主机名和IP地址规划如表2所示:
表2:主机名和IP地址规划
主机名 | IP地址 | 操作系统 |
Router1 | e0:DHCP动态获取 e1:192.168.100.1/24 | Linux OpenWrt 5.10.100 |
DHCP-Server | e0:192.168.100.254/24 e1:172.16.10.10/24 | Rocky Linux 8.9 (Green Obsidian) |
Client1-Linux | e0:DHCP动态获取 e1:172.16.10.20/24 | Rocky Linux 8.9 (Green Obsidian) |
Client2-Windows | e0:DHCP动态获取 | Windows 7 Pro |
5.2 配置DHCP服务
前提条件:DHCP-Server服务器上已经为e0接口配置了静态ip地址192.168.100.254,并可以访问Internet,Client1和Client2主机均已为e1接口配置了静态ip地址,可以通过远程客户端ssh连接管理。
DHCP-Server服务器上安装dhcpd服务器程序,其软件包名称为dhcp-server
[root@dhcp-server ~]# dnf -y install dhcp-server
查看dhcpd服务程序的配置文件内容:
[root@dhcp-server ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
[root@dhcp-server ~]#
dhcp的服务程序的配置文件中只有3行注释语句,这意味着我们需要自行编写这个文件。如果不知道怎么编写,可以看一下配置文件中第2行的参考示例文件,其组成架构如图7所示:
图7 DHCP配置文件参考示例
一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。
考虑到dhcpd服务程序配置文件的可用参数比较多,这里挑选了最常用的参数(见表3),并逐一进行了简单介绍,以便为接下来的实验打好基础。
表3 dhcpd服务程序配置文件中使用的常见参数以及作用
参数 | 作用 |
ddns-update-style 类型 | 定义DNS服务动态更新的类型,类型包括: none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式) |
allow/ignore client-updates | 允许/忽略客户端更新DNS记录 |
default-lease-time 21600 | 默认超时时间 |
max-lease-time 43200 | 最大超时时间 |
option domain-name-servers 8.8.8.8 | 定义DNS服务器地址 |
option domain-name "domain.org" | 定义DNS域名 |
range | 定义用于分配的IP地址池 |
option subnet-mask | 定义客户端的子网掩码 |
option routers | 定义客户端的网关地址 |
broadcast-address 广播地址 | 定义客户端的广播地址 |
ntp-server IP地址 | 定义客户端的网络时间服务器(NTP) |
nis-servers IP地址 | 定义客户端的NIS域服务器的地址 |
hardware 硬件类型 MAC地址 | 指定网卡接口的类型与MAC地址 |
server-name 主机名 | 向DHCP客户端通知DHCP服务器的主机名 |
fixed-address IP地址 | 将某个固定的IP地址分配给指定主机 |
time-offset 偏移差 | 指定客户端与格林尼治时间的偏移差 |
例如:我希望DHCP-Server服务器为192.168.100.0/24这个网络动态分配ip地址,配置选项和参数如表四:
表四 dhcp配置选项和参数
选项 | 参数 |
默认租约时间 | 43200秒(12小时) |
最大租约时间 | 86400秒(24小时) |
IP地址范围 | 192.168.100.2 - 192.168.100.253 |
子网掩码 | 255.255.255.0 |
网关地址 | 192.168.100.1 |
DNS服务器地址 | 114.114.114.114, 223.5.5.5 |
搜索域 | 51cto.com |
下面来编辑“/etc/dhcp/dhcpd.conf”这个配置文件:
[root@dhcp-server ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.253;
option subnet-mask 255.255.255.0;
option routers 192.168.100.1;
option domain-name "51cto.com";
option domain-name-servers 114.114.114.114, 223.5.5.5;
default-lease-time 43200;
max-lease-time 86400;
}
启动dhcpd服务并设置开机自启:
[root@dhcp-server ~]# systemctl enable --now dhcpd
[root@dhcp-server ~]# systemctl status dhcpd # 查看dhcpd服务状态
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2023-12-16 14:46:41 CST; 9s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 10985 (dhcpd)
Status: "Dispatching packets..."
Tasks: 1 (limit: 24773)
Memory: 4.9M
CGroup: /system.slice/dhcpd.service
└─10985 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
Dec 16 14:46:41 dhcp-server dhcpd[10985]: ** Ignoring requests on ens4. If this is not what
Dec 16 14:46:41 dhcp-server dhcpd[10985]: you want, please write a subnet declaration
Dec 16 14:46:41 dhcp-server dhcpd[10985]: in your dhcpd.conf file for the network segment
Dec 16 14:46:41 dhcp-server dhcpd[10985]: to which interface ens4 is attached. **
Dec 16 14:46:41 dhcp-server dhcpd[10985]:
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Listening on LPF/ens3/50:1d:01:00:02:00/192.168.100.0/24
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Sending on LPF/ens3/50:1d:01:00:02:00/192.168.100.0/24
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Sending on Socket/fallback/fallback-net
Dec 16 14:46:41 dhcp-server dhcpd[10985]: Server starting service.
Dec 16 14:46:41 dhcp-server systemd[1]: Started DHCPv4 Server Daemon.
防火墙放行dhcp服务:
[root@dhcp-server ~]# firewall-cmd --add-service=dhcp --permanent
success
[root@dhcp-server ~]# firewall-cmd --reload
success
dhcp服务配置已完成,客户端动态获取ip验证。
Client1配置e0网口自动获取ip:
[root@client1-linux ~]# nmcli con show
NAME UUID TYPE DEVICE
ens3 fa1cc151-033f-453b-949c-e1347e2b8221 ethernet ens3 # 查看e0网口的连接名称为ens3
ens4 994c59f1-1e37-3fe1-ad17-8b0a9c13116e ethernet ens4
[root@client1-linux ~]#
[root@client1-linux ~]# nmcli con mod ens3 ipv4.method auto # 修改ens3连接自动获取ip地址
查看获取到的ip信息:
[root@client1-linux ~]# nmcli con show ens3 |grep IP4
IP4.ADDRESS[1]: 192.168.100.3/24
IP4.GATEWAY: 192.168.100.1
IP4.ROUTE[1]: dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 106
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.100.1, mt = 106
IP4.DNS[1]: 114.114.114.114
IP4.DNS[2]: 223.5.5.5
IP4.DOMAIN[1]: 51cto.com
ping外网测试连通性,并测试搜索域的可用性,例如在Client1上“ping edu”,系统自动在主机名“edu”后面加上“.51cto.com”
[root@client1-linux ~]# ping www
PING czu3my54yx6eodmg.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=22.6 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=23.7 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=23.0 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=4 ttl=52 time=23.4 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=5 ttl=52 time=23.1 ms
^C
--- czu3my54yx6eodmg.aliyunddos1017.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 22.614/23.159/23.651/0.361 ms
[root@client1-linux ~]# ping blog
PING 096j513y4u62dz90.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=21.9 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=24.2 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=22.7 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=4 ttl=52 time=23.6 ms
^C
--- 096j513y4u62dz90.aliyunddos1017.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 21.918/23.087/24.170/0.864 ms
[root@client1-linux ~]#
[root@client1-linux ~]#
[root@client1-linux ~]# ping edu
PING 2c6l1l72u1l8wck6.aliyunddos1017.com (203.107.44.140) 56(84) bytes of data.
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=1 ttl=52 time=23.1 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=2 ttl=52 time=22.10 ms
64 bytes from 203.107.44.140 (203.107.44.140): icmp_seq=3 ttl=52 time=23.4 ms
^C
--- 2c6l1l72u1l8wck6.aliyunddos1017.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6056ms
rtt min/avg/max/mdev = 22.987/23.154/23.413/0.223 ms
Client2上打开桌面,进入网络和共享中心,查看网卡的网络连接详细信息,如图8所示,Client2已成功自动获取ip,特定的DNS后缀为“51cto.com”,租期为12小时。
图8 Client2-Windows的网络连接详细信息
5.3 配置DHCP分配固定IP
如果我们想为Client2-Windows主机分配固定的ip地址,比如固定为192.168.100.150/24,首先在Client2-Windows主机的cmd命令行窗口执行ipconfig /release释放当前已获取到的ip地址,如图9所示:
图9 Client2-Windows主机释放ip地址
在DHCP-Server上修改“/etc/dhcp/dhcpd.conf”配置文件,添加17-20行的内容,其中第18行的内容是Client2主机e0网口的mac地址,如图10,将Client2的e0网卡与ip地址192.168.100.150绑定,注意配置mac地址的格式,Windows系统使用横线分隔,Linux系统使用冒号分隔:
图10 Client2主机e0网卡MAC地址
[root@client1-linux ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.253;
option subnet-mask 255.255.255.0;
option routers 192.168.100.1;
option domain-name "51cto.com";
option domain-name-servers 114.114.114.114, 223.5.5.5;
default-lease-time 43200;
max-lease-time 86400;
host Client2-Windows { # 添加本行到第20行内容
hardware ethernet 50:04:EC:00:04:00;
fixed-address 192.168.100.150;
}
}
重启dhcpd服务,使配置生效:
[root@dhcp-server ~]# systemctl restart dhcpd
到Client2上cmd命令行输入“ipconfig /renew”,或在网络和共享中心里对网卡禁用再启用,重新获取ip验证,如图11所示,已获取到服务器为Client2分配的固定ip地址192.168.100.150
有关DHCP-Relay的实验后续更新...
六、参阅
第14章 使用DHCP动态管理主机地址 | 《Linux就该这么学》
S2750, S5700, S6700 系列以太网交换机 产品文档 - Huawei:DHCP概述
标签:Linux,报文,配置,服务器,dhcpd,IP地址,DHCP,客户端 From: https://blog.51cto.com/min2000/8852938