2.1DHCP工作原理
当局域网络中有大量的主机时,如果逐个为每一态主机手动设置IP地址,默认网关,DNS服务器地址等网络参数,显然是一个费力的办法,而DHCP服务器的应用,真好可以解决这一问题。
1.了解DHCP'服务
DHCP是由intemet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。
DHCP服务避免了因手动设置IP地址所产生的错误,同时以避免了把一个IP地址分配给多台工作站所造成的地址冲突。DHCP提供了安全,可靠且简单的TCP/IP网络设置。降低了配置IP地址的负担。DHCP的网络结构如图所示
2.使用DHCP的好处
- 减少管理员的工作量
- 避免输入错误的可能。
- 避免IP地址冲突
- 当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
- 提高了IP地址的利用率
- 方便客户端的配置
3.DHCP的分配方式
- 自动分配是当DHCP客户机第一次成功地从DHCP服务器获取到一个IP地址后,就永久地使用这个IP地址。
- 手动分配是由DHCP服务器管理员专门指定IP地址。
- 动态分配是当DHCP客户机第一次从DHCP服务器获取到IP地址后,并非永久地使用该地址,而是在每次使用完后,DHCP客户机就会释放这个IP地址,供其他客户机使用。
4.DHCP的租约过程
客户端从DHCP服务器获取IP地址的过程称为DHCP租约过程,此过程主要分为以下四个步骤:
- 客户端在网络中搜索服务器
- 服务器向客户端响应服务
- 客户端向服务器发出服务请求
- 服务器向客户端提供服务。
其中包含的具体过程如下所示:
(1)客户机请求IP地址
当一个DHCP客户机启动时,客户机还有IP地址,所以客户机要通过DHCP获取一个合法的地址。此时DHCP客户机以广播方式DHCP Discover 发现信息来寻找DHCP服务器,如图所示:
(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 Requst消息后,以DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有IP地址有效租约和其他可配置的信息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。如图所示:
(5)重新登录
DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。
(6)更新租约
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机直接提供租约的服务器发送DHCP Requst包 要求更新现有的地址租约。
2.2使用DHCP动态配置主机地址
使用DHCP服务可以为大量客户机自动分配地址并提供集中管理,能够减轻管理和维护成本,提高网络配置效率,其中DHCP服务可分配的地址信息主要包括:
- 网卡的IP地址,子网掩码
- 对应的网络地址,广播地址
- 默认网关地址
- DNS服务器地址
- ......
2.2.1配置DHCP服务器
1.安装DHCP服务器软件
先执行”rpm -q dhcp“命令查看系统中是否已经安装dhcp软件包,如果没有安装,可以使用”yum -y install dhcp“进行安装,具体操作如下:
安装dhcp软件包后系统会自动复制相关程序,并添加名为dhcpd的系统服务。
[root@localhost ~]# yum -y install dhcp
2.建立主配置文件dhcpd.conf
dhcpd服务器的主配置文件时/etc/dhcp/dhcpd.conf,但是文件默认不包含任何有效配置,需要管理员手动建立。这时管理员可以根据文件中提示,参考配置文件范本建立新的dhcpd.conf文件。
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
(1)/etc/decp/dhcpd.conf文件的配置构成
在主配置文件dhcpd.conf中,可以使用声明,参数,选择这三种类型的配置,各自的作用和表现形式如下所述。
- 声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。
- 参数:由配置关键字和对应的值组成,总是以”:“(分号)结束。一般位于指定的声明范围之内,用来设置所在范围的运行特性。
- 选项:由”option“引导,后面更具体的配置关键字和对应的值,也是以”:“结束,用于指定分配给客户机的各种地址参数。
(2)dhcpd服务的全局配置
为了使配置文件的结构更加清晰,全局配置通常会放在配置文件dhcpd.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述。
- ddns-update-style,动态DNS更新模式。
- default-lease-time,默认租约时间。
- max-lease-time,最大租约时间。
- option domain-name,默认搜索区域。
- option domain-name-servers,DNS服务器地址。
例如,若需要为局域网搭建一台DHCP服务器,所有网段使用相同的租约时间,默认搜索域为bdqn.com,NDS服务器地址为202.106.0.20和202.106.148.1,则可以修改dhcpd.conf配置文件,参考以下操作调整全局配置。
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none; //禁用DNS动态更新
default-lease-time 21600;
//默认租约为6小时
max-lease-time 43200;
//最大租约为12个小时
option domain-name "kgc.com";
//bdqn.com,指定默认搜索域
option domain-name-servers 114.114.114.114,8.8.8.8;
//指定DNS服务器地址
(3)subnet网段声明
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。
subnet 192.168.10.0 netmask 255.255.255.0 { //声明网段地址
range 192.168.10.200 192.168.10.250;
//设置地址池,可以有多个
option routers 192.168.10.254;
//指定默认网关地址
}
(4)host主机声明(可选)
host声明通过host关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的MAC地址,使用”fixed-address“参数指定保留给主机的IP地址。
host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.10.211;
}
3.启动dhcpd服务
在启动dhcpd服务之前,应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则无法正常启动dhcpd服务。
安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/dhcpd.service.可以使用systemd服务进行控制。
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# netstat -anpu | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 1503/dhcpd
[root@localhost ~]#
需要关闭,重启dhcpd服务时,只要将上述操作命令中的“start”改为“stop”或“restart”即可。
2.2.2使用DHCP客户端
当局域网内有可用的 DHCP 服务器时,在 Linux 客户机中可以设置使用 DHCP 的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp"配置行,并重新加载配置文件或者重新启动 network 服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过 DHCP 方式自动获取地址。
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
在 Linux客户机中,还可以使用 dhclient工具来测试DHCP服务器。若直接执行“dhclient命令,则 dhclient 将尝试为除回环接口l0 以外的所有网络接口通过 DHCP 方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d选项使其在前台运行,测试完毕后按 Ctn+C组合键终止。例如,执行"dhclient-d ens33命令后,可以为网卡 ens33自动获取新的IP地址,并显示获取过程。
[root@localhost ~]# dhclient -d ens33
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens33/00:0c:29:37:32:11
Sending on LPF/ens33/00:0c:29:37:32:11
Sending on Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 3 (xid=0x39ec2e83)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 8 (xid=0x39ec2e83)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x39ec2e83)
DHCPOFFER from 192.168.10.101
DHCPACK from 192.168.10.101 (xid=0x39ec2e83)
bound to 192.168.10.203 -- renewal in 286 seconds.
在服务器端可以通过査看租约文件/var/lib/dhcpd/dhcpd.leases来了解服务器的IP地址分配情况,具体操作如下。该租约文件中记录了分配出去的每个P地址信息(租约记录),包括 IP 地址、客户端的 MAC 地址、租用的起始时间和结束时间等。
[root@localhost ~]# cat /var/lib/dhcpd/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.2.5
lease 192.168.10.201 {
starts 2 2024/06/11 08:10:56;
ends 2 2024/06/11 08:20:56;
tstp 2 2024/06/11 08:20:56;
cltt 2 2024/06/11 08:10:56;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:44:b3:de;
uid "\001\000\014)D\263\336";
client-hostname "DESKTOP-8BNM9UA";
}
server-duid "\000\001\000\001-\372\273\210\000\014)!hg";
客户端需要通过 dhclient 命令释放获取的 IP 租约时,可以结合"-r"选项。例如,执行以下的“dhclient -rens33"将会释放之前为网卡 ens33 获取的IP租约。此时再通过执行“ifconfigens33"命令就看不到分配的 IP地址了。
[root@localhost ~]# dhclient -r ens33