华三-DHCP

简介

  DHCP(动态主机设置协议)是一个局域网的网络协议,使用UDP协议工作,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址Gateway地址DNS服务器地址等信息,并能够提高地址的使用率。

功能

  1. DHCP可以给用户分配永久固定的IP地址
  2. DHCP可以同其他方法获得IP地址的主机共存(如手工配置IP地址的主机

分配方式

  • 自动分配方式:DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器租用的IP地址后,就可以永久性的使用该地址。
  • 动态分配方式:DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
  • 手工分配方式:客户端的IP地址使由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

端口号

UDP67:DHCP Server服务端口

UDP68:DHCP Client服务端口

UDP546:用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做"双机热备"

DHCP优缺点

  1. DHCP协议主机配置方式最重要的特征就是整个配置过程自动实现,而且所有配置信息在一个地方集中控制,这就是DHCP server的作用。
  2. 最初的DHCP协议是在同一个物理子网中使用广播方式实现的,无法穿越路由器扩展到不通的物理子网中,也就是要使用DHCP协议的每一个网络(广播域)中必须配置一台DHCP服务器,为了克服这一缺陷,采用了DHCP Relay(DHCP中继路由器)的方式使得DHCP协议能够穿越路由器实现。
  3. DHCP协议一般采用终端的硬件地址来唯一标识一个终端设备
  4. DHCP协议通过设置IP地址使用租期,可以达到IP地址的分时复用效果,解决IP地址资源短缺的问题。
  5. DHCP协议基本上是一个单向驱动协议,Server(DHCP服务器)完全是被动的,其动作、行为基本完全由Client(客户端)的请求行为而激发,即Server端无法主动控制Client端。因此其交互性和安全性就没有ppp协议那么完善,这是DHCP协议的一个安全风险点。

DHCP工作过程

捕获

DHCP客户端从DHCP服务器获取IP地址,主要通过四个阶段进行:

  1. 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCP-Discover报文
  2. 提供阶段:即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCP-Discover报文后,根据IP地址分配的优先次序选出一个IP地址,与其他参数一起通过DHCP-Offer报文发送给客户端。
  3. 选中阶段:即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发来DHCP-Offce报文,客户端只接受第一个收到的DHCP-Offer报文,然后以广播方式发送DHCP-Request报文,该报文中包含DHCP服务器在DHCP-Offer报文中分配的IP地址。
  4. 确认阶段:即DHCP服务器确认IP地址的阶段。DHCP服务器收到DHCP客户端发来的DHCP-Request报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回DHCP-Ack报文;否则返回DHCP-Nak报文,表明地址不能分配给该客户端。

DHCP报文类型

  1. DHCP Discover:DHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文,目的是发现网络中的DHCP服务器,所有收到Discover报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。
  2. DHCP Offer:DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给用户(可以广播、也可以单播),告知用户本服务器可以为其提供IP地址。(注意,只是告诉Client可以提供,是预分配,还需要Client通过ARP检测该IP是否重复)
  3. DHCP Request:客户端会在两种情况下发送DHCP RequestDHCP ACK:DHCP服务器收到Request报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录(即之前的预分配过程中登记的那个MAC),如果有则发送Ack报文作为回应,通知用户可以使用分配的IP地址。
    • DHCP客户端可能会收到来自DHCP服务器的很多Offer,所以必须在这些回应中选择一个。Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器,并回应一个广播Request报文,通告选择的服务器。注意,"Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器"这里存在一个安全问题,如果我们的伪DHCP服务器能比原始DHCP服务器先发送Offer数据包,就能达到欺骗的目的,从而劫持目标用户的流量
    • 获取DHCP客户端成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request报文延续租期,如果没有收到DHCP ACK报文,在租期过去3/4时,发送广播Request报文续延租期。
  4. DHCP NAK:如果DHCP服务器收到Request报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则发送NAK报文作为回应,通知用户无法分配合适的IP地址。
  5. DHCP Release:当用户不再需要使用分配IP地址时,就会”主动“向服务器发送Release报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约(在数据库中清除某个MAC对某个IP的租约记录,这样,这个IP就可以分配给下一个请求租约的MAC)
  6. DHCP Deline:DHCP客户端收到DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的IP地址不可用,我们在手工设置静态IP、或者DHCP分配中有时会遇到"检测到IP冲突"的提示就是因为客户端利用ARP机制来在当前内网中确认当前指定的IP是否已经被占用
  7. DHCP Inform:DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端。

 

DHCP Option

 

Option 3:路由器选项,用来指定为客户端分配的网关地址。

 

Option 6:DNS服务器选项,用来指定为客户端分配的DNS服务器地址。

 

Option 33:静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果Option 33和Option 121同时存在,则忽略Option 33。

 

Option 51:IP地址租约选项。

 

Option 53:DHCP消息类型选项,标识DHCP消息的类型。

 

Option 55:请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。

 

Option 60:厂商标识选项。客户端利用该选项标识自己所属的厂商;DHCP服务器可以根据该选项区分客户端所属的厂商,并为其分配特定范围的IP地址。

 

Option 66:TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名。

 

Option 67:启动文件名选项,用来指定为客户端分配的启动文件名。

 

Option 121:无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果Option 33和Option 121同时存在,则忽略Option 33。

 

Option 150:TFTP服务器地址选项,用来指定为客户端分配的TFTP服务器的地址。

厂商特定信息选项(Option 43)

Option 43的作用

  Option 43称为厂商特定信息选项。DHCP服务器和DHCP客户端通过Option 43交换厂商特定的信息。

设备作为DHCP客户端时,可以通过Option 43获取:

  • ACS(Auto-Configuration Server,自动配置服务器)的参数,包括URL地址、用户名和密码。
  • 服务提供商标识,CPE(Customer Premises Equipment,用户侧设备)从DHCP服务器获取该信息后,将该信息通告给ACS,以便ACS选择服务提供商特有的配置和参数等。
  • PXE(Preboot eXecution Environment,预启动执行环境)引导服务器地址,以便客户端从PXE引导服务器获取启动文件或其他控制信息。
  • 在无线网络中,AP(Access Point,接入点)作为DHCP客户端,可以通过Option 43获取AC(Access Controller,接入控制器)地址,以便AP从AC获取启动文件或其他控制信息。

Option 43格式

image

  为了提供可扩展性,通过Option 43为客户端分配更多的信息,Option 43采用子选项的形式,通过不同的子选项为用户分配不同的网络配置参数。子选项中各字段的含义为:

  • Sub-option type:子选项类型。目前,子选项类型值可以为0x01表示ACS参数子选项,0x02表示服务提供商标识子选项,0x80表示PXE引导服务器地址子选项。
  • Sub-option length:子选项的长度,不包括子选项类型和子选项长度字段。
  • Sub-option value:子选项的取值。不同类型的子选项,取值格式有所不同。

Option 43子选项取值字段的格式

ACS的URL地址、用户名和密码长度可变,每个参数之间用空格(十六进制数为20)隔开。

image

服务提供商标识子选项的取值字段内容为服务提供商的标识。

PXE引导服务器地址子选项的取值字段格式。其中,PXE服务器类型目前取值只能为0;Server number为子选项中包含的PXE服务器地址的数目;Server IP addresses为PXE服务器的IP地址

image

 中继代理信息选项(Option 82)

  Option 82称为中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option 82,并转发给DHCP服务器。

  管理员可以从Option 82中获得DHCP客户端的位置信息,以便定位DHCP客户端,实现对客户端的安全和计费等控制。支持Option 82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略,提供更加灵活的地址分配方案。

  Option 82最多可以包含255个子选项。若定义了Option 82,则至少要定义一个子选项。目前设备只支持两个子选项:sub-option 1(Circuit ID,电路ID子选项)、sub-option 2(Remote ID,远程ID子选项)。

由于Option 82的内容没有统一规定,不同厂商通常根据需要进行填充。

设备上,Circuit ID的填充模式有以下几种:

  • 采用string模式填充:sub-option 1的内容是用户配置的字符串。
  • 采用normal模式填充:sub-option 1的内容是接收到DHCP客户端请求报文的接口所属的VLAN ID以及接口编号。
  • 采用verbose模式填充:sub-option 1的内容包括用户配置的接入节点标识,接收到DHCP客户端请求报文的接口类型、接口编号和接口所属的VLAN ID。

Remote ID的填充模式有以下几种:

  • 采用string模式填充:sub-option 2的内容是用户配置的字符串。
  • 采用normal模式填充:sub-option 2的内容是接收到DHCP客户端请求报文的接口MAC地址(DHCP中继)或设备的桥MAC地址(DHCP Snooping)。
  • 采用sysname模式填充:sub-option 2的内容是设备的系统名称。设备的系统名称可以通过系统视图下的sysname命令配置。

Option 184

  Option 184是RFC中规定的保留选项,用户可以自定义该选项中携带的信息。设备上,Option 184携带了语音呼叫所需的信息。通过Option 184,可以实现在为具有语音功能的DHCP客户端提供语音呼叫相关信息。

目前Option 184支持四个子选项,承载的内容如下:

  • sub-option 1:网络呼叫处理器的IP地址,用来标识作为网络呼叫控制源及应用程序下载的服务器。只有定义了sub-option 1(网络呼叫处理器的IP地址子选项),其他子选项才能生效。
  • sub-option 2:备用服务器的IP地址,当sub-option 1中携带的网络呼叫处理器不可达或不合法时,DHCP客户端使用该选项指定的备用服务器作为网络呼叫处理器。
  • sub-option 3:语音VLAN信息,指定语音VLAN的ID及DHCP客户端是否会将所指定的VLAN作为语音VLAN。
  • sub-option 4:自动故障转移呼叫路由,指定故障转移呼叫路由的IP地址及其关联的拨号串,即SIP(Session Initiation Protocol,会话初始协议)用户之间互相通信时对端的IP地址和呼叫号码。当网络呼叫处理器和备用服务器均不可达时,SIP用户可以使用对端IP地址及呼叫号码直接与对端SIP用户建立连接并通信。

 DHCP中继

DHCP客户端和DHCP服务器处于不同物理网段时,客户端可以通过DHCP中继与DHCP服务器通信,获取IP地址及其他配置信息。

image

 DHCP中继原理

通过DHCP中继完成动态配置的过程中,DHCP客户端与DHCP服务器的处理方式与不同DHCP中继时的处理方式基本相同。

image

 DHCP中继的工作过程为:

  • 具有DHCP中继功能的物理设备收到DHCP客户端以广播方式发送的DHCP-Discover或DHCP-Request报文后,将报文中的giaddr字段填充为DHCP中继的IP地址,并根据配置将报文单播转发给指定的DHCP服务器。
  • DHCP服务器根据giaddr字段为客户端分配IP地址等参数,并通过DHCP中继将配置信息转发给客户端,完成对客户端的动态配置。

DHCP Snooping

DHCP Snooping简介

DHCP Snooping是DHCP的一种安全特性。

  DHCP Snooping设备只有位于DHCP客户端与DHCP服务器之间,或DHCP客户端与DHCP中继之间时,DHCP Snooping功能配置后才能正常工作;设备位于DHCP服务器与DHCP中继之间时,DHCP Snooping功能配置后不能正常工作。

DHCP Snooping作用

  1. 保证客户端从合法的服务器获取IP地址
    1. 网络中如果存在私自架设的非法DHCP服务器,则可能导致DHCP客户端获取到错误的IP地址和网络配置参数,从而无法正常通信。为了使DHCP客户端能通过合法的DHCP服务器获取IP地址,DHCP Snooping安全机制允许将端口设置为信任端口和不信任端口;
      • 信任端口正常转发接收到的DHCP报文。
      • 不信任端口无法转发DHCP客户端发送的请求方向报文,并且会丢弃接收到DHCP服务器响应的DHCP-Ack和DHCP-Offer报文。
    2. 在DHCP Snooping设备上指向DHCP服务器方向的端口需要设置为信任端口,其他端口设置为不信任端口,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的伪DHCP服务器无法为DHCP客户端分配IP地址;
  2. 记录DHCP客户端IP地址与MAC地址的对应关系
    1. DHCP Snooping通过监听DHCP-Request报文和信任端口收到的DHCP-Ack报文,记录DHCP-Snooping表项,其中包括客户端的MAC地址、DHCP服务器为DHCP客户端分配的IP地址、与DHCP客户端连接的端口及VLAN等信息。利用这些信息可以实现;
      • ARP Detection:根据DHCP Snooping表项来判断发送ARP报文的用户是否合法,从而防止非法用户的ARP攻击。
      • MFF(MAC-Forced Forwarding):在MFF的自动方式中,设备截获到用户发送的ARP请求后,根据DHCP Snooping表项查找该用户对应的网关地址,并回复网关的MAC地址,强制用户将所有流量发送到网关,使得网关可以监听用户之间的数据流量,从而防止用户之间的恶意攻击,更好的保障网络安全。
      • IP Source Guard:通过动态获取DHCP Snooping表项对端口转发的报文进行过滤,防止非法报文通过该端口。
      • VLAN映射:发送给用户的报文通过查找指定VLAN对应的DHCP Snooping表项中的DHCP客户端IP地址、MAC地址和原始VLAN的信息,将报文的制定VLAN修改为原始VLAN。

信任端口的典型应用环境

  1. DHCP Snooping直连DHCP服务器和DHCP客户端网络
    • 在DHCP Snooping设备上指向DHCP服务器方向的端口需要设置为信任端口,以便DHCP Snooping设备正常转发DHCP服务器的应答报文,保证DHCP客户端能够从合法的DHCP服务器获取IP地址。
    • image

  2. DHCP Snooping级联网络
    • 在多个DHCP Snooping设备级联的网络中,为了节省系统资源,不需要每台DHCP Snooping设备都记录所有DHCP客户端的IP地址和MAC地址的绑定信息,只需在与客户端直接相连不信任端口上记录绑定信息。间接与DHCP客户端相连的不信任端口不需要记录IP地址和MAC地址绑定信息。
    • image

实验一 DHCP获取地址

拓扑

image

 配置

DHCP-Server

image

dhcp enable   //开启DHCP服务器

image

interface vlan-interface10   //创建VLAN10并且进入vlanif10

ip address 192.168.10.254 255.255.255.0   //设置VLANif10的ip地址

image

dhcp server ip-pool vlan10   //创建DHCP地址池VLAN10

gateway-list 192.168.10.254    //设置网关

network 192.168.10.0 mask 255.255.255.0   //设置IP范围

dns-list 8.8.8.8 114.114.114.114    //设置DNS

expired day 2 hour 2 minute 2 second 2  //租约时间为2天2小时2分2秒2

forbidden-ip 192.168.10.1   //在地址池中排除地址

forbidden-ip 192.168.10.2  //在地址池中排除地址

forbidden-ip 192.168.10.3  //在地址池中排除地址

forbidden-ip 192.168.10.4  //在地址池中排除地址

forbidden-ip 192.168.10.100  //在地址池中排除地址

static-bind ip-address 192.168.10.6 hardware-address xxxx-xxxx-xxxx  //在地址池中IP和MAC地址绑定在一起

image

 dhcp server forbidden-ip  192.168.10.1 192.168.10.100  //在全局中排除所分配的地址

image

interface GigabitEthernet1/0/1   //进入1/0/1口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行所创建的DHCP地址池vlan 

SW

image

dhcp enable   //开启DHCP服务器

image

vlan 10   //创建VLAN 10

image

interfaec GigabitEthernet1/0/1   //进入1/0/1口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

interface GigabitEthernet1/0/2   //进入1/0/2口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

interface GigabitEthernet1/0/3   //进入1/0/3口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

结果验证

display dhcp server ip-in-use  //查看地址池所分配的IP地址

image

display dhcp server free-ip  //查看地址池中还未分配的地址

image

display dhcp server pool   //查看dhcp池的配置

image

 实验二 DHCP中继

拓扑

image

 配置

DHCP-Server

image

dhcp enable   //开启DHCP服务器

image

interface vlan-interface100  //创建VLAN100并且进入vlanif下

ip address 192.168.100.1 255.255.255.0   //配置设备互联IP地址

image

dhcp server ip-pool vlan10   //创建DHCP地址池VLAN10

gateway-list 192.168.10.254    //设置网关

network 192.168.10.0 mask 255.255.255.0   //设置IP范围

dns-list 8.8.8.8 114.114.114.114    //设置DNS

expired day 2 hour 2 minute 2 second 2  //租约时间为2天2小时2分2秒2

forbidden-ip 192.168.10.1   //在地址池中排除地址

image

interface GigabitEthernet1/0/1   //进入G1/0/1口

port link-mode bridge   //默认是二层接口

port access vlan 100   //放行设备互联VLAN

image

ip route-static 0.0.0.0 0 192.168.100.2  //写静态路由指向SW

SW

image

 dhcp enable   //开启DHCP服务器

image

interface vlan-interface10   //创建VLAN10并且进入VLANIF

ip address 192.168.10.254 255.255.255.0    //设置网关地址

dhcp select relay    //设置DHCP中继 

dhcp relay server-address 192.168.100.1    //指向DHCP服务器

#

interface vlan-interface100    //创建vlan100并且进入VLANIF

ip address 192.168.100.2 255.255.255.0  //设置互联IP地址

image

interface GigabitEthernet1/0/1   //进入G1/0/1口

port link-mode bridge   //默认是二层接口

port access vlan 100   // 放行设备互联VLAN

#

interface GigabitEthernet1/0/2   // 进入G1/0/2口

port link-mode bridge   // 默认是二层接口

port access vlan 10   // 放行客户端VLAN

#

interface GigabitEthernet1/0/3    //进入G1/0/3口

port link-mode bridge   // 默认是二层接口

port access vlan 10    //放行客户端VLAN

image

ip route-static 0.0.0.0 0 192.168.100.1   //写静态路由指向DHCP服务器

结果验证

display dhcp server ip-in-use  //查看地址池所分配的IP地址

image

display dhcp server free-ip    //查看地址池中还未分配的IP地址

image

实验三  DHCP Snooping实验

拓扑

image

 配置

DHCP-Server

image

dhcp enable   //开启DHCP服务器

image

interface vlan-interface10   //创建VLAN10并且进入vlanif10

ip address 192.168.10.254 255.255.255.0   //设置VLANif10的ip地址

image

dhcp server ip-pool vlan10   //创建DHCP地址池VLAN10

gateway-list 192.168.10.254    //设置网关

network 192.168.10.0 mask 255.255.255.0   //设置IP范围

dns-list 8.8.8.8 114.114.114.114    //设置DNS

expired day 2 hour 2 minute 2 second 2  //租约时间为2天2小时2分2秒2

forbidden-ip 192.168.10.1   //在地址池中排除地址

forbidden-ip 192.168.10.2  //在地址池中排除地址

image

interface GigabitEthernet1/0/1   //进入1/0/1口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行所创建的DHCP地址池vlan 

SW

image

dhcp enable   //开启dhcp服务

dhcp snooping enable    //开启dhcp snooping服务

image

vlan 10   //创建VLAN 10

image

interfaec GigabitEthernet1/0/1   //进入1/0/1口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

dhcp snooping trust  //把与dhcp互联的口设置成dhcp 信任端口

interface GigabitEthernet1/0/2   //进入1/0/2口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

interface GigabitEthernet1/0/3   //进入1/0/3口

port link-mode bridge   //默认是二层口,不需要改

port access vlan 10   //放行相应的VLAN

结果查看

display dhcp server ip-in-use   //查看地址池所分配的IP地址

image

display dhcp server free-ip   //查看地址池中所未分配的IP地址

image

 DHCP中的所有查看命令

display dhcp server ip-in-use   //查看地址池所分配的IP地址

display dhcp server free-ip   //查看地址池中所未分配的IP地址

display dhcp server pool   //查看dhcp池的配置

display dhcp server conflict   //显示DHCP的地址冲突信息

display dhcp server database   //显示DHCP服务器的表项备份信息

display dhcp server expired  //显示租约过期的地址绑定信息

display dhcp server statistics  //显示DHCP服务器的统计信息

reset dhcp server conflict  //清除DHCP的地址冲突信息

reset dhcp server expired  //清除租约过期的地址绑定信息

reset dhcp server ip-in-use  //清除DHCP的正式绑定和临时绑定信息

reset dhcp server statistics  //清除DHCP服务器的统计信息

posted @ 2025-08-15 16:21  乐泉1  阅读(18)  评论(0)    收藏  举报