DHCP基础知识汇总以及DHCP Snooping的简单介绍

目录

  • DHCP基础知识汇总
    • DHCP报文种类
    • 报文结构分析
    • DHCP同网段的通信原理
    • 服务器IP地址分配顺序
    • DHCP中继器的介绍和注意点
    • DHCP Snooping介绍
    • DHCP Snooping的应用场景

DHCP基础知识汇总

主要是关于DHCP报文类型、报文结构、同网段通信原理以及帧中继的基础内容

DHCP报文种类

DHCP有八种报文种类,其中常见的是前7种报文,比较重要的是前4种报文,如下:

  1. DHCP DISCAVER报文:DHCP客户端在本地网络以广播的形式发送discover请求报文(源IP:0.0.0.0 目的IP:255.255.255.255),用于发现网络中的DHCP服务器;
  2. DHCP OFFER报文:DHCP服务器收到discover请求报文后,会查找地址池里可用IP地址,并将租期、子网掩码、网关、DNS等信息一同封装在offer请求报文(源IP:DHCP服务器 目的IP:255.255.255.255)以广播的方式发送出去并且在服务器上添加租约记录;
  3. DHCP REQUEST报文:客户端用于请求收到offer报文里的IP地址所发送的request请求报文(源IP:0.0.0.0 目的IP:255.255.255.255);在租期时间只剩1/2时,也会发送该报文用于请求延长租期,如果DHCP没有回复ACK应答报文,就会在租期时间只剩7/8时,也会再次发送该报文用于请求延长租期;
  4. DHCP ACK报文:服务器收到客户端的request报文,请求的IP地址及参数无误就会发送ACK应答报文(源IP:DHCP服务器 目的IP:255.255.255.255)同意客户端的请求;根据该报文的用户Mac地址查找是否有相应的租约记录,如果有就发送ACK报文同意续租(收到续租时发送request报文);
  5. DHCP NAK报文:如果服务器收到的request报文中请求的IP地址及参数有误或没有相应的租约记录就会发送NAT应答报文,通知客户端无法分配IP地址或者续约;
  6. DHCP RELEASE报文:客户端主动释放IP地址时就会发送该报文,用于告知服务器不再使用该IP地址,服务器就能快速收回地址;
  7. DHCP DELINE报文:客户端获得IP地址后,发送免费ARP发现服务器分配的IP地址已经被使用或者由于某种原因使得该IP不能正常使用,就会发送该报文通告DHCP服务器地址不可用,希望获取新的IP地址;
  8. DHCP INFORM报文:客户端有IP地址但没有其他参数就会向DHCP发送inform报文请求获取其他参数(很少见);

注:在客户端获取IP地址过程中,所有报文都是采用广播形式发送(同网段);如果有DHCP中继器,那么中继器与客户端发送的报文都是广播形式,中继器与DHCP服务器之间发送的报文都为单播形式;

报文结构分析

DHCP基础知识汇总以及DHCP Snooping的简单介绍_第1张图片

报文字段 说明
OP 指定DHCP报文的类型,请求报文置为1,应答报文置为2(请求报文包含:discover报文,request报文,decline报文,release报文,inform报文;应答报文包括:offer报文,ack报文,nak报文)
Hype 指定客户端MAC地址类型,该字段置为1表示最常见的以太网类型
Hlen 指定客户端MAC地址的长度
Hops 指定DHCP经过DHCP中继器的数量,请求报文经过一个DHCP中继器该字段就会增加1,没有经过置为0
Xid 在客户端发送discover报文时随机产生的标识符,用于标识IP地址请求过程,整个IP地址的请求过程使用的都是一样的,简单来说,整个IP地址请求的过程都使用discover报文产生的XID值,便于区分不同客户端的IP地址请求过程(一个DHCP服务器有多个客户端,便于区分不同客户端的IP地址请求过程)
Secs 指客户端获取到IP地址后已使用的时间或者续约成功后IP地址已使用时间(定时器,确定IP地址租期是否过期)单位为秒,没有获取IP地址之前置为0
Flags 标识应答报文是采用单播还是广播发送,置为0是单播发送,置为1是广播发送(只使用第一位,其余位未使用)
Ciaddr DHCP客户端的IP地址;在没有获取到IP地址之前该字段都置为0.0.0.0
Yiaddr DHCP服务器分配给客户端的IP地址,除offer和ACK报文,其他报文该字段为0.0.0.0(只有应答报文才有该字段)
Siaddr DHCP服务器的IP地址,除offer和ACK报文,其他报文该字段为0.0.0.0(只有应答报文才有该字段)
Giaddr DHCP客户端发送的报文经过的第一个DHCP中继器的IP地址,没有经过中继器就置为0.0.0.0
Chaddr 记录DHCP客户端的MAC地址,每个报文中都有
Sname 记录为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式),除了offer和ACK报文(应答报文),其余报文均为空
File 记录DHCP服务器为DHCP客户端启动的配置文件以及文件路径信息;仅在offer报文中存在,其余报文为空
Options 可选字段,长度可变,最多为312字节;该字段包含了报文类型、有效租约时间、网关、子网掩码、DNS服务器、域名称、续约时间等

Options字段可以包含的内容(仅供了解),如下

Options代码号 长度/字节 说明
1 4 子网掩码
3 长度可变,必须是4字节的倍数 默认网关(可以是路由器IP地址列表)
6 长度可变,必须是4字节的倍数 DNS服务器地址(可以是DHS服务器地址列表)
15 长度可变 域名称(注DNS服务器名称)
44 长度可变,必须是4字节的倍数 WINS服务器(可以是WINS服务器地址列表)
51 4 有效租约时间,单位秒
53 1 报文类型,数值从1-8依次表示的报文为:Discover报文、Offer报文、Request报文、Decline报文、ACK报文、NAK报文、Release报文和Inform报文
58 4 续约时间,单位秒

DHCP同网段的通信原理

客户端在请求获取IP的过程中,以广播的形式发送DHCP Discover请求报文(OP置为1,Ciaddr置为0.0.0.0;Yiaddr置为0.0.0.0;Siaddr置为0.0.0.0;Chaddr置为客户端的MAC地址;Options字段为基础信息)用于发现本地网络的DHCP服务器

当DHCP服务器收到discover报文后,会以广播的形式回复DHCP Offer应答报文(OP置为2;Ciaddr置为0.0.0.0;Yiaddr置为DHCP可分配的IP地址;Siaddr置为DHCP服务器IP;Chaddr置为客户端的MAC地址;Sname置为DHCP服务器的名称;Options字段里含有相应的子网掩码、默认网关、DNS服务器IP、有效租约期、服务器IP地址)用于通告客户端,DHCP服务器可以分配的一个IP地址以及相应相应的参数

客户端只会接收第一个收到的Offer报文,后续的Offer报文(其他DHCP服务器)丢弃,收到discover报文之后,客户端会以广播的形式发送DHCP Request请求报文(OP置为1;Ciaddr置为0.0.0.0;Yiaddr置为0.0.0.0;Siaddr置为0.0.0.0;Sname置为空;Options字段包含服务器主机名、请求的IP地址、服务器的IP地址等)用于告诉服务器,客户端需要申请的IP地址

服务器收到Request报文,如果请求的IP地址以及参数无误并同意分配,就会以广播的形式发送DHCP ACK应答报文(OP置为2;Ciaddr置为0.0.0.0;Yiaddr置为被分配的IP;Siaadr置为服务器的IP地址;Sname置为服务器的名称;Options字段包含子网掩码、默认网关、DNS服务器IP地址、有效租约期等)用于通知客户端,服务器同意该IP地址后的申请;如果服务器不同意IP地址的申请,会以广播形式发送NAK应答报文(OP置为2;Ciaddr置为0.0.0.0;Yiaddr置为被请求的IP地址;Siaddr置为服务器IP地址;Options字段包含相应参数)

客户端收到ACK报文,就会使用该IP地址,在使用之前会以广播形式发送免费ARP(源MAC:客户端的Mac、目的Mac:广播Mac;源IP:请求的IP地址、目的IP:请求的IP地址)[源/目IP的IP地址是相同的]用于探测本地网络中该IP地址是否被使用,如果有设备回复,就会发送DHCP Decline请求报文(OP置为1;Ciaddr置为0.0.0.0;Yiaddr置为0.0.0.0;Siaddr置为0.0.0.0;Options字段包含服务器IP、服务器名称、请求的IP地址等),请求服务器重新分配IP地址;如果在规定时间里没有收到回复,客户端使用该IP地址;

如果客户端不再使用该IP地址,就会以单播形式发送DHCP Release请求报文(OP置为1;Ciaddr置为0.0.0.0;Yiaddr置为0.0.0.0;Siaddr置为0.0.0.0;Options字段包含服务器IP、服务器名称、请求的IP地址等)用于客户端释放被请求的IP地址;服务器收到Release报文,会以广播形式发送ACK应答报文;

当客户端IP地址的租期期限只剩1/2时,就会以单播形式发送Request请求报文通告服务器自己想重新续约,如果服务器不同意续约,就会以单播形式发送NAK应答报文,告诉客户端不同意续约,如果同意就以单播形式发送ACK应答报文;当客户端IP地址的租期期限到了7/8时,会再次发送Request请求报文,与上述相同

上述过程,如下图所示:

客户端 服务器 广播发送Discover报文 广播响应Offer报文 广播发送Request报文 广播响应ACK报文或NAK报文 客户端 服务器

服务器IP地址分配顺序

  • 服务器的数据库与客户端绑定的IP地址
  • 客户端以前使用过的IP地址
  • 在DHCP地址池里按照顺序查找,最先找到的IP地址
  • 如果在地址池中未找到可分配的IP地址,则依次查找查过租期、发生地址冲突的IP地址,仍没找到可用IP地址就报错

DHCP中继器的介绍和注意点

Option82是DHCP报文中的中继代理信息选项,该选项记录了客户端的物理位置信息;该选项最多支持255个子选项,目前设备主要支持的是sub-option1(Ciruit ID,电路ID子选项)、sub-option2(Remote ID,远端ID子选项)

Sub-option1的内容用于接收DHCP客户端请求报文的端口所属的VLAN编号(对应“VLAN ID”字段)以及端口索引(取值为端口的物理编号减一,对应“Port Index”字段)
DHCP基础知识汇总以及DHCP Snooping的简单介绍_第2张图片
Sub-option2的内容用于接收客户端请求报文的DHCP中继器的MAC地址(对应“MAC”字段)
DHCP基础知识汇总以及DHCP Snooping的简单介绍_第3张图片
跨网段和同网段的DHCP获取IP地址过程基本相同,只是多了DHCP中继器,报文的Options字段里会添加一个Option82字段;

当DHCP中继器收到客户端发送的请求报文后,会检测该报文是否含有Option82字段,如果含有该字段,DHCP中继器会根据预先配置的策略对报文进行处理(丢弃或保持原有Option82或使用DHCP中继器自身的Option82代替),同时根据Sub-option1的VLAN ID和Port Index字段,找到为对应网段分配地址的服务器,将报文中的Giaddr字段置为DHCP中继器的IP地址;

如果不含有Option82字段,就会将DHCP中继器自身的Option82填充进报文,以单播形式发送给DHCP服务器;

DHCP中继收到服务器发送的应答报文就会剥离Option82字段,以广播形式转发出去。

跨网段通信,如下图所示:

客户端 DHCP中继器 服务器 广播发送Discover报文 单播发送Discover报文 单播响应Offer报文 广播发送Offerr报文 广播发送Request报文 单播发送Request报文 广播响应ACK报文或NAK报文 广播发送ACK报文或NAK报文 客户端 DHCP中继器 服务器

DHCP Snooping介绍

DHCP Snooping是一种DHCP安全技术,能够有效防止网络中仿冒DHCP服务器的攻击,保证客户端从合法的服务器获取IP地址,而且能够记录DHCP客户端IP地址与MAC地址等参数的对应关系而生成绑定表,同时还可以防范各种基于DHCP服务器攻击。

信任功能:信任端口(正常转发DHCP应答报文)、非信任端口(丢弃接收的DHCP应答报文,offer报文、ACK报文、NAK报文);

基本监听功能:通过监听DHCP的请求和应答报文,生成DHCP Snooping绑定表,绑定表项包括,客户端的MAC地址、IP地址、端口号以及端口所属的VLAN号等

注:DHCP Snooping绑定表根据IP地址的DHCP租用期进行老化,或根据用户释放IP地址所发送的release报文自动删除对应项;DHCP Snooping一般在接入网络的二层设备上或中继设备上开启

DHCP Snooping的应用场景

  • 防止DHCP服务器仿冒攻击:开启DHCP Snooping信任端口功能。对于真实的DHCP服务端口方向开启信任端口,其他开启非信任端口;
  • 防止DHCP报文泛洪攻击(通过改变CHADDR字段发送大量的Request报文):在开启DHCP Snooping功能的同时,开启对DHCP报文上送DHCP报文处理单元的速率进行检测的功能,超过速率范围的报文就丢弃(设置设备或者接口允许的最大接入用户数,超过该用户数就不允许申请IP地址);
  • 通过支持的option82实现对客户端的控制:根据option82的两个子项获取客户端的详细地理信息,根据客户端精确物理详细信息上已配置的分配IP策略或安全策略为用户分配合适的IP地址和其他配置信息

你可能感兴趣的:(网络基础知识)