RHCE(四)DHCP服务

概念

dhcp(Dynamic Host configuration Protocol,动态主机配置协议 )是一个局域网的网络协议,它主要是通过客户端发送广播数据包给整个物理网段内的所有主机,若局域网内有DHCP服务器时,才会响应客户端的IP参数要求。

成为DHCP server的条件

1.拥有真实物理网卡,或者连接广播域的真实物理网卡
2.该接口或者该物理网卡必须有一个合理的ip地址

三种分配ip机制

DHCP有三种机制分配IP地址:

  • 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  • 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  • 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如图
在这里插入图片描述
1、客户端:利用广播数据包发送搜索DHCP服务器
客户端网络设置为dhcp获取ip,则当客户端开机或重启网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包(discover)给所有物理网段内的计算机。因为客户端还不知道自己属于哪一个网络,所以该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。一般主机接收到这个数据包之后会直接丢弃,若局域网内有DHCP服务器,则会开始后续行为。

2、服务器端:提供客户端网络相关的租约以供选择。(dhcp offer)
DHCP服务器在监听到客户端发出的dhcp discover广播后,会针对这个客户端的硬件地址( MAC)与本身的设置数据进行下列工作:

  • 到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。

  • 若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端。

  • 若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。

3、客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认。
由于局域网内可能并客户端选择收到的其中一个DHCP offer(通常是最先抵达的那个),当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端会发送一个dhcp request广播数据包给所有物理网段内的主机,告知已经接受该服务器的租约(此时若有两台以上的DHCP服务器,则这些没有被接受的服务器会收回该IP租约。)。同时,客户端还会向网络发送一个ARP封包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDECLIENT包给DHCP服务器,拒绝接受其DHCP offer,并重新发送DHCP discover信息。

扫描二维码关注公众号,回复: 10622527 查看本文章

4、服务器端:记录该次租约行为后并向客户端发送响应数据包信息以确认客户端的使用。
当服务器端收到客户端的确认选择后,服务器会回送确认的dhcp ack响应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。
由于目前的DHCP客户端程序大多数会主动依据租约时间去重新申请IP,所以即使有租约期限,也不需要在某个时间点手动去重新申请IP。一般情况下,假设租约时间是T小时,那么客户端程序在0.5T时会主动向DHCP服务器发出重新要求网络参数的数据包。如果这次数据包请求没有成功,那么在0.875T后还会再次发送数据包一次。正因如此,所以服务器端会启动port67监听客户端请求,而客户端会启动port68主动向服务器请求。

Linux上搭建dhcp服务

1、软件安装
#yum install dhcp -y
2、配置文件格式说明
dhcp服务器的主要配置文件/etc/dhcp/dhcpd.conf ,示例文件/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
dhcp服务器与客户端租约建立的起始与到期日记录文件:/var/lib/dhcpd/dhcpd.leases

编写配置文件的规范:
除了括号后面之外,其他的每一行配置最后都要以“;”结尾。
配置项目的语法形式主要是“参数代号 配置内容”。
某些配置项目必须以option来定义,基本形式为“option 参数代码 配置内容”

dhcpd.conf中的配置主要分为两大项目:

  • 一个是服务器运行的全局设置
  • 一个是IP分配设置

全局设置

当IP分配设置没有定义到某些设置时,则以全局设置为准。
default-lease-time默认的租约时间
max-lease-time最大租约时间
option domain-name 域名
option domain-name-servers IP1、IP2
ddns-update-style 类型
ignore client-updates
option routers 路由器地址

配置DHCP和dns服务的更新模式,一般不用,但是必须有该项,否则服务无法启动
ddns-update-style interim; DNS互动更新模式
ignore client-updates; 不允许客户机更新 DNS 记录

IP分配设置

子网配置段,声明网段和掩码
subnet 192.168.40.0 netmask 255.255.255.0 {
#指定地址池范围
range dynamic-bootp 192.168.40.130 192.168.40.254;
#指定网关
option routers 192.168.40.1;
#指定掩码
option subnet-mask 255.255.255.0;
#指定DNS
option domain-name-servers 114.114.114.114;
#默认租约
default-lease-time 21600;
#最大租约
max-lease-time 43200;
}
配置文件改好之后,重启服务
#systemctl restart dhcpd

然后就可以在客户端获取ip地址…

发布了94 篇原创文章 · 获赞 92 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43624033/article/details/105137929