目录
DHCP
DHCP基本概念
DHCP的作用
最开始DHCP是用来解决IPv4公网地址不够用的情况(动态回收:哪台主机要上网,就给哪台主机分配一个公网地址,后续要上网的主机越来越多,公网地址不够用,DHCP也就无法解决该问题了;后续通过NAT解决了IPv4地址不足的问题)
目前主要作用是为客户端分配IP地址,使得客户端使用IP地址上网(手工配置的IP地址和动态IP地址可以共存–前提是地址不冲突)
使用DHCP分配地址的优势
减少IP地址的配置
防止IP地址冲突
简化运维(所有的终端IP都由DHCP服务器分配,集中管理监控)
DHCP端口号
DHCP主要有两个端口号,分别是UDP67和UDP68
DHCP客户端向DHCP服务器发送报文时采用67端口号,DHCP服务器向DHCP客户端发送报文时采用68端口号(服务端监听的端口为67,客户端监听的端口为68)
DHCP报文格式
DHCP报文格式
标准字段
Message type(op)
client发给服务端为1,服务端发给client为2
Haedware type(htype)
硬件类型-数据链路层类型(Ethernet为1)
Hardware address length(hlen)
硬件地址长度(字节)
Hops
如果数据包需要经过router传输,每经过一个该字段加1
Transaction ID(xid)
事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息
Seconds elapsed(secs)
客户端开始地址获取或IP地址进行续约后到现在所过去的时间(由用户指定的时间)
Flags
只使用最左边bit位(0表示服务器将报文采用单播发送给客户端,1表示服务器采用广播将报文发送给客户端)
Client IP address(ciaddr)
客户端的地址(由客户端填入)
Your Client IP address(yiaddr)
客户端的地址(由服务器填入)
Next Server IP address(siaddr)
DHCP服务器为客户端分配的其它DHCP服务器地址(由服务器填入)
Relay agnet IP address(giaddr)
转发代理IP地址(网关IP地址—用于DHCP中继场景,无DHCP中继则为0)
Client MAC address(chaddr)
客户端的硬件地址
Server Host name(sname)
服务器主机名
File
DHCP服务器为DHCP客户端指定的启动配置文件名称以及路径信息
Option字段
会有每个厂商自定义的标识(每段标识由代码+长度+数据)组成
常用的option
DHCP的报文类型
Discover 用来寻找DHCP服务器(广播)
Offer 服务器用来响应discover报文(携带了各种配置信息)(广播/单播)
Request 客户端初始化时用来回应服务器发送的Offer报文(广播);客户端重启时用来确认先前被分配的IP地址等配置信息(广播);客户端进行IP地址续约时发送(广播/单播)
Ack 服务器对Request报文的确认响应报文(客户端收到此报文后,才真正获得了IP地址和相关的配置信息)(广播/单播)
Decline 客户端发现服务器分配的地址冲突,发送此报文重新申请地址(单播)
Release 客户端主动释放服务器分配的IP地址(单播)
Inform 客户端获取IP地址后向服务器请求其他配置信息(网关地址、DNS服务器等信息)(单播)
Nak 服务器对客户端Request报文的拒绝响应报文(单播)
客户端发送报文:Discover、Request、Deline、Release、Inform
服务器发送报文:Offer、Ack、Nak
DHCP工作过程
1、客户端发送一个广播discover报文
2、Server收到报文后,会向客户端发送offer报文(携带为客户端分配的地址)
3、客户端收到offer报文后,会服务器发送广播request报文
4、Server收到报文之后会回复一条ACK进行确认
5、客户端收到ack之后会执行DAD(重复地址检测),如果冲突了会给服务器发送decline报文,告知这个地址无法使用,然后重新获取IP地址
DHCP正常场景的报文交互流程
为什么DHCP Request报文也是广播的
当网络中有多台server服务器,就会分配多个offer;客户端会使用第一个收到的offer报文中携带的地址作为本机地址;此时发送广播request报文,即可以告诉offer报文所对应DHCP服务器我使用了哪个地址,也可以告诉其它服务器将offer里的地址回收,可以分配给其他主机了
服务器发送Offer和Ack有单播和广播两种情况,具体如何发送?
这取决于客户端发送的Discover和Request报文中携带的Boot Flags字段(大多数情况下都是单播)
如果Boot Flags = 0x8000 ,则服务器回应时发广播
如果Boot Flags = 0x0000 ,则服务器回应时发单播
DHCP中继
使用场景
DHCP中继主要使用在DHCP服务器和客户端是不同网段的场景(即DHCP服务器集中为不同网段分配地址)
具体工作原理
因为客户端发来的DHCP Discovery广播包无法跨三层接口,当服务器与客户端为不同网段时,服务就收不到客户端发来的DHCP请求,就无法为客户端分配IP地址
工作流程
- DHCP中继就是,将与客户端直连的三层设备配置为DHCP中继器,当该中继器收到客户端发来的DHCP Discover和Request广播报文时,将其重新封装为源地址为自己,目的地址为DHCP服务器的单播DHCP Discover和Request报文(即需要在DHCP中继服务器上配置DHCP服务器的地址,并且可达),将其发往DHCP服务器
- DHCP服务收到该单播DHCP Discover和Request报文后,解析其中的Relay agent IP字段得到中继服务器的IP地址,然后将DHCP Offer和Ack报文单播发送给DHCP 中继器(源为自己的IP地址,目的地址为DHCP中继器的地址)
- DHCP收到该单播DHCP Offer和ACK报文后,重新封装报文发给客户端(源目IP为自己的地址,目的为DNS服务器为客户端分配的地址)
DHCP中继场景报文交互(10.0.0.1为DHCP中继器的地址、30.0.0.1为DHCP服务器地址、10.0.0.254为DHCP服务器分配给客户端的地址)
客户端和DHCP中继之间的报文
DHCP中继器和DHCP服务器之间的报文
DHCP租期续租
1、客户端发现租期到达T1时间时(一般为50%),发送单播Request报文(如果得不到服务器回应,还是会继续使用此地址)
2、客户端发现租期到T2时间时(一般为87.5%),发送广播Request报文(如果服务器还得不到回应,当租期到期后会发送Release释放此地址,重新发送Discover报文申请地址
注意:当服务器发生Request里的地址没有租约记录时,会发送nak报文进行回收
DHCP相关攻击
DHCP欺骗攻击
攻击原理
黑客伪造DHCP服务器为客户分配错误的信息
造成的影响
为用户分配假的网关–造成信息拦截篡改
为用户分配假的DNS服务器–使得用户进入钓鱼网站
为用户分配冲突的地址–使得用户无法使用地址通信
防御手段
DHCP Snooping(信任接口和非信任接口)
交换机的上行口一般设置为信任接口
非信任接口拦截DHCP的Offer和Ack报文DHCP饿死攻击
攻击原理
DHCP饿死攻击也称为DHCP拒绝服务攻击
攻击者发送大量恶意请求报文(修改DHCP报文中chaddr-客户端MAC地址字段),耗光DHCP服务器地址池中的地址(服务器也是根据chaddr来分配地址的,一个chaddr对应一个地址–而不是根据数据链路层的MAC地址来分配的)
导致DHCP服务器无法为正常主机分配IP地址
防御手段
通过DHCP Snooping校验客户端发来的chaddr和mac值是否一致,chaddr和MAC不对应则会将报文丢弃(因为攻击者是通过修改DHCP报文中chaddr来实现泛洪攻击的,数据链路层MAC地址不会更改)
但是目前黑客也会修改数据链路层MAC,因此只使用DHCP Sooping无法完全防御;可以通过结合端口安全来实现防御(指定接口的MAC地址学习数量)
DHCP Snooping理论与配置_dhcp snooping vlan-CSDN博客
DHCPv6
DHCPv6没有广播报文,通过组播报文来实现,用到的组播地址有两个
FF02::1:2:所有DHCPv6服务器和中继代理的组播地址,用于客户端和相邻的服务器及中继代理之间通信
FF05::1:3:所有DHCPv6服务器组播地址,用于中继代理和服务器之间的通信
DHCPv6端口号
DHCPv6报文承载在UDPv6上
客户端侦听的UDP目的端口号是546;服务器、中继代理侦听的UDP端口号是547
即客户端发送时端口号为547,服务器发送时端口号为546
DHCPv6报文
Solicit 同dhcpv4 的discover
Advertise 同dhcpv4 的offer
Request 同dhcpv4 的request(请求IPv6地址)
Reply 同dhcpv4 的 ack/nck
Renew 同dhcpv4 的request(进行续约-单播)
Rebind 同dhcpv4 的request(Renew无应答,广播向任意服务器请求延长此地址)
Release 同dhcpv4 的release
Decline 同dhcpv4 的decline
Informmation-Request 同dhcpv4 inform
Confirm 客户端向任意可达的v6服务器发送此报文检查自己目前获得的IPv6地址是否适用与它所连接的链路
Reconfigure 服务器向客户端发送此报文,提示客户服务器上存在新的网络配置i休尼希
Relay-Forw 中继代理向服务器转发客户端的请求报文
Relay-Repl 服务器向中继代理发送报文(携带了转发给客户端的报文)
DHCPv6工作原理
四步获取地址
两步快速获取地址
1、DHCPv6客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址和网络配置参数。
2、DHCPv6服务器接收到Solicit报文后,将进行如下处理:
如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分配IPv6地址和其他网络配置参数,Reply报文中也携带Rapid Commit选项。
如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配IPv6地址/前缀和其他网络配置参数。
无状态工作过程
1、DHCPv6客户端以组播方式向DHCPv6服务器发送Information-Request报文,该报文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数。
2、DHCPv6服务器收到Information-Request报文后,为DHCPv6客户端分配网络配置参数,并单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。DHCPv6客户端根据收到Reply报文提供的参数完成DHCPv6客户端无状态配置。
今天的文章
dhcp的六种报文类型_解决局域网多个dhcp冲突分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80303.html