DHCP服务看似简单,但功能强大,配置主要涉及DHCP服务器、DHCP中继、DHCP Snooping和DHCP客户端

DHCP基础

DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)技术实现了客户端IP地址和配置信息的动态分配以及集中管理。采用客户端/服务器通信模式,由客户端向服务器提出配置申请(包括IP地址、子网掩码、缺省网关等参数),服务器根据策略返回相应配置信息。

利用DHCP的场合:

--网络规模较大,手工配置工作量大;

--网络中主机数目大于该网络支持的IP地址数量,无法给每个主机分配一个固定IP;

--网络中只有少数主机需要固定IP地址。

一、DHCP概述

DHCP服务采用Client/Server(客户端/服务器)模式结构。

主要包括以下三种角色:

1、DHCP Client(DHCP客户端)

2、DHCP Server(DHCP服务器)

3、DHCP Relay(DHCP中继),如果DHCP服务器和客户端不在同一个网段范围,需要由中继负责DHCP服务器与DHCP客户端之间的DHCP报文转发。

二、DHCP报文及其格式

DHCP服务工作在C/S模式,但两者进行报文传输时所使用的UDP传输端口不一样。DHCP客户端使用68号UDP端口发送请求报文;DHCP服务器使用67号UDP端口发送应答报文。两种报文分别称为DHCP请求报文和DHCP应答报文

1、DHCP报文种类

整个DHCP服务一共8种类型的DHCP报文,分别是DCHP Discover、DCHP Offer、DCHP Request、DCHP ACK、DCHP NAK、DCHP Release、DCHP Decline、DCHP Inform。

2、DHCP报文格式

DHCP服务的报文种类虽比较多,但每种报文的格式相同,不同类型的报文只是报文中的某些字段取值不同。DHCP报文格式基于BOOTP的报文格式

①OP:Operation,指定DHCP报文的操作类型,占8位,请求报文置1,应答报文置2。DCHP Discover、DCHP Request、DCHP Release、DCHP Decline、DCHP Inform为请求报文,而DCHP Offer、DCHP ACK、DCHP NAK为应答报文。

②Htype、Hlen:分别指定DHCP客户端的MAC地址类型和MAC地址长度,各占8位。MAC地址类型其实用于指明网络类型,Htype字段置1时表示以太网MAC地址类型;以太网MAC地址长度为6字节,即Hlen字段值为6。

③Hops:指定DHCP报文经过的DHCP中继的数目,占8位。DHCP请求报文每经过一个DHCP中继该字段增加1,没有经过DHCP中继时值为0。

④Xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识(占32位),用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。

⑤Secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位,占16位。在没有获取IP地址前该字段始终为0.

⑥Flags:标志位,16位,第一位为广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,置0时表示采用单播发送方式,置1时表示采用广播发送方式,其余位保留不用。

在客户端正式分配IP地址之前的第一IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。如果是由DHCP中继转发的报文,都是以单播方式进行发送的。

⑦Ciaddr:指示DHCP客户端的IP地址,32位,仅在DHCP服务器发送的ACK报文中显示,其他报文中均显示0.0.0.0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。

⑧Yiaddr:指示DHCP服务器分配给客户端的IP地址,32位,仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0.0.0.0

⑨Siaddr:指示下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址,占32位。仅在Offer、ACK报文中显示,其他报文显示为0.0.0.0

⑩Giaddr:指示DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址,32位,如没有经过DHCP中继,显示为0.0.0.0

11Chaddr:指示DHCP客户端的MAC地址,占128位(16字节),在每个报文中都会显示对应DHCP客户端的MAC地址。

12Sname:指示为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式),占512位(64字节)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为空。

13File:指示DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息,占1024位(128字节)。仅在DHCP Offer报文中显示,其他报文显示为空。

14Option:可选字段,长度可变,最多为312字节。DHCP通过此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址、DNS服务器的IP地址、客户端可以使用IP地址的有效租期等信息。

在此部分可选的选项包含:报文类型(代码为53,占1字节)、有效租约期(代码为51,以秒为单位,占4字节)、续约时间(代码为58,占4字节)、子网掩码(代码为1,占4字节)、默认网关(代码为3,可以是一个路由器IP地址列表,长度可变但必须为4字节的整数倍)、DNS服务器(代码为6,可以是一个DNS服务器IP地址列表,长度可变但必须为4字节的整数倍)、域名城(代码为15,主DNS服务器名称,长度可变)、WINS服务器(代码为44,可以是一个WINS服务器IP列表,长度可变但必须为4字节的整数倍)等配置信息。表5-1所示的DHCP报文类型的取值分别如下:

-DHCP DISCOVER:1

-DHCP OFFER:2

-DHCP REQUEST:3

-DHCP DECLINE:4

-DHCP ACK :5

-DHCP NAK:6

-DHCP RELEASE:7

三、DHCP服务IP地址自动分配原理

DHCP提供服务时,客户端以UDP68号端口进行数据传输,服务器以UDP 67号端口进行数据传输。DHCP服务不仅体现在为DHCP客户端提供iP地址自动分配的过程中,还体现在后面的IP地址续约和释放过程。

在整个DHCP服务器为客户端初次提供IP地址自动分配过程中,一共经历4个阶段,利用了4个报文:发现阶段(DHCP客户端在网络中广播发送DHCP DISCOVER请求报文,发现DHCP服务器,请求IP地址租约)、提供阶段(DHCP服务器通过DHCP OFFER报文向DHCP客户端提供IP地址预分配)、选择阶段(DHCP客户端通过DHCP REQUEST报文确认选择第一个DHCP服务器为它提供IP地址自动分配服务)和确认阶段(被选择的DHCP服务器通过DHCP ACK报文把在DHCP OFFER报文中准备的IP地址租约给对应DHCP客户端)。

DHCP客户端在获得一个IP地址后,就可以发送一个免费的ARP请求探测网络中是否还有其他主机使用IP地址,来避免由于DHCP服务器地址池重叠而引发的IP冲突。

1、发现阶段

即DHCP客户端获取网络中DHCP服务器信息的阶段。客户端启动后,以广播方式发送DHCP DISCOVER报文来寻找网络中的DHCP服务器。此广播报文采用传输层的UDP68号端口发送(封装的目的端口为UDP67号端口),经过网络层IP协议封装后,源IP地址为0.0.0.0(因为此时还没有分配IP地址),目的地址为255.255.255.255(有限广播IP地址)。下面是一个DHCP DISCOVER报文封装的IP报头实例,可见Destination Address(目的地址)是255.255.255.255,而源地址Source Address是0.0.0.0。

255.255.255.255有限广播地址,代表任意一个IPv4子网的广播地址,当然是发送报文的主机所在的子网和DHCP服务器所在子网的广播地址。IP报头中的源地址(Source Address),因为当前DHCP客户端主机并未分配具体的IP地址,只能用具有任意代表功能的0.0.0.0地址表示。

此时,DHCP客户端没有分配到IP地址,也不知道DHCP服务器或DHCP中继的IP地址,所以在DHCP DISCOVER报文中Ciaddr(客户端IP地址)、Yiaddr(被分配的DHCP客户端IP地址)、Siaddr(下一个为DHCP客户端分配IP地址的DHCP服务器地址)、Giaddr(DHCP中继IP地址)这4个字段均为0.0.0.0。在Ciaddr字段和DHCP选项中,Client Identifier字段都标识了DHCP客户端网卡MAC地址。

2、提供阶段

即DHCP服务器向DHCP客户端提供预分配IP地址的阶段。网络中的所有DHCP服务器接收到客户端的DHCP DISCOVER报文后,都会根据自己地址池中IP地址分配的优先次序选出一个IP地址,然后与其他参数一起通过传输层的UDP67号端口,在DHCP OFFER报文中以广播方式发送给客户端(目的端口是DHCP客户端的UDP68号端口)。客户端通过封装在帧中的目的MAC地址(就是在DHCP DISCOVER报文中的CHADDR字段值)的比对来确定是否接收该帧。理论上DHCP客户端可能会收到多个DHCP OFFER报文(当网络中存在多个DHCP服务器时),但DHCP客户端只接收第一个到来的DHCP OFFER报文。

DHCP OFFER报文经过IP协议封装后的源IP地址为DHCP服务器自己的IP地址,目的地址仍是255.255.255.255广播地址,使用的协议仍为UDP。

在DHCP OFFER报文中,Ciaddr字段仍为0.0.0.0,因为客户端仍没有分配到IP地址;Yiaddr字段有值,这是DHCP服务器为该客户端预分配的IP地址;Siaddr字段值为DHCP服务器地址;因为没有经过DHCP中继服务器,Giaddr字段值为0.0.0.0。在DHCP可选项部分,可以看到由服务器随IP地址一起发送的各种选项,这种情况下,服务器发送的是子网掩码、默认网关(路由器)、租约时间、WINS服务器地址(NetBIOS名称服务)和NetBIOS节点类型。

DHCP OFFER报文:

3、选择阶段

即DHCP客户端选择IP地址的阶段。客户端只接受第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文。在该报文的“Requested Address”选项中包含DHCP服务器在DHCP OFFER报文中预分配的IP地址,对应的DHCP服务器IP地址等。这相当于同时告诉其他DHCP服务器,它们可以释放已经提供的地址,并将这些地址返回到可用地址池中。

在DHCP REQUEST报文封装的IP协议头部,客户端的Source Address仍然是0.0.0.0,数据包的Destination仍然是255.255.255.255,但在DHCP REQUEST报文中Ciaddr、Yiaddr、Siaddr、Giaddr字段的地址均为0.0.0.0。

4、确认阶段

即DHCP服务器确认分配给DHCP客户端IP地址的阶段。某个DHCP服务器在收到DHCP客户端发来的DHCP REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则以广播方式返回DHCP ACK报文;否则返回DHCP NAK报文,表明地址不能分配给该客户端。

在DHCP服务器发送的DHCP ACK报文的IP协议头部中,Source Address是DHCP服务器IP地址,Destination Address仍然是广播地址255.255.255.255。在DHCP ACK报文中的Yiaddr字段包含要分配给客户端的IP地址,而Chaddr和DHCP:Client Identifier字段是发出请求的客户端中网卡的MAC地址。同时,在选项部分也会把在DHCP OFFER报文中所分配的IP地址的子网掩码、默认网关、DNS服务器、租约期、续约时间等信息加上。

客户端在收到服务器返回的DHCP ACK后,以广播方式发送免费ARP报文(该报文中,源IP地址和目标IP地址都是本机IP地址——ACK报文分配的IP,源MAC地址是本机MAC地址,目的MAC地址是广播MAC地址),如果在规定时间内没有收到回应,客户端才使用此地址。否则客户端发送DHCP DECLINE报文给DHCP服务器,并重新申请IP地址。

四、DHCP服务IP地址租约更新原理

DHCP服务器按照如下优先次序为客户端选择IP地址。

1、DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。

2、客户端以前曾经使用过的IP地址,即客户端发送的DHCPDISCOVER报文中请求IP地址选项的地址。

3、在DHCP地址池中,在顺序查找可供分配的IP地址中,最先找到的IP地址。

4、如果在DHCP地址池中未找到可供分配的IP地址,则依次查询超过租期、发生冲突的IP地址,如找到可用IP地址,则分配否则报告错误。

DHCP客户端申请续约的步骤:

1、在DHCP客户端的IP地址租约期限达到1/2时,DHCP客户端会向为它分配IP地址的DHCP服务器以单薄方式发送DHCPREQUEST请求报文,以期进行IP租约的更新。

2、如果DHCP服务器同意续约,则DHCP服务器向客户端以单播方式返回DHCP ACK报文,通知DHCP客户端已经获得新IP租约,可继续使用此IP地址;相反,如服务器不同意续约,则DHCP服务器以单播方式返回DHCP NAK报文,通知DHCP客户端不能获得新的租约。此IP地址不可以再分配给该客户端。

3、如上面的续约申请失败,则DHCP客户端还会在租约期限达到7/8时,再次以单播方式发送REQUEST请求报文进行续约。

五、DHCP中继代理服务

在DHCP客户端初次从DHCP服务器获取IP地址的过程中,所有从DHCP客户端发出的请求报文和所有由DHCP服务器返回的应答报文均是以广播方式(目的地址为255.255.255.255)进行发送的,所以DHCP服务只适用于DHCP客户端和服务器处于同一个子网的情况,因为广播包不能穿越子网。

DHCP中继功能可以解决超越子网的问题。DHCP中继代理位于DHCP客户端和DHCP服务器之间,负责广播DHCP报文的转发。

DHCP中继代理必须至少有一端口连接了DHCP客户端所在子网,另一端口直接连接了DHCP服务器所在子网。

1、DHCP中继代理简介

Option 82是DHCP报文中的中继代理信息选项(RelayAgent Information Option),该选项记录了DHCP客户端的位置信息。管理员可以利用该选项定位DHCP客户端,实现对客户端的安全和计费等控制。还可根据该选项的信息制定IP地址和其他参数的分配策略。

在整个Option 82选项中最多可以包含255个子选项,且至少要定义一个子选项。目前的设备主要只支持两个子选项:sub-option 1(Circuit ID,电路ID子选项)和sub-option 2(Remote ID,远程ID子选项)。设备作为DHCP中继设备都支持Option 82子选项的扩展填充格式。

Sub-option 1和sub-option 2两个子选项的格式如下图,固定字段(相当于子选项头)括号中的内容为该字段的固定取值。Sub-option 1子选项中的内容是接收到DHCP客户端请求报文的端口所属VLAN的编号(对应“VLAN ID”字段,占2字节)以及端口索引(豆蔻索引的取值为物理编号减1,对应“Port Index”字段,占2字节)。Sub-option 2子选项的内容是接收到DHCP客户端请求报文的DHCP中继设备的MAC地址(对应“MAC Address”字段,占6字节)。

2、通过DHCP中继代理动态IP地址分配原理

也经历发现、提供、选择和确认4个阶段。所用到的报文也对应是DHCP DISCOVER、DHCP OFFER、DHCP REQUEST、DHCP ACK,只是在这里DHCP中继代理需要起到一个中介代理的角色,负责转发DHCP客户端与DHCP服务器之间交互的报文。

DHCP中继设备将在DISCOVER和REQUEST这两种报文中都添加Option82选项。

工作机制:

①DHCP客户端以广播方式(因为不知道中继代理设备的IP地址)向本网段发送DHCP DISCOVER或DHCP REQUEST请求报文。此时只有DHCP中继代理设备会接收该报文。

②DHCP中继代理设备在收到DHCP客户端发来的DHCP DISCOVER或DHCP REQUEST请求报文后,将检查报文中是否已有Option 82选项。

如果请求报文中已有Option82,DHCP中继代理设备会按照配置的策略对该报文进行处理(丢弃或者用中继设备本身的Option82选项替代报文中原有的Option82选项,或保持报文原有的Option82选项)。同时根据Option82选项sub-option1子选项中的VLAN ID和Port Index字段配置,找到为对应网段所分配的DHCP服务器地址,并将请求报文中的giaddr字段填充为DHCP中继代理设备的IP地址,然后将请求报文以单播方式(因为在中继代理设备中已配置好了对应的DCHP服务器地址)转发给指定的DHCP服务器。

如果请求报文中没有Option82选项,则DHCP中继设备将Option82选项添加到报文中后,根据Option82选项sub-option1子选项中的VLAN ID和Port Index字段配置,找到为对应网段所分配的DHCP服务器地址,并将报文中的giaddr地段填充为DHCP中继道理设备的IP地址,然后根据中继代理设备中为对应网段所配置的DHCP服务器地址以单播方式将请求报文转发给DHCP服务器。

③DHCP服务器在收到由DHCP中继代理设备转发的DHCP DISCOVER或DHCP REQUEST请求报文后,根据转发的请求报文中的giaddr字段值所对应的中继代理设备IP地址,以及在Option82选项中sub-option2子选项中的中继代理MAC地址以单播方式向DHCP中继代理返回对应的DHCP OFFER或者DHCP ACK应答。

④DHCP中继设备在收到DHCP服务器的应答报文后,将剥离报文中的Option82信息,然后以广播方式将带有DHCP配置信息的对应应答报文转发给DHCP客户端,完成对客户端的IP地址动态分配。

DHCP/DNS服务器配置与管理——1相关推荐

  1. DHCP/DNS服务器配置与管理——3

    配置DHCP/BOOTP客户端 AR G3路由器也可配置作为DHCP或BOOTP客户端使用,通过DHCP协议使其接口可从指定的DHCP服务器动态取得IP地址及其他配置信息. 在配置DHCP/BOOTP ...

  2. DHCP/DNS服务器配置与管理——2

    配置基于全局地址池的DHCP服务器 充当DHCP服务器是路由器的一项重要功能.当要把路由器配置为DHCP服务器时,需要首先创建IP地址池,从中选择合适的IP地址分配给DHCP客户端. 在AR G3路由 ...

  3. Windows server DNS服务器配置与管理

    在互联网中IP是计算机在网络世界的通信证,依靠IP地址来识别网络中的每一台计算机.当我们访问Internet上的服务器,并须要知道对方的ip地址.在互连网中服务器的数量很庞大ip地址太多了要让用户记住 ...

  4. 实验十(课程资源)-DNS服务器配置与管理

    课程实验报告: 一.实验目的: 1.了解DNS工作原理及域名解析过程 2.掌握DNS服务器的安装.配置与管理 二.实验目的: 在windows2003上搭建DNS服务器,并进行相关配置与功能测试 三. ...

  5. windows修改dns服务器,windowns中dns服务器配置与管理详解(多图)

    安装DNS服务器 在"服务器管理器"-"角色"-"添加角色"中安装DNS服务器. 选择DNS服务器 点下一步安装,然后安装 固定服务器IP地 ...

  6. VPN服务器配置、路由服务器配置、视频服务器配置、DNS服务器配置、DHCP服务器配置、E-mail服务器配置、FTP服务器配置、Web服务器配置、证书服务器配置及管理

    期末考核学习笔记记录 本文主要记录了VPN.路由服务.视频服务器.DNS服务器.DHCP服务器.E-mail服务器.FTP服务器.Web服务器.证书服务器的简单配置与管理.此为作者期末考核作业,配置过 ...

  7. Linux服务器配置与管理项目教程(CentOS7 /RHEL 7)(第三版)题库带答案

    Linux服务器配置与管理项目教程 (CentOS7 /RHEL 7)(第三版)微课版 第1篇   系统安装与网络配置 项目1  安装CentOS 服务器 项目2  配置Linux基础网络 不积跬步, ...

  8. 服务器维护与管理专业好就业吗,windows server服务器配置与管理专业就业方向

    windows server服务器配置与管理专业就业方向 可以考虑做运维工程师: 服务器系统 操统windows等安装配置 检测其运行等 熟悉常见的应用如web ftp 邮件等服务搭建 及排查: 熟悉 ...

  9. 服务器环境配置项目论文,服务器配置与管理论文范文:服务器配置论文

    服务器配置,是指根据企业的实际需求针对安装有服务器操作系统的设备进行软件或者硬件的相应设置.操作,从而实现企业的业务活动需求.下面小编给大家分享一些服务器配置与管理论文范文,大家快来跟小编一起欣赏吧. ...

最新文章

  1. oracle找不到mts,oracle 11g启动时找不到OracleMTSRecoveryService的解决方法
  2. 字典、列表、元祖、字符串的综合(2)
  3. 在MyEclipse中添加项目遇到Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules...
  4. Scala教程之:深入理解协变和逆变
  5. String、StringBuilder、StringBuffer三者执行效率
  6. Java并发篇_synchronized
  7. Smart-Mall新零售商城系统
  8. frame跨页传值/AJAX出错解决方案 + 知识补充:浏览器同源政策
  9. 一派胡言!Swift 不是多范式函数式编程语言
  10. 仓位管理 – 2.实战篇
  11. Java的未来前景怎么样?
  12. MATLAB递推最小二乘法(三输入一输出ARX模型、所有样本数据权重为1)
  13. 关于母亲节的c语言程序设计教程课后答案,《我的母亲》习题及参考答案
  14. c++笔记(class)练手项目:暗网杀手排名系统
  15. 新浪短域名和百度短域名
  16. MDF智能合约靠谱吗?
  17. django-cas
  18. 尤克里里好不好学?只要3招!没有音乐基础的小白也能轻松上手
  19. Java企业微信开发-企业微信所有类型消息推送封装
  20. vue中实现图片懒加载的方法(一)

热门文章

  1. SQL server 2008 R2 增加sa身份验证登陆
  2. 高压电网过电压在线监测系统的研究
  3. 逗号表达式 java_逗号表达式的用法
  4. 显微镜下的webpack4:灵魂tapable,终于搞懂钩子系列!
  5. 身份证号码的验证与解析
  6. 8springboot-SpringBoot+MyBatisPlus
  7. ZYNQ axi_uartlitle IP核扩展232或者422
  8. 驻云科技带着新产品和技术亮相广州云栖大会
  9. 【图像处理】Python实现文字转图片
  10. phpinfo php版本,如何修改两个PHP版本,php-v和phpinfo两个不同的版本