面试重点:
- DHCPv4的8个报文
- DHCPv6
- Snooping原理
- CHADDR
- Relay及option82 (ipv4)
DHCP是什么?
动态主机设置协议。是一个局域网的网络协议,基于UDP工作
- 给内部网络或网络服务供应商(ISP)自动分配地址
- 给内部网络管理员作为对用户作为中央管理的手段
DHCPv4的8个报文
DHCP DISCOVER | 首次登陆网络时进行DHCP交互过程发送的第一个报文,寻找DHCP SERVER |
DHCP OFFER | DHCP Server用来相应DHCP DISCOVER报文,携带了各种配置信息 |
DHCP REQUEST | 报文用于以下三种用途: DHCP Client初始化后,发送广播的DHCP REQUEST报文来回应Server的DHCP OFFER DHCP Client重启后,发送广播的DHCP REQUEST报文来确定先前被分配的IP等信息 DHCP Client已和某个IP绑定后,发送DHCP REQUEST单播或广播报文来更新IP地址的租约 |
DHCP ACK | DHCP Server对Client发送DHCP REQUEST报文的确认相应报文,只有当DHCP Client收到此报文后,才真正的获得了IP地址和相关的配置信息 |
DHCP NAK | DHCP Server对Client发送的DHCP REQUESTS报文的拒绝相应报文 |
DHCP DECLINE | 当DHCP Client发送DHCP server分配的IP发生冲突时通过此报文通知Server,重新申请 |
DHCP RELEASE | DHCP Client主动释放DHCP Server分配给他的地址,Server收到后可将此地址给别的设备 |
DHCP INFORM | Client获取IP地址后,如需要向DHCP Server获取更为详细的配置信息(GATEWAY DNS等) |
DHCPv4报文对比v6报文
报文类型 | DHCPv6报文 | DHCPv4报文 | 说明 |
---|---|---|---|
1 | SOLICIT | DHCP DISCOVER | DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置。 |
2 | ADVERTISE | DHCP OFFER | DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。 |
3 | REQUEST | DHCP REQUEST | DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息。 |
4 | CONFIRM | - | DHCPv6客户端向任意可达的DHCPv6服务器发送Confirm报文检查自己目前获得的IPv6地址是否适用与它所连接的链路。 |
5 | RENEW | DHCP REQUEST | DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务器发送Renew报文来延长地址的生存期并更新配置信息。 |
6 | REBIND | DHCP REQUEST | 如果Renew报文没有得到应答,DHCPv6客户端向任意可达的DHCPv6服务器发送Rebind报文来延长地址的生存期并更新配置信息。 |
7 | REPLY | DHCP ACK/NAK | DHCPv6服务器在以下场合发送Reply报文:DHCPv6服务器发送携带了地址和配置信息的Reply消息来回应从DHCPv6客户端收到的Solicit、Request、Renew、Rebind报文。DHCPv6服务器发送携带配置信息的Reply消息来回应收到的Information-Request报文。用来回应DHCPv6客户端发来的Confirm、Release、Decline报文。 |
8 | RELEASE | DHCP RELEASE | DHCPv6客户端向为其分配地址的DHCPv6服务器发送Release报文,表明自己不再使用一个或多个获取的地址。 |
9 | DECLINE | DHCP DECLINE | DHCPv6客户端向DHCPv6服务器发送Decline报文,声明DHCPv6服务器分配的一个或多个地址在DHCPv6客户端所在链路上已经被使用了。 |
10 | RECONFIGURE | - | DHCPv6服务器向DHCPv6客户端发送Reconfigure报文,用于提示DHCPv6客户端,在DHCPv6服务器上存在新的网络配置信息。 |
11 | INFORMATION-REQUEST | DHCP INFORM | DHCPv6客户端向DHCPv6服务器发送Information-Request报文来请求除IPv6地址以外的网络配置信息。 |
12 | RELAY-FORW | - | 中继代理通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端请求报文。 |
13 | RELAY-REPL | - | DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文。 |
- UDP/67 服务端使用
- UDP/68 客户端使用
工作原理:
- 发现——广播
- 提供——单播
- 请求——广播
- 确认——单播
DHCP Snooping
是一种DHCP安全特征,通过MAC地址限制,DHCP Snooping安全绑定、IP+MAC绑定、Option82特征等功能过滤不信任的DHCP信息,解决了设备应用DHCP时,防范利用DHCP报文机制进行攻击的行为
DHCP Snooping会生成一个绑定表,包括:
- MAC地址
- IP地址
- 租约时间
- 绑定类型
- 与DHCP客户端连接接口与属于的VLAN ID
Option82
概述
在传统的DHCP动态分配IP地址过程中,DHCP服务器不能根据DHCP请求信息感知到用户的具体信息,以至于同一VLAN用户得到的IP地址所有用的权限都是相同的。由于网络管理员不能对同一VLAN中的特定用户进行有效控制,即不能控制客户端对网络资源的访问。
DHCP Relay Agent Information option(option 82)该选项记录了DHCP Client的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option82选项,将DHCP Client的精确物理位置信息传递给DHCP Server,从而使得DHCP Server能够为主机分配核实的IP地址和其他配置信息,实现对客户端的安全控制
Option82仅记录了DHCP用户的精确物理位置信息并通过DHCP请求报文中将信息发送给DHCP Server。而如果需要对不通的用户部署不同的地址分配或安全策略,则需DHCP Server支持Option82功能并在其已配置了IP地址分配或安全策略
Option82选项携带的用户位置信息与DHCP Snooping绑定表记录的用户参数是两个相互独立的概念,没有任何关联。Option82选项携带的用户位置信息是在DHCP用户申请IP地址时(此时用户还未分配IP地址),由设备添加到DHCP请求报文中,DHCP Snooping绑定表是在设备收到DHCP Server回应的DHCP ACK报文时(此时已为用户分配了IP地址),设备根据DHCP Ack报文信息自动生成。
实现
设备作为DHCP Relay或设备在二层网络作为接入设备并使能DHCP Snooping功能时均可支持Option82功能。使能设备的Option82有两种方式,使能方法不同设备对DHCP请求报文的处理也不同
- Insert方式:设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则判断Option82选项中是否包含Remote-ID,如果包含,则保持Option82选项不变,如果不包含,则插入Remote-ID。
- Rebuild方式:设备收到DHCP请求报文,若该报文没有Option82选项,则插入;若报文中含有Option82选项,则删除改Option82选项并插入管理员自己再设备上配置的Option82选项
对于Insert和Rebuild两种方式,当设备接收到DHCP服务器的相应报文时,处理方式一致
- DHCP相应报文中有Option82选项:
- 如设备收到的DHCP请求中没有Option82,则设备删除DHCP相应中的Option82选项,之后转发给Client
- 如设备收到的DHCP请求中有Option82,则设备将相应报文中Option82选项格式还原成请求中的Option82,转发给Client
- DHCP相应报文不含有Option82:直接转发
续租
- 当租期达到50%时,DHCP客户端自动以单播方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到服务器回应DHCP ACK报文,则租期更新成功(则租期从0开始计算)
- 当租期达到87.5%时,如仍未收到DHCP服务器应答,DHCP客户端会自动以广播方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到ACK则租期更新。如收到DHCP NAK,则重新发送DHCP DISCOVER报文请求新IP地址
- 如果租期时间都没收到服务器回应,客户端停止使用IP地址,重新发送DHCP DISCOVER请求新IP地址
华为的命令
全局使能dhcp snooping:
Dhcp snooping enable[ipv4 / ipv6]
配置防止仿冒DHCP报文攻击:
Dhcp snooping check user-bind enable
配置防止DHCP Server拒绝服务攻击:
Dhcp snooping max-user-number 10
//配置接口允许学习的DHCP SNOOPING绑定表项的最大个数
Dhcp snooping check mac-address enable
//能检测DHCP REQUEST报文帧头MAC与DHCP数据区中的CHADDR字段是否一致
Dhcp snooping alarm threshold 10
//配置全局DHCP SNOOPING丢弃报文数量的告警阈值
Dhcp snooping alarm mac-address threshold 100
//配置帧头MAC地址与DHCP数据区中CHADDR字段不匹配而丢弃的DHCP报文的告警阈值
Dhcp snooping trusted
//配置接口为“信任”接口
常见攻击手段
1、DHCP DOS
--攻击者通过修改帧头部的源MAC并请求地址
--攻击者通过修改帧内部的CHADDR不断请求地址
耗尽地址池
2、MITM
通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信设备之间,并且盗用这两台设备的信息分别与对端设备通信
3、IP/MAC Spoofing
欺骗攻击,通过伪造他人的信息,攻击者可以假扮成合法的用户来使用网络服务,但真正的合法用户却不能获得服务
攻击者向服务器发送带有合法用户IP和MAC的报文,令服务器误以为已经学到这个合法用户的IP和MAC。服务器将合法信息都发往攻击者,而真正的合法用户不能从服务器获得服务
4、续租攻击
攻击者冒充并不断续租IP地址长期占用IP地址
一般来说续租攻击+DHCP DOS攻击饿死全部IP地址
自我思考
- DHCP Option续约的防范?
- IP地址分配顺序(优先级)?
- DHCP Snooping绑定表的生成方式?