### 一、DHCP
#### 1、DHCP中继代理原理
**问题:**
-当客户机和DHCP服务器不在一个广播域时,DHCP服务器无法接收到客户机的DHCP discover广播数据包,客户机就无法获得IP地址;
**解决:**
-在客户机所在的广播域中,寻找一台路由器,这台路由器一个端口在客户机所在的广播域,另外一个端口在DHCP服务器所在的广播域,让这台路由器主动接收客户机的DHCP discover数据包,然后由这台路由器代替客户机向DHCP服务器申请IP地址,得到地址后,再把这个地址交给客户机,这台服务器称之为DHCP中继代理服务器;
配置步骤:
第一步:配置R2-DHCP服务器
1)在系统视图下开启DHCP功能
2)在R2-DHCP服务器中配置基于全局的DHCP
-创建IP地址池:tedu
-定义网段:192.168.1.0/24
-定义网关:192.168.1.254
-定于DNS:8.8.8.8
-定义租期:1天
-定义排除地址:192.168.1.253 这个IP地址不做DHCP分发
3)配置接口地址,配置静态路由
-在R2配置去往192.168.1.0网段的路由,下一跳为10.10.10.10
第二步:配置DHCP中继
1)R1中继设备开启DHCP功能
2)配置R1中继设备的接口IP地址
3)在R1设备连接客户端的接口上开启DHCP中继,指向DHCP服务器:10.10.10.20
第三步:验证与测试
第一步:配置DHCP服务器
DHCP服务器配置:
[DHCP-R2]dhcp enable //开启dhcp 功能
[DHCP-R2]ip pool tedu / /创建IP地址池
[DHCP-R2-ip-pool-tedu]network 192.168.1.0 mask 24 //定义网段
[DHCP-R2-ip-pool-tedu]gateway-list 192.168.1.254 //定义网关
[DHCP-R2-ip-pool-tedu]dns-list 8.8.8.8 //定义DNS
[DHCP-R2-ip-pool-tedu]lease day 1 //定义租期
[DHCP-R2-ip-pool-tedu]excluded-ip-address 192.168.1.253 //定义排除地址
//排除192.168.1.253这个地址,这个地址不做DHCP分发
[DHCP-R2-ip-pool-tedu]quit
[DHCP-R2]int g0/0/0
[DHCP-R2-G0/0/0]ip address 10.10.10.20 24
[DHCP-R2-G0/0/0]dhcp select global //在接口下开启基于全局的dhcp
[DHCP-R2]ip route-static 192.168.1.0 24 10.10.10.10 //配置静态路由
第二步:配置DHCP中继
DHCP中继配置:
[R1-zj]int g0/0/1
[R1-zj-GigabitEthernet0/0/1]ip address 10.10.10.10 24
[R1-zj-GigabitEthernet0/0/0]quit
[R1-zj]dhcp enable /开启dhcp 功能
[R1-zj]int g0/0/0
[R1-zj-GigabitEthernet0/0/0]ip address 192.168.1.254 24
[R1-zj-GigabitEthernet0/0/0]dhcp select relay //设置DHCP中继接口模式:relay
[R1-zj-GigabitEthernet0/0/0]dhcp relay server-ip 10.10.10.20
//指定DHCP中继接口的DHCP服务器地址
relay 转发 release释放 renew更新 excluded排除
第三步:验证与测试
在PC1和PC2中设置IP地址的获取方式为DHCP
在PC1和PC2中命令行中输入命令:
ipconfig /release //释放当前IP地址
ipconfig /renew //更新IP地址(获取IP地址)
经验验证发现:
PC1的IP地址是192.168.1.252
PC2的IP地址是192.168.1.251
192.168.1.253这个地址,已经被排除,没有被DHCP分发
扩展知识:
[DHCP-R2]display ip pool name tedu
Pool-name : tedu //地址池名字
Lease : 1 Days 0 Hours 0 Minutes //租期
DNS-server0 : 8.8.8.8 //DNS
Gateway-0 : 192.168.1.254 //网关地址
Mask : 255.255.255.0 //掩码
-----------------------------------------------------------------------------
起始地址 结束地址 全部 已使用的地址 未分发的 冲突 排除的
Start End Total Used Idle(Expired) Conflict Disable
-----------------------------------------------------------------------------
192.168.1.1 192.168.1.254 253 2 250(0) 0 1
-----------------------------------------------------------------------------
<DHCP-R2>display ip pool name tedu all //查看地址池中全部IP信息
<DHCP-R2>display ip pool name tedu used //查看地址中已使用的IP地址
Pool-name : tedu
Lease : 1 Days 0 Hours 0 Minutes
DNS-server0 : 8.8.8.8
Gateway-0 : 192.168.1.254
Mask : 255.255.255.0
-----------------------------------------------------------------------------
Start End Total Used Idle(Expired) Conflict Disable
-----------------------------------------------------------------------------
192.168.1.1 192.168.1.254 253 2 250(0) 0 1
-----------------------------------------------------------------------------
Network section :
--------------------------------------------------------------------------
Index IP MAC Lease Status
--------------------------------------------------------------------------
250 192.168.1.251 5489-9811-58ce 2346 Used
251 192.168.1.252 5489-985f-7ebf 1801 Used
<R1-zj>display dhcp relay all
Server IP address [01] : 10.10.10.20 //DHCP服务器IP地址
Gateway address in use : 192.168.1.254 //网关IP地址
2、DHCP Server仿冒者攻击
1)仿冒攻击攻击原理:
-由于DHCP 服务器和DHCP 客户端之间没有认证机制,所以如果在网络上随意添加一台恶意的DHCP服务器,它就可以为客户端分配恶意且错误的IP地址,不仅可以导致客户端无法上网,而且容易造成客户端信息泄露,从而会对网络造成非常大的危害,**为什么会这样呢?**
-因为DHCP客户端发送的DHCP Discover报文是以广播形式发送,无论是合法的DHCP 服务器,还是非法的DHCP Server都可以接收到DHCP Discover报文,如果此时非法的DHCP仿冒服务器,回应给DHCP 客户端,恶意的仿冒信息(如:错误的IP、错误的网关、错误的DNS),DHCP 客户端无法分辨这些信息,所以最终导致DHCP客户端无法上网和信息泄露
2)如何防御DHCP Server仿冒者攻击
-DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP地址
-DHCP Snooping信任功能将接口分为信任接口和非信任接口
- 信任接口:
&:信任接口接收DHCP服务器回应的的 DHCP ACK、DHCP Offer
&:设备只会将DHCP客户端的请求报文通过信任接口发送给合法的DHCP服务器
- 非信任接口:
&:非信任接口在接收到DHCP服务器响应的DHCP ACK、DHCP Offer报文后,会丢弃该报文
-所以我们将连接合法DHCP服务器的接口设置为信任接口即可,其他接口默认是非信任接口
&:连接合法DHCP服务器的接口为信任接口
&:连接客户端的接口开启snooping功能
第一步:配置合法DHCP服务器:
SW3-DHCP配置:
[SW3-DHCP]dhcp enable //开启dhcp 功能
[SW3-DHCP]ip pool tedu2 //创建IP地址池
[SW3-DHCP-ip-pool-tedu2]network 192.168.20.0 mask 24 //定义网段
[SW3-DHCP-ip-pool-tedu2]gateway-list 192.168.20.254 //定义网关
[SW3-DHCP-ip-pool-tedu2]dns-list 8.8.8.8 //定义dns
[SW3-DHCP-ip-pool-tedu2]quit
[SW3-DHCP]int vlanif1 //进入vlanif 1
[SW3-DHCP-Vlanif1]ip address 192.168.20.254 24 //给vlanif 1 配置IP地址--网关地址
[SW3-DHCP-Vlanif1]dhcp select global //在vlanif 1虚接口下开启基于全局的dhcp
第二步:配置DHCP仿冒服务器
SW2-FM配置:
[SW2-FM]dhcp enable
[SW2-FM]ip pool tedu1
[SW2-FM-ip-pool-tedu1]network 192.168.10.0 mask 24
[SW2-FM-ip-pool-tedu1]gateway-list 192.168.10.254
[SW2-FM-ip-pool-tedu1]dns-list 9.9.9.9
[SW2-FM-ip-pool-tedu1]quit
[SW2-FM]int vlanif 1
[SW2-FM-Vlanif1]ip address 192.168.10.254 24
[SW2-FM-Vlanif1]dhcp select global
第三步:在SW1上配置DHCP Snooping
SW1配置:
[SW1]dhcp enable //开启dhcp 功能
[SW1]dhcp snooping enable //开启dhcp snooping 功能
[SW1]port-group group-member g0/0/1 g0/0/2
[SW1-port-group]dhcp snooping enable //在连接PC的接口下开启dhcp snooping
[SW1-port-group]quit
[SW1]int g0/0/4
[SW1-GigabitEthernet0/0/4]dhcp snooping trusted
//在连接合法dhcp 服务器的接口上开启信任接口
第四步:验证与测试
PC通过合法DHCP服务器获取192.168.20.0/24的IP地址
4、DHCP饿死攻击
1)什么是饿死攻击
-饿死攻击也称DHCP Server服务拒绝攻击(拒绝服务攻击)
-黑客机发送大量恶意请求报文,不断的申请IP地址,导致DHCP服务器中IP地址池中IP地址被耗尽,由于DHCP服务器IP地址池枯竭,没有空闲的IP地址,所以无法为正常主机分配IP地址。
2)饿死攻击是如何实现的
由于DHCP 服务器通常仅根据DHCP Request报文中的CHADDR(**主机MAC地址)**来分配IP地址,
黑客主机,攻击者通过不断改变报文中的CHADDR(**MAC地址**)字段向DHCP 服务器申请IP地址,将会导致DHCP 服务器上的IP地址池被耗尽,从而无法为其他正常用户提供IP地址。
3)如何防御饿死攻击
-为了防止黑客主机恶意申请IP地址,在交换机中开启DHCP Snooping 功能,检测数据帧中的**源MAC**与DHCP报文中**CHADDR(MAC地址)**是否一致功能,如果两个MAC地址相同就进行数据转发,如果两个MAC地址不同就把丢弃报文。
备注:
-不过目前黑客攻击手动越来越强,这种防御方式作用也越来越小
-目前黑客主机在发起DHCP饿死攻击的时候,不在仅仅修改DHCP报文中**CHADDR(MAC地址)**
-黑客通常会将帧头的**源MAC**地址和DHCP报文中的**CHADDR(MAC地址)**同时进行修改,每一个攻击报文中,两个MAC地址都是相同的,所以通过一致性检查,无法有效的防御此类攻击,
所以目前为了防止DHCP 饿死攻击,不仅需要配置DHCP Snooping ,还需要配置端口安全,通过端口安全可以更加有效的防止DHCP饿死攻击