一.DHCP工作原理
当局域网络中有大量的主机时,如果逐个为每一台主机手动设置
IP
地址、默认网关、
DNS
服务器地址等网络参数,显然是一个费力也未必讨好的办法。而
DHCP
(
Dynamic Host
Configuration Protocol
,动态主机配置协议)服务器的应用,正好可以解决这一问题。
1.了解DHCO服务
DHCP
(
Dynamic Host Configuration Protocol,
动态主机配置协议)是由
Internet
工作
任务小组设计开发的,专门用于为
TCP/IP
网络中的计算机自动分配
TCP/IP
参数的协议。
DHCP
服务避免了因手动设置
IP
地址所产生的错误,同时也避免了把一个
IP
地址分配给多
台工作站所造成的地址冲突。
DHCP
提供了安全、可靠且简单的
TCP/IP
网络设置,降低了
配置
IP
地址的负担。
DHCP
的网络结构如图
所示。
![](https://img-blog.csdnimg.cn/direct/a95d63b727b143249352487e82da676c.png)
2.使用DHCP的好处
Internet
是目前世界上用户最多的服务之一,有几十亿人在使用
Internet
。由于上网时
间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的
IP
地址,不仅造
成了
IP
地址的浪费,也会为
ISP
服务商带来高额的维护成本。而使用
DHCP
服务则有以下
好处。
减少管理员的工作量。
避免输入错误的可能。
避免 IP
地址冲突。
当网络更改 IP
地址段时,不需要再重新配置每个用户的
IP
地址。
提高了 IP
地址的利用率。
方便客户端的配置。
3.DHCP的分配方式
DHCP
的典型应用模式如下:在网络中架设一台专用的
DHCP
服务器,负责集中分配
各种网络地址参数(主要包括
IP
地址、子网掩码、广播地址、默认网关地址、
DNS
服务器
地址);其他主机作为
DHCP
客户机,将网卡配置为自动获取地址,即可与
DHCP
服务器
进行通信,完成自动配置过程。
在
DHCP
的工作原理中,
DHCP
服务器提供了三种
IP
地址分配方式:自动分配
(
Automatic Allocation
)、手动分配和动态分配(
Dynamic Allocation
)。
自动分配是当 DHCP
客户机第一次成功地从
DHCP
服务器获取到一个
IP
地址后,
就永久地使用这个
IP
地址。
手动分配是由 DHCP
服务器管理员专门指定
IP
地址。
动态分配是当 DHCP
客户机第一次从
DHCP
服务器获取到
IP
地址后,并非永久
地使用该地址,而是在每次使用完后,
DHCP
客户机就会释放这个
IP
地址,供其
他客户机使用。
![](https://img-blog.csdnimg.cn/direct/9a310c755aec42d2be3edd1e7b72c595.png)
4.DHCP的租约过程
客户端从
DHCP
服务器获取
IP
地址的过程称之为
DHCP
租约过程,此过程主要分为以
下四个步骤。
客户端在网络中搜索服务器;
服务器向客户端响应服务;
客户端向服务器发出服务请求;
服务器向客户端提供服务。
其中包含的具体过程如下所示:
( 1 )客户机请求 IP 地址
当一个
DHCP
客户机启动时,客户机还没有
IP
地址,所以客户机要通过
DHCP
获取
一个合法的地址。此时
DHCP
客户机以广播方式发送
DHCP Discover
发现信息来寻找
DHCP 服务器,如图所示。
![](https://img-blog.csdnimg.cn/direct/5dcc32d7e014434685117b999dfe3143.png)
(
2)服务器响应
当
DHCP
服务器接收到来自客户机请求
IP
地址的信息时,它就在自己的
IP
地址池中
查找是否有合法的
IP
地址提供给客户机。如果有,
DHCP
服务器就将此
IP
地址做上标记,
加入到
DHCP Offer
的消息中,然后
DHCP
服务器就广播一则
DHCP Offer
消息。如图所示。
(
3
)客户机选择
IP 地址
DHCP
客户机从接收到的第一个
DHCP Offer
消息中提取
IP
地址,发出
IP
地址的
DHCP
服务器将该地址保留,这样该地址就不能再分配给另一个
DHCP
客户机。之后
DHCP
客户
机会向服务器发送
DHCP Request
消息。如图
所示。
(
4)服务器确定租约
DHCP 服务器接收到 DHCP Request 消息后,以 DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有 IP 地址的有效租约和其他可配置的信息。当客户机收到 DHCP ACK消息时,它就配置了 IP 地址,完成 TCP/IP 的初始化。如图所示。
( 5)重新登录
DHCP 服务器接收到 DHCP Request 消息后,以 DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有 IP 地址的有效租约和其他可配置的信息。当客户机收到 DHCP ACK消息时,它就配置了 IP 地址,完成 TCP/IP 的初始化。如图所示。
![](https://img-blog.csdnimg.cn/direct/3dd4596b5c4d4262a87d57df1e76ec13.png)
( 5)重新登录
DHCP
客户机每次重新登录网络时,不需要再发送
DHCP Discover
信息,而是直接发
送包含前一次所分配的 IP 地址的 DHCP Request 请求信息。
![](https://img-blog.csdnimg.cn/direct/1acfec51a5cd454d9563fec57e991e8c.png)
(
6)更新租约
网卡的 IP 地址、子网掩码;
声明:用来描述 dhcpd 服务器中对网络布局的划分,是网络设置的逻辑范围。较
当
DHCP
服务器向客户机出租的
IP
地址租期达到
50%
时,就需要更新租约。客户机直
接向提供租约的服务器发送
DHCP Request
包,要求更新现有的地址租约。
二.使用DHCP动态配置主机地址
使用
DHCP
服务可以为大量客户机自动分配地址并提供集中管理,能够减轻管理和维
护成本、提高网络配置效率。其中
DHCP
服务可分配的地址信息主要包括:
网卡的 IP 地址、子网掩码;
对应的网络地址、广播地址;
默认网关地址;
DNS
服务器地址
;
......
下面分别介绍在
Linux
操作系统中构建
DHCP
服务器和使用
DHCP
客户端的过程。
一.配置DHCP服务器
1.安装DHCP服务器软件
先执行
“rpm -q dhcp”
命令查看系统中是否已经安装
dhcp
软件包,如果没有安装,则只
要挂载
CentOS
系统光盘,安装其中的
dhcp-4.2.5-47.el7.centos.x86_64.rpm 软件包即可,具体操作如下。
安装
dhcp
软件包后系统将会自动复制相关程序,并添加名为 dhcpd 的系统服务。
![](https://img-blog.csdnimg.cn/direct/1ad496be07934461b04432e218d6101d.png)
2.建立主配置文件dhcpd.conf
dhcpd
服务的主配置文件是
/etc/dhcp/dhcpd.conf
,但是该文件中默认不包含任何有效
配置,需要管理员手动建立。这时管理员可以根据文件中的提示,参考配置文件范本建立
新的 dhcpd.conf 文件。
![](https://img-blog.csdnimg.cn/direct/3f03daec110347e798a37b3ab8c600b2.png)
1
)
/etc/dhcp/dhcpd.conf
文件的配置构成
在主配置文件
dhcpd.conf
中,可以使用声明、参数、选项这三种类型的配置,各自的
作用和表现形式如下所述。
声明:用来描述 dhcpd 服务器中对网络布局的划分,是网络设置的逻辑范围。较
常见的声明是
subnet
、
host
,其中
subnet
声明用来约束一个网段,
host
声明用来
约束一台特定的主机。
参数:由配置关键字和对应的值组成,总是以“
;
”(
分号
)
结束,一般位于指定的声
明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
选项:由“option”
引导,后面跟具体的配置关键字和对应的值,也是以
“
;
”
结束,
用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、
DNS
服务
器地址等)。
2
)
dhcpd
服务的全局配置
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件
dhcpd.conf
的开头部
分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述。
ddns-update-style
,动态
DNS
更新模式。用来设置与
DHCP
服务相关联的
DNS
数据动态更新模式。在实际的
DHCP
应用中很少用到该参数,将值设为
“none”
即
可。
default-lease-time
,默认租约时间。单位为秒,表示客户端可以从
DHCP
服务器
租用某个
IP
地址的默认时间。
max-lease-time
,最大租约时间。单位为秒,表示允许
DHCP
客户端请求的最大
租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
option domain-name
,默认搜索区域。为客户机指定解析主机名时的默认搜索域,
该配置选项将体现在客户机的
/etc/resolv.conf
配置文件中,如
“search benet.com”
。
option domain-name-servers
,
DNS
服务器地址。为客户机指定解析域名时使用
的
DNS
服务器地址,该配置选项同样将体现在客户机的
/etc/resolv.conf
配置文件
中(如
“nameserver 202.106.0.20”
)。需设置多个
DNS
服务器地址时,以逗号进
行分隔。
例如,若需要为局域网搭建一台
DHCP
服务器,所有网段使用相同的租约时间,默认
搜索域为
bdqn.com
,
DNS
服务器地址为
202.106.0.20
和
202.106.148.1
,则可以修改
dhcpd.conf
配置文件,参考以下操作调整全局配置。
![](https://img-blog.csdnimg.cn/direct/a2cea0d71d0744298fcc06e9c804a6c0.png)
3
)
subnet
网段声明
一台
DHCP
服务器可以为多个网段提供服务,因此
subnet
网段声明必须有而且可以有
多个。例如,若要
DHCP
服务器为
192.168.4.0/24
网段提供服务,用于自动分配的
IP
地址
范围为
192.168.4.128
~
192.168.4.254
,为客户机指定默认网关地址为
192.168.4.1
,则可
以修改
dhcpd.conf
配置文件,参考以下内容调整 subnet 网段声明。
![](https://img-blog.csdnimg.cn/direct/5d186f49c9e24bb79138554c55054553.png)
4
)
host 主机声明(可选)
为每个网段安装一台 DHCP 服务器,但这种方式的弊端是:资源浪费与不利于管理;
host
声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固
定的
IP
地址(保留地址),这些主机的共同特点是要求每次获取的
IP
地址相同,以确保服
务的稳定性。
host
声明通过
host
关键字指定需要使用保留地址的客户机名称,并使用
“hardware
ethernet”
参数指定该主机的
MAC
地址,使用
“fixed-address”
参数指定保留给该主机的
IP
地
址。例如,若要为打印机
prtsvr
(
MAC
地址为
00:c0:c3:22:46:81
)分配固定的
IP
地址
192.168.4.100
,可以修改
dhcpd.conf
配置文件,参考以下内容在网段声明内添加
host
主
机声明。
![](https://img-blog.csdnimg.cn/direct/1ea9f9ebaf1a43d9aeadca4912e22c4a.png)
3.启动dhcp服务
在启动
dhcpd
服务之前,应确认提供
DHCP
服务器的网络接口具有静态指定的固定
IP
地址,并且至少有一个网络接口的
IP
地址与
DHCP
服务器中的一个
subnet
网段相对应,
否则将无法正常启动
dhcpd
服务。例如,
DHCP
服务器的
IP
地址为
192.168.4.11
,用于为
网段
192.168.4.0/24
内的其他客户机提供自动分配地址服务。
安装
dhcp
软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpd.service,可以使用
systemd
服务进行控制。例如,执行以 下操作可以启动 dhcpd
服务,并检查
UDP
的
67 端口是否在监听,以确认 DHCP 服务器是否正常。
![](https://img-blog.csdnimg.cn/direct/9a58d7de2adc4fbe8e5e414127597f58.png)
需要关闭、重启
dhcpd
服务时,只要将上述操作命令中的
“start”
改为
“stop”
或
“restart”
即可。如果
dhcpd
服务启动失败,可以检查日志文件
/var/log/messages
末尾的错误提示信
息,并根据提示进行排错。
二.使用DHCP客户端
当局域网内有可用的
DHCP
服务器时,在
Linux
客户机中可以设置使用
DHCP
的方式
获取地址。只需要编辑对应网卡的配置文件,修改或添加
“BOOTPROTO=dhcp”
配置行,并
重新加载配置文件或者重新启动
network
服务即可。例如,执行以下操作可修改网卡配置文
件,并重新加载配置以通过 DHCP 方式自动获取地址。
![](https://img-blog.csdnimg.cn/direct/f9fe7d3a815c4c5ebadab59b9cf0f605.png)
在
Linux
客户机中,还可以使用
dhclient
工具来测试
DHCP
服务器。若直接执行
“dhclient”
命令,则
dhclient
将尝试为除回环接口
lo
以外的所有网络接口通过
DHCP
方式申请新的地
址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合
“-d”
选项使其在前台运行,测试完毕后按
Ctrl
+
C
组合键终止。例如,执行
“dhclient -d ens33”
命令后,可以为网卡
ens33
自动获取新的
IP
地址,并显示获取过程。
![](https://img-blog.csdnimg.cn/direct/be9522be89554e558cc1e06291fcb7e3.png)
![](https://img-blog.csdnimg.cn/direct/6138b8e4989c4bf7a2fab25869b5f8a0.png)
在服务器端可以通过查看租约文件
/var/lib/dhcpd/dhcpd.leases
来了解服务器的
IP
地址
分配情况,具体操作如下。该租约文件中记录了分配出去的每个
IP
地址信息(租约记录),
包括
IP
地址、客户端的 MAC 地址、租用的起始时间和结束时间等。
![](https://img-blog.csdnimg.cn/direct/d1ad5800f2de4364a8ce7cb791571228.png)
客户端需要通过
dhclient
命令释放获取的
IP
租约时,可以结合
“-r”
选项。例如,执行以
下的
“dhclient -r ens33”
将会释放之前为网卡
ens33
获取的
IP
租约。此时再通过执行
“ifconfig
ens33”
命令就看不到分配的 IP 地址了。
![](https://img-blog.csdnimg.cn/direct/e7232eddfdbb4142be189c4e8fd1edf6.png)
三.DHCP中继
1.DHCP中继原理
当企业内部网络规模比较大时,通常通过
VLAN
将网络规划为多个不同的子网。但是
在该情况下一台
DHCP
服务器无法为不同网段的客户机同时提供服务,因为
DHCP
协议使
用广播,而
VLAN
能隔离广播。
例如:
DHCP
服务器在
VLAN 100
中,就只有
VLAN 100
内的客户机能从
DHCP
服务
器那里获取
IP
地址。如果
VLAN 2
或
VLAN 3
的客户机就无法通过这台
DHCP
服务器来获
取
IP
地址。
针对以上问题,一般有两种解决方案:
为每个网段安装一台 DHCP 服务器,但这种方式的弊端是:资源浪费与不利于管理;
在连接不同网段的设备上开启DHCP
中继功能,将
DHCP
这种特殊的广播信息在
VLAN
之间转发,让其他
VLAN
的客户机也能从
DHCP
服务器获取
IP 地址,如图所示。
![](https://img-blog.csdnimg.cn/direct/0035343ac3a64d9cb3374f4cf3f936a0.png)
2.DHCP中继配置
DHCP
中继的配置命令:
ip helper-address DHCPsrv-IPAddress 》
其中《》DHCPsrv-IPAddress 为
DHCP
服务器的
IP 地址。
在三层交换机上配置
DHCP
中继转发:首先需要保证交换机上各
VLAN
之间网络通信
正常,然后依次在不包含
DHCP
服务器的
VLAN
上进行
DHCP
中继配置。例如执行以下命
令可以在
VLAN2
中进行
DHCP
中继转发配置。
3.实验步骤
1.配置二层交换机
(1)配置接口类型
(2)创建PC所属网段的vlan
2.配置三层交换机
(1)配置接口类型
(2)创建PC所属网段的vlan
(3)给连接路由器的接口添加vlan并为其设置ip地址
(4)启动dhcp服务,并创建自己的dhcp服务组,设置dhcp的输出接口
(5)为vlan配置网关
(6)启动vlan中继并为其指定输出接口
3.配置路由器
(1)创建对应vlan的地址池(如网段,网关,DNS,需要摘掉的ip地址)
(2)启动dhcp服务
(3)设置接口ip,并为其开启采用全局地址池分配地址
(4)设置静态路由路径