DHCP协议原理与应用
- 一、DHCP协议概述
- 1.1、场景描述
- 1.1.1、场景描述1
- 1.1.2、场景描述2
- 1.1.3、场景描述3
- 二、DHCP协议工作原理
- 2.1、DHCP简介
- 2.2、DHCP协议名词解释
- 2.3、DHCP服务器配置
- 2.4、PC的DHCP设置
- 2.5、DHCP协议工作过程
- 2.6、DHCP协议报文及用途
- 2.7、DHCP报文介绍
- 2.7.1、DHCP Discover
- 2.7.2、DHCP Offer
- 2.7.3、DHCP Request
- 2.7.4、DHCP Ack
- 2.8、DHCP协议的租约
- 三、DHCP常见部署方式
- 3.1、校园网中常见的DHCP服务部署方式
- 3.1.1、方式一:网关交换机作为DHCP服务器
- 3.1.2、方式二:部署专用DHCP服务器
- 四、DHCP相关安全设计
- 4.1、DHCP应用服务在校园网运营过程中可能存在的问题
- 4.2、使用IP source guard解决用户手动配置IP地址问题
- 4.3、使用DHCP Snooping实现防非法DHCP服务器问题(1)
- 4.4、使用DHCP Snooping实现防非法DHCP服务器问题(2)
- 五、简单的DHCP实验
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
一、DHCP协议概述
1.1、场景描述
1.1.1、场景描述1
- 笔记本、台式电脑、手机、智能家电、智能穿戴等设备和我们的生活息息相关。但是,这一切连接互联网的基础就是IP地址。
- 如何在用户无感知的体验情况下高效且安全的获得IP地址?
1.1.2、场景描述2
1.1.3、场景描述3
- 手动配置IP地址存在什么问题?
二、DHCP协议工作原理
2.1、DHCP简介
- DHCP(Dynamic Host Configuration Protocol),动态主机配置协议。
- 定义在RFC2131中, C/S架构,为终端设备提供TCP/IP参数(IP地址、掩码、网关、DNS等)的自动配置。
- DHCP报文格式和BootP(RFC951、RFC1542)报文兼容,保证了互操作。
2.2、DHCP协议名词解释
- DHCP Client:
- DHCP客户机,即用户终端设备,可以是手机、电脑、打印机等需要接入网络的终端设备。
- DHCP Server:
- DHCP服务器,为终端分配网络参数,管理地址池。
2.3、DHCP服务器配置
#Step 1:开启DHCP服务
service dhcp
#Step 2:配置DHCP服务器
ip dhcp pool Ruijie
network 172.16.10.0 255.255.255.0
dns-server 8.8.8.8
default-router 172.16.10.254
2.4、PC的DHCP设置
- 释放通过DHCP方式获取到的IP地址。
- 重新通过DHCP方式获取IP地址。
2.5、DHCP协议工作过程
2.6、DHCP协议报文及用途
2.7、DHCP报文介绍
2.7.1、DHCP Discover
DHCP Discover
- 该报文为PC发出的第一个请求报文,为广播报文,主要作用是用来发现DHCP服务器,但PC并不知道DHCP的IP地址,因此目的MAC和目的IP地址都为广播。
2.7.2、DHCP Offer
DHCP Offer
- 该报文为DHCP服务器返回的第一个报文,当网络中存在多台DHCP服务器时,PC只会保留先收到的DHCP Offer。DHCP Offer中包含DHCP服务器可以为PC分配的IP地址、网关IP、DNS参数等配置信息。
2.7.3、DHCP Request
DHCP Request
- PC发出的第二条请求报文,PC根据服务器返回的Offer中的信息,发起正式申请。
2.7.4、DHCP Ack
DHCP ACK
- 服务器收到PC的请求报文后,从地址池中分配相应的IP地址返回给PC。
2.8、DHCP协议的租约
- 租约50%时刻
- 客户端主动向服务器发送DHCP request报文,请求更新租约时间;
- 若服务器可用,回复DHCP ack,更新租约;
- 若服务器不可用,回复DHCP nak,不更新租约;
- 客户端主动向服务器发送DHCP request报文,请求更新租约时间;
- 租约87.5%时刻
- 客户端主动向服务器发送DHCP request报文,请求更新租约时间;
- 若服务器可用,回复DHCP ack,更新租约;
- 若服务器不可用,回复DHCP nak,不更新租约;
- 客户端主动向服务器发送DHCP request报文,请求更新租约时间;
- 待到租约时间过去,客户端会重新发送DHCP discover报文。
三、DHCP常见部署方式
3.1、校园网中常见的DHCP服务部署方式
- 方式一:网关交换机作为DHCP服务器
- 优势:节省一台服务器资源。
- 劣势:地址池配置分散在网络中多台汇聚网关交换机上,无法集中管理。
- 方式二:网关交换机作为DHCP中继,在服务器区部署一台专用的DHCP服务器
- 优势:集中管理,不需要每一个网段都配置一个DHCP服务器,节约资源。
- 劣势:需要占用一台服务器资源。
3.1.1、方式一:网关交换机作为DHCP服务器
- 每台汇聚网关交换机上都为其下联用户PC网段配置DHCP地址池。
#Step 1. 开启DHCP服务
service dhcp
#Step 2. VLAN 内用户的DHCP地址池信息
ip dhcp pool VLAN10_POOL
network 172.16.10.0 255.255.255.0
default-router 172.16.10.1
dns-server 202.106.0.20 211.0.23.32
#Step 3. 配置VLAN 内用户的网关
interface vlan 20
ip address 172.16.20.1 255.255.255.0
3.1.2、方式二:部署专用DHCP服务器
- 网关交换机作为DHCP中继,在服务器区部署一台专用的DHCP服务器。
- 要保证作为DHCP中继的网关设备与DHCP服务器之间IP/路由可达。
#Step1:网关设备的DHCP中继配置:
service dhcp
int vlan 10 //需要配置中继的VLAN
ip helper-address 192.168.1.1 //服务器地址
#Step2:服务器配置DHCP服务
Windows Server/Linux/专用设备
四、DHCP相关安全设计
4.1、DHCP应用服务在校园网运营过程中可能存在的问题
- 用户使用静态IP地址接入
- 部分用户手动配置IP地址,但DHCP服务器是不知道的,因此在为DHCP用户分配IP地址的时候,用户通过DHCP获取到的IP地址,在网络中是已经使用的,导致了IP地址冲突。
- 用户架设非法DHCP服务器
- 在同一VLAN中,如果存在恶意用户私自架设了一台DHCP服务器,那么将会使该VLAN内的用户获取到错误的IP地址,导致无法接入进校园网。
4.2、使用IP source guard解决用户手动配置IP地址问题
- 使用DHCP Snooping相关功能,可以实现防止下联用户使用静态IP地址接入网络(ip source guard功能)。
#接入交换机上配置:
ip dhcp snooping
interface f0/1
ip verify source port-security
interface f0/2
ip verify source port-security
#备注:接入交换机会窥探DHCP报文交互的过程,并从DHCP ACK报文中提取相关IP和MAC信息,将其绑定在硬件表项中,这样只有经过DHCP方式获取IP地址的主机,其IP和MAC才会被交换机所允许转发,而非DHCP方式设置IP地址,这样的报文会被交换机丢弃
4.3、使用DHCP Snooping实现防非法DHCP服务器问题(1)
- 在接入交换机上使用DHCP Snooping相关功能,可以实现防止下联用户架设非法DHCP服务器。
4.4、使用DHCP Snooping实现防非法DHCP服务器问题(2)
- 在接入交换机上使用DHCP Snooping相关功能,可以实现防止下联用户架设非法DHCP服务器。
- 以下为DHCP Snooping配置步骤:
#Step1:接入交换机上开启DHCP Snooping
ip dhcp snooping
#Step2:指向合法DHCP服务器的接口设置为信任接口
interface f0/24
ip dhcp snooping trust
#备注:其他接口默认都为非信任接口
五、简单的DHCP实验
1、拓扑:
2、R1的配置:
- 基础配置:
Ruijie>enable
Enable password isn't set up, please set the password.
Please Set the password:****
The input password is weak password, default min-size(8) and should contain three different characters, and could not be similar to username!
Please check the password:****
Set the password success!
Ruijie#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
*Aug 21 13:34:18: %ZAM-6-EVENT: zam status changes to IDLE for entering config mode
Ruijie(config)#hostname R1 #更改设备名称
R1(config)#show interfaces status #查看物理接口信息
Interface Status Vlan Duplex Speed Type
---------------------------------------- -------- ---- ------- --------- ------
GigabitEthernet 0/0 up 1 Full 1000M copper
GigabitEthernet 0/1 down 1 Unknown Unknown copper
GigabitEthernet 0/2 down 1 Unknown Unknown copper
GigabitEthernet 0/3 down 1 Unknown Unknown copper
GigabitEthernet 0/4 down 1 Unknown Unknown copper
GigabitEthernet 0/5 down 1 Unknown Unknown copper
GigabitEthernet 0/6 down 1 Unknown Unknown copper
GigabitEthernet 0/7 down 1 Unknown Unknown copper
GigabitEthernet 0/8 down 1 Unknown Unknown copper
GigabitEthernet 0/9 down Unknown Unknown copper
R1(config)#int g0/0 #进入接口
R1(config-if-GigabitEthernet 0/0)#no switchport #模拟器中默认是二层接口,需要切换成三层口
R1(config-if-GigabitEthernet 0/0)#show ip int b #查看三层接口信息
Interface IP-Address(Pri) IP-Address(Sec) Status Protocol
GigabitEthernet 0/0 no address no address up down
VLAN 1 no address no address down down
R1(config-if-GigabitEthernet 0/0)#ip add 192.168.1.1 24 #配置IP地址
R1(config-if-GigabitEthernet 0/0)#show ip int b
Interface IP-Address(Pri) IP-Address(Sec) Status Protocol
GigabitEthernet 0/0 192.168.1.1/24 no address up up
VLAN 1 no address no address down down
- DHCP服务器配置:
R1(config)#service dhcp #开启dhcp服务,华为是dhcp enable,思科默认开启
R1(config)#ip dhcp pool dhcp #配置dhcp的地址池,地址池的名字是dhcp
R1(dhcp-config)#network 192.168.1.0 255.255.255.0 #配置地址空间
R1(dhcp-config)#default-router 192.168.1.1 #配置默认网关
R1(dhcp-config)#dns-server 114.114.114.114 223.5.5.5 #配置dns,可以同时配置多个dns服务器,也可以只配置一个
3、PC1的配置:(由于模拟器的PC机有bug,这里用路由器代替PC机)
- PC机的bug:
VPCS> ip dhcp #获取不到IP地址
DDORRR
Can't get ip address from dhcp server
- 路由器配置:
Ruijie>enable
Enable password isn't set up, please set the password.
Please Set the password:****
The input password is weak password, default min-size(8) and should contain three different characters, and could not be similar to username!
Please check the password:****
Set the password success!
Ruijie#conf*Aug 21 14:05:54: %HTTPD-5-USER_CHANGE: The password of web management account "admin" is changed.
t
Enter configuration commands, one per line. End with CNTL/Z.
*Aug 21 14:05:55: %ZAM-6-EVENT: zam status changes to IDLE for entering config mode
Ruijie(config)#hostname PC1
PC1(config)#int g0/0
PC1(config-if-GigabitEthernet 0/0)#no switchport
PC1(config-if-GigabitEthernet 0/0)#ip address dhcp #日志提醒分配的IP地址是192.168.3 掩码是255.255.255.0
PC1(config-if-GigabitEthernet 0/0)#*Aug 21 14:08:01: %DHCP_CLIENT-4-ADDRESS_CONFLICT: DHCP address 192.168.1.3 mask 255.255.255.0 conflicted with the address on interface VLAN 1.
PC1(config-if-GigabitEthernet 0/0)#show ip int b #这里查看会发现错误,是由于模拟器的原因,需要将vlan 1关闭
Interface IP-Address(Pri) IP-Address(Sec) Status Protocol
GigabitEthernet 0/0 no address no address up down
VLAN 1 192.168.1.2/24 no address down down
#真正的流程
Ruijie(config)#hostname PC1
PC1(config)#int vlan 1
PC1(config-if-VLAN 1)#no ip address #把vlan 1 禁用
%notice: all IPv4 addresses on this interface are removed.
PC1(config-if-VLAN 1)#exit
PC1(config)#int g0/0
PC1(config-if-GigabitEthernet 0/0)#no switchport
PC1(config-if-GigabitEthernet 0/0)#ip address dhcp
PC1(config-if-GigabitEthernet 0/0)#*Aug 21 14:34:00: %DHCP_CLIENT-6-ADDRESS_ASSIGN: Interface GigabitEthernet 0/0 assigned DHCP address 192.168.1.5, mask 255.255.255.0.
PC1(config-if-GigabitEthernet 0/0)#show ip int b #成功
Interface IP-Address(Pri) IP-Address(Sec) Status Protocol
GigabitEthernet 0/0 192.168.1.5/24 no address up up
VLAN 1 no address no address down down