Bootstrap

02 DHCP原理与配置

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

;