DHCP 基础
1. 简介
◼ Dynamic Host Configuration Protocol——动态主机设置协议
◼ DHCP 采用 CS 的工作模式,Sever 使用 UDP67 端口,Client 使用 UDP68 端口
◼ 自动为网络内部的某些设备分配 IP 地址,还可以作为网络管理员对网络的中央管理手段
2. 工作原理
◼ Client 端首先发送 Discover 报文,寻找 DHCP 服务器
◼ 收到 Discover 报文的 DHCP 服务器回送 Offer 广播报文,表示将为其提供地址
◼ Client 收到 Offer 报文之后,发送 Request 报文请求地址
◼ Sever 回送其 Ack 报文,为其分配地址
【注】
如果网络中存在多个DHCP 服务器,PC在发出Discover报文之后,可能收到来自不同DHCP服务器的多个Offer报文,此时,PC仅会认可收到的第一个Offer报文的DHCP服务器,PC所发送的Request在向选中的DHCP server请求IP地址的同时,也通告了其他DHCP服务器,自己已经有了可以申请地址的服务器,避免其他DHCP服务器的盲目等待。
3. DHCP relay
【场景】
◼ 由于DHCP的Client和Server之间使用的都是广播报文,所以如果服务器与客户端不在同一广播域内,那么DHCP的服务器将会失效。
【解决方案】
◼ 在沿途阻塞客户端广播消息的第一个接口配置DHCP Relay(一般部署在网关)。DCHP relay会将Client的广播报文转换为单播的形式发送给Sever。
◼ 当客户端的网关为svi接口或是单臂路由的子接口时,DHCP Relay部署在这逻辑接口上即可
【原理】
当Client发送的广播报文到达DHCP Relay时,中继会为其封装三层头部,目的IP地址为DHCP服务器地址,源IP地址为Relay的IP地址,数据包会以点对点单播的形式传递给DHCP服务器,DHCP服务器再以单播形式回送给中继,回送数据包的目的IP地址为DHCP中继接口地址,源为DHCP服务器地址,中继接口收到数据包后,拆除三层头部,再以广播形式发送给客户端。
4. DHCP snooping
【场景】
◼ 在此场景中,Client 通过 DHCP 服务器拿到 IP 地址和网关后,client 的数据流量,先去往网关路由器,
然后进行正常转发。
◼ 此时有一个黑客,他干掉了原本的 DHCP 服务器,自己伪造一个 DHCP sever 为 client 分配 IP 地址和
网关,如果此时他将分配的网关设为自己,那么 client 的所有数据流量都将会经过其手,他可以肆意
对数据流量进行分析,并且 client 也不会感知。
【解决方案】
◼ 在交换机上开启 DHCP snooping,并将连接 DHCP 服务器的接口设置为信任。
◼ 这样当黑客伪造的 DHCP 服务器尝试给 client 分配地址信息时,交换机会丢弃其数据包,只有从 trust
接口接收到的 DHCP 的数据包才被允许通过
【配置】
Sw(config)# ip dhcp snooping
//开启DHCP snooping功能
Sw(config)# ip dhcp snooping vlan [vlan-id]'
//在指定vlan下应用DHCP snooping功能,一般是client所属的vlan
Sw(config-if)# ip dhcp snooping trust
//将接口设置为trust,此接口为连接DHCP服务器方向的接口,此处为e0/1接口
Sw(config-if)# ip dhcp snooping limit rate [pps]
//设置每秒钟接收DHCP报文的上限,用于预防拒绝服务攻击,可以选择10
//超过后接口就shutdown,默认不限制
Sw(config-if)# do show ip dhcp snooping
//查看状态
5. 配置语句
【Sever】
R(config)# service dhcp
//开启DHCP服务。Cisco设备默认开启
R(config)# ip dhcp pool [pool_name]
//定义DHCP地址池,一个网段对应一个地址池
R(dhcp-config)# network [network_address] [subnet mask]
//定义地址池关联网段,分配的地址会从此网段从小到大进行分配
R(dhcp-config)# default-router [host_address]
//定义分配给客户端的网关
R(dhcp-config)# dns-server [host_address]
//定义分配给客户端的DNS服务器地址
R(config)# ip dhcp excluded-address [A.B.C.D]
//将指定地址排除地址池之外,一般将客户端的网关剔除地址池
【Client】
R(config-if)# ip address dhcp
//将client端获取地址的方式指定为DHCP
【relay】
Switch(config-if)#ip helper-address [DHCP_address]
//激活中继功能,配置在沿途阻塞客户端广播消息的第一个接口上
//svi作为客户端网关时,配置在svi接口上
6. 园区网综合实验
【拓扑】
此园区网实验来着朱仕耿老师的专题视频