DHCP

文章目录

        • 简介
          • 条件
          • 功能
          • 三种机制分配IP地址
          • 工作过程
          • 工作原理
            • DHCP客户端
            • DHCP服务器
            • DHCP中继代理
        • 配置

简介

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

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

功能
  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  4. DHCP服务器应当向现有的BOOTP客户端提供服务。
三种机制分配IP地址
  • DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
  2. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  3. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
工作过程

DHCP_第1张图片

工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如下图。

DHCP_第2张图片

  • 客户端:利用广播数据包发送搜索DHCP服务器
    若客户端网络设置使用DHCP协议取得IP,则当客户端开机或者是重新启动网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包(discover)给所有物理网段内的计算机。因为客户端还不知道自己属于哪一个网络,所以该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。一般主机接收到这个数据包之后会直接丢弃,若局域网内有DHCP服务器,则会开始后续行为。
  • 服务器端:提供客户端网络相关的租约以供选择。(dhcp offer)
    DHCP服务器在监听到客户端发出的dhcp discover广播后,会针对这个客户端的硬件地址( MAC)与本身的设置数据进行下列工作:
  1. 到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。
  2. 若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端。
  3. 若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。
  • 客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认。
    由于局域网内可能并非仅有一台DHCP服务器,但客户端仅能接收一组网络参数租约,因此客户端只会挑选其中一个DHCP offer(通常是最先抵达的那个)。当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端会发送一个dhcp request广播数据包给所有物理网段内的主机,告知已经接受该服务器的租约(此时若有两台以上的DHCP服务器,则这些没有被接受的服务器会收回该IP租约。)。同时,客户端还会向网络发送一个ARP封包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDECLIENT包给DHCP服务器,拒绝接受其DHCP offer,并重新发送DHCP discover信息。
  • 服务器端:记录该次租约行为后并向客户端发送响应数据包信息以确认客户端的使用。
    当服务器端收到客户端的确认选择后,服务器会回送确认的dhcp ack响应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。那么该次租约何时会到期而被解约,有以下几种情况:
    客户端脱机:关闭网络接口、重新启动、关机等行为,都算是脱机状态,这个时候server端就会将该IP地址收回,并放到server的备用区中,以便日后使用。
    客户端租约到期:dhcp server端发放的IP有使用的期限,客户端使用这个IP到达期限规定的时间,而且没有重新提出DHCP的申请时,server端就会将该IP收回,这个时候就会断线。但用户也可以向DHCP服务器再次要求分配IP。
  • 由于目前的DHCP客户端程序大多数会主动依据租约时间去重新申请IP,所以即使有租约期限,也不需要在某个时间点手动去重新申请IP。一般情况下,假设租约时间是T小时,那么客户端程序在0.5T时会主动向DHCP服务器发出重新要求网络参数的数据包。如果这次数据包请求没有成功,那么在0.85T后还会再次发送数据包一次。正因如此,所以服务器端会启动port67监听客户端请求,而客户端会启动port68主动向服务器请求。
DHCP客户端

DHCP_第3张图片

  • 在支持DHCP功能的网络设备上将指定的端口作为DHCP Client,通过DHCP协议从DHCP Server动态获取IP地址等信息,来实现设备的集中管理。一般应用于网络设备的网络管理接口上。
  • 好处
  1. 降低了配置和部署设备时间。
  2. 降低了发生配置错误的可能性。
  3. 可以集中化管理设备的IP地址分配。
DHCP服务器

DHCP服务器指的是由服务器控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

DHCP中继代理

DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。

配置

  1. 软件安装

[root@web ~]# yum install dhcp -y

  1. 配置文件格式说明
    dhcp服务器的主要配置文件/etc/dhcp/dhcpd.conf
    dhcp服务器与客户端租约建立的起始与到期日记录文件:/var/lib/dhcpd/dhcpd.leases

[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
示例文件/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

  • 编写配置文件的规范
  1. 除了括号后面之外,其他的每一行配置最后都要以“;”结尾。
  2. 配置项目的语法形式主要是“参数代号 配置内容”。
  3. 某些配置项目必须以option来定义,基本形式为“option 参数代码 配置内容”
  • dhcpd.conf中的配置主要分为两大项目,一个是服务器运行的全局设置,一个是IP分配设置。
  1. 全局设置:当IP分配设置没有定义到某些设置时,则以全局设置为准。
    default-lease-time默认的租约时间(用户的计算机也能够要求一段特定长度的租约时间。但若用户没有特别要求租约时间,默认以此为准。时间单位默认为秒)
    max-lease-time最大租约时间(如果用户要求的租约时间超过该值,则以此值为准)
    option domain-name 域名(如果在/etc/resolv.conf里面设置了一个search xxx.com的话,这表示当你要查找主机名时,DNS系统会主动帮你在所要查找的主机名后加上这个域名后缀)
    option domain-name-servers IP1、IP2(这个设置参数可以修改客户端的/etc/resolv.conf文件)
    ddns-update-style 类型(因为dhcp客户端所取得的IP通常是一直变动的,所以此时DHCP可以通过ddns来更新主机名与IP的对应关系)
    ignore client-updates(与上一个设置值有关,客户端可通过dhcp服务器来更新DNS相关的信息。设置成ignore为忽略)
    option routers 路由器地址(设定路由器的IP地址)
    #配置DHCP和dns服务的更新模式,一般不用,但是必须有该项,否则服务无法启动
    ddns-update-style interim; DNS互动更新模式
    ignore client-updates; 忽略客户端更新
  2. IP分配设置
    由于dhcp主要是针对局域网来分配IP参数,因此在设置IP之前,我们需要指定一个局域网(dhcp待分配地址的区域)。指定局域网的方式使用如下参数:
    subnet 网络地址 netmask 子网掩码地址 {……}
    括号内可有如下的内容:
    range IP1 IP2指定IP1到IP2的地址范围给客户端
    host 主机名 {……}这个host就是指定固定IP对应到固定MAC的设置值,主机名可以自己给与。在大括号内指定MAC与固定的IP。
    hardware ethernet 硬件地址
    fixed-address IP地址
  • #配置DHCP和dns服务的更新模式,一般不用,但是必须有该项,否则服务无法启动
    ddns-update-style { interim | ad-hoe | none };

#作用:定义所支持的DNS动态更新类型。
#none:表示不支持动态更新
#interim:表示DNS互动更新模式
#ad-hoc:表示特殊DNS更新模式

  • ddns-update-style interim; # dns动态更新模式
    ignore client-updates; #这个选项是不允许客户机更新 DNS 记录。当然,也可能允许,但会有一点问题。

#子网配置段
#声明网段和掩码

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;
}

案例一:

  1. 单网段配置 将客户端,主机dhcp选项取消

[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.40.0 netmask 255.255.255.0 {
option routers 192.168.40.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.40.200 192.168.40.254;
default-lease-time 60;
max-lease-time 60;
}
systemctl restart dhcpd

在客户端获取ip地址

案例二

  1. 固定IP配置

[root@localhost 桌面]# vim /etc/dhcp/dhcpd.conf
host boss {
hardware ethernet 00:0c:29:17:b4:32;
fixed-address 192.168.221.250;
}
host ns2 {
hardware ethernet 00:0c:29:7f:32:10;
fixed-address 192.168.40.249;
}

案例三
多网段配置

你可能感兴趣的:(rhce)