第六章 DHCP和自动配置

编程入门 行业动态 更新时间:2024-10-23 19:25:29
  • 引言
    • 为了使用TCP/IP协议族,每台主机和路由器需要一定的配置信息,配置信息用于为系统指定本地名称,以及为接口指定标识符(例如IP地址).它还用于提供或使用各种网络服务,例如域名系统(DNS)和移动IP家乡代理
    • 在本章中,我们将主要关注在Internet客户端主机用于建立基本要素的协议和程序:动态主机配置协议(DHCP)以及IPv4和IPv6中的无状态地址自动配置.
  • 动态地址配置协议
    • DHCP的设计基于一个早期协议----称为Internet引导程序协议(BOOTP),目前已经过时
    • BOOTP为客户提供有限的配置信息,并没有提供一种机制来支持改变已提供的信息,DHCP使用租用的概念扩展该协议,客户机可以进行续租进行DHCP的操作.
    • 服务器使用端口67,客户端使用端口68
    • DHCP有自动分配,动态分配.手工分配三种分配模式.
    • 动态分配
      • 客户机从服务器配置的地址池中获得一个可撤销的IP地址
    • 自动分配
      • 跟动态分配机制相同,但是不可撤销
    • 手工分配
      • DHCP协议用于传输地址,但地址对于客户机是不变的(即不属于服务器维护的分配池的一部分)
  • 地址池和租用
    • 在动态分配中,DHCP客户器请求分配一个IP地址,服务器从可用的地址池中选择一个地址作为响应.
    • 分配的地址只在一段特定时间内有效,这段时间称为租用期,可用使用这个地址知道租用期到期.在大多数情况下,客户机可在希望延长租用期时续订足月
  • DHCP和BOOTP消息格式
    • 0 15,16 31
    • | OP(请求/应答,8位) | HW类型(htype,8位) | HW长度(hlen,8位) | 跳步数(8位) |
    • |                事务ID(xid,32位)                 |
    • |        秒数(Secs,16位)      |       标志(16位)      |
    • |                客户机IP地址(xid,32位)             |
    • |                你的IP地址(yid,32位)              |
    • |                (下一)服务器的IP地址(siaddr,32位)       |
    • |                网关的IP地址(giaddr,32位)       |
    • |                客户机硬件地址(chaddr,128位)       |
    • |                服务器名(sname,64位)         |
    • |                引导文件名(file,128位)       |
    • |                选项(vend,可变)       |
    • OP
      • 标识消息1:请求,2:应答
    • HW(htype)类型
      • 分配基于ARP使用的值,最常见的值是1
    • HW(htype)长度
      • 用于存放硬件(MAC)地址,对于类似以太网的网络,该值通常为6
    • 跳步数
      • 用于记录传输过程中中继的次数,在生成消息时,该值被初始化为0
    • 事务ID
      • 是有客户机选择的一个随机数,服务器需要将其复制到响应里,用于请求和应答的匹配
    • 秒数
      • 由客户机设置,他是第一次尝试申请或重新申请地址经过的秒数
    • 标志
      • 当前只有一个经过定义的位,称为广播标志,客户机可以在请求中设置该位,表示客户机可以处理广播数据报,但是不能处理单播IP数据报
    • 客户机IP地址
      • 当已知请求者IP地址则填充到该字段,否则为0
    • 你的IP地址
      • 由服务器田蟹,以便向请求者提供服务器地址
    • 下一服务器IP地址
      • 给出下一个服务器的地址,它用于客户机的引导过程
    • 网关IP地址
      • 由DHCP或BOOTP中继器填写,它们在转发DHCP(BOOTP)消息时返回自己的地址
    • 客户机硬件地址
      • 字段保存客户机的唯一标识符,并可由服务器以不同方式在使用,包括当某个客户机每次发送地址请求时为其分配相同IP地址.
      • 该字段通常保存客户机的MAC地址,他被用作一个标识符,目前,客户机标识符是它的首选
    • 服务器名和引导文件
      • 这些字段不是每次都需要田蟹,它们分别包含64字节或128字节ASCII字符,表示服务器名或启动文件路径.
      • 如果空间警长,它们可用于保存DHCP选项
    • 选项
      • 长度可变,选项广泛用于DHCP中,以区分DHCP消息与传统BOOTP消息
  • DHCP和BOOTP选项
    • DHCP是对BOOTP的一种扩展
    • 有些字段在BOOTP设计之初是不存在的,这些字段可以通过选项来携带
    • 常见字段:0:填充,1:子网掩码,3:路由器地址,6:域名服务器,15:域名,50:请求的IP地址,51:地址租用期,53,DHCP消息类型,54,服务器标识符,55,参数请求列表,56:DHCP错误消息,58:租约更新时间,59:租约重新绑定时间,61:客户机标识符,119:域搜索列表,255:结束
    • 53:DHCP消息类型选项在DHCP消息中,是一定存在的
      • 1:DHCPDICOVER(发现)
      • 2:DHCPOFFER(提供)
      • 3:DHCPREQUEST(请求)
      • 4:DHCPDECLINE(下降)
      • 5:DHCPACK(确认)
      • 6:DHCKNAK(拒绝)
      • 7:DHCPRELEASE(发布)
      • 8:DHCPINFORM(通知)
      • 9:DHCPFORCERENEW(强行更新)
      • 10:DHCPLEASEQUERY(租赁查询)
      • 11:DHCPLEASEUNASSIGNED(租赁未分配)
      • 12:DHCPLEASEUNKNOWN(租赁未知)
      • 13:DHCPLEASEACITVE(租赁活动)
    • 当选项位于服务器名和引导文件名时,称之为选项超载,选项超载执行顺序为选项字段,引导文件名,服务器名
  • DHCP协议操作
    • 典型DHCP交换
      • 客户机---DISCOVER--->服务器(决定配置)---OFFER---->客户机(收集并选择)----REQUEST---->服务器(选择的服务器确定配置)------ACK---->客户机(配置,验证)-----检测冲突----->客户机(ACD检测,如果有冲突则拒绝配置)
      • 客户机首先会广播一个DISCOVER消息,所有DHCP服务器都会相应一个OFFER消息,并在你的IP字段填充自己提供的可选择IP地址,在客户机接收到一个或多OFFER消息后,确认使用哪个IP地址后,会进行REQUEST广播,但只有提供给客户机IP地址的服务器会将该地址进行绑定,其他服务器会清除与该请求相关的状态,完成绑定后,提供IP地址的服务器会响应一个ACK消息,通知客户机可使用该地址,如果该地址在分配时遇到问题,会相应一个NACK消息,当客户机接收到ACK消息时,会在当前网络进行ACD冲突检测,当检测到地址已被使用,会发送一个DECLINE消息给服务器,在10秒后会重新运行该流程,在客户机不进行续租行为时,会发送一个RELEASE消息,当服务器进行续租行为,会跳过最初的DICOVER/OFFER流程,直接进行REQUEST消息请求当前使用的地址,当不希望更新当前地址,但是需要其他的配置信息可以使用INFORM消息代替REQUEST消息,会接收到服务器传回的ACK消息,也包括了其他的额外信息
  • DHCP状态机

  • DHCPv6
    • DHCPv6 和 DHCPv4,设计实现同一个目标,但是各自的协议设计和选项完全不同
    • DHCPv6使用一种有状态模式,其工作原理非常像DHCPv4,他也可以使用一种无状态模式,并结合无状态地址自动配置
  • IPv6地址生命周期

    • IPv6每个接口拥有多个地址,每个地址拥有自己的生命周期,当声明周期超时后,会从首选状态转为废弃状态可用于现有传输,但不能启动新的链接
    • 当一个地址被第一次使用时,会进入临时或乐观的状态,在进行DAD之后,会转入首选状态,进行无限制的使用,直到超时或者状态被改为废弃.
  • DHCPv6消息格式
    • 客户机端口546和服务器端口547进行传输,封装的数据报为UDP/IPv6
    • 存在两种消息,一种是用于客户机和服务器,一种是用于中继服务器
    • 客户机/服务器消息格式
      • | 消息类型 | 事务ID(24位) |
      • |     选项       |
    • 中继代理消息格式
      • | 消息类型 | 跳步数 |      |
      • |       链路地址      |
      • |         |         |
      • |       对等方地址      |
      • |         |
      • |       选项       |
    • 链路地址给出了全局IPv6地址.服务器用它标识客户机所处的链路
    • 对等方地址字段包含中继代理地址或客户及地址.
    • 中继过程可能是链状的,可能来自另外一个中继的转发
    • IPV6选项和IPV4选项的对应关系
      • 1:SLICIT(征求) DHCPDISCOVER(发现)
      • 2:ADVERTISE(广告) DHCPOFFER(提供)
      • 3:REQUEST(请求) DHCPREQUEST(请求)
      • 4:CONFIRM(请求) DHCPREQUEST(请求)
      • 5:RENEW(请求) DHCPREQUEST(请求)
      • 6:REBIND(重新绑定) DHCPDISCOVER(发现)
      • 7:REPLY(回复) ACK/NAK(确认/拒绝)
      • 8:RELEASE(发布) RELEASE(发布)
      • 9:DECLINE(下降) DCLINE(下降)
      • 10:RECONFIGURE(重新配置) FORCERENEW(强制更新)
      • 11:INFORMATION-REQUEST(信息请求) INFROM(通知)
      • 12:RELAY-FORW(中继转发) N/A
      • 13:RELAY-REPLY(中继回复) N/A
      • 14:LEASEQUERY(租赁请求) LEASEQUERY(租赁请求)
      • 15:LEASEQUERT-REPLY(租赁请求回复) LEASE{UNASSIGNED,UNKNOWN,ACTIVE}
      • 16:LEASEQUERY-DONE(租赁查询) LEASEQUERYDONE租赁查询()
      • 17:LEASEQUERY-DATA(租赁数据) N/A
      • 18:N/A BULKLEASEQUERY()
  • 身份关联
    • ID是用于DHCP客户机和服务器之间的一个标识符,用于指向一个地址集,每个IA包括一个IA标识符(IAID)和相关配置信息.每个请求DHCPv6分配地址的客户机接口至少需要一个IA,每个IA可以仅与一个接口相关联
    • IA选项格式
    • 非临时地址选项的IA
      • | OPTION_IA_NA | 选项长度 |
      • |       IAID       |
      • |       T1        |
      • |       T2        |
      • |       IA/NA选项     |
    • 临时地址选项的IA
      • | OPTION_IA_NA | 选项长度 |
      • |       IAID       |
      • |       IA/NA选项     |
  • DHCP唯一标识符
    • 用于标识一台DHCPv6客户机或服务器,并被设计为可持续一段时间,服务器用它标识所选地址对应的客户机和配置信息,客户机用它标识感兴趣的服务器,DUID长度是可变的.对大多数用途来说,客户机和服务器将它看做一个不透明的值
  • 协议操作
    • DHCPv6 是否启用取决于路由器通告消息给出的2个位字段,
      • M位是可管理地址配置标识,表示IPv6地址可使用DHCPv6获得
      • O位是其他配置标识,表示IPv6地址之外的信息可使用DHCPv6获得
        • 两者关闭则不进行任何操作
        • M关闭O启动,表示客户机使用无状态DHCPv6
        • M启用O关闭,最不实用
    • DHCPv6协议操作比DHCPv4多了一个ICMPv6路由器操作,其他相同,通过ICMPv6路由器消息,获取M和O的值,进行后续操作
  • DHCPv6前缀委托
    • 一个路由器可以通过前缀委托一个地址空间范围.例如ISP给出一个可由潜在客户重新分配的地址范围
  • DHCP中继
    • 中继代理用于将DHCP操作扩展到跨越多个网段
  • DHCP认证
    • DHCP没有提供安全暴涨,所以可能简历一些未授权的DHCP客户机或服务器,可能严重破坏一个网络的其他功能
    • | 代码  | 长度 | 协议 | 算法 |
    • | RDM | 重放检测         |
    • |         认证信息     |
    • 认证选项目的确定DHCP是会否来自一个授权的发送方
    • 代码字段设置为90
    • 长度给出选项中的字节数
    • 协议和算法字段如果为0,认证信息如果保存一个简单的共享配置令牌,只要客户机和服务器的配置令牌相同,即可接受消息.当然,该认证方式并不安全,仅可以防御一些偶发的DHCP问题
    • 当协议和算法字段为1,客户机的DISCOVER和INFORM消息中会包含一个认证选项,并且服务器OFFER和ACK消息也会携带,认证选项会包括一个消息验证码,用来检验文件的完整性
    • 重放检测,可以防御重放消息来的攻击,该字段总会递增,如果该消息为相同,可能是对一个早期DHCP消息的重放
    • DHCP没有广泛使用,1:要在客户机和服务器之间共享一个密钥,2:DHCP认证出现在DHCP广泛使用之后
  • 重新配置扩展
    • 该扩展的目的是当网络中出现一些明显的状态改变时,使客户端能重新建一个或丢弃自己的地址,但是该扩展很容易被dos攻击利用,所以需要DHCP认证选项,也就没有流行
  • 快速确认
    • 快速确认选项可以允许一台DHCP服务器通过一个DHCPACK;来相应DHCPDISCOVER.从而有效跳过DHCPREQUEST消息,这个选项的设计目的是快速配置有可能频繁改变其网络接入点的主机.
    • 如果需要快速确认选项,客户机可以在DISCOVER消息中添加该选项,其他消息不能包含该选项,服务器也仅能在ACK消息中使用选项
    • 当一台服务器使用该选项后,客户机可以立即使用服务器通过ACK下传的地址,如果没通过ARP,客户机可以通过DHCPDECLINE来放弃传下的地址,也可以通过DHCPRELEASE消息放弃地址
  • 无状态地址自动配置
    • IPv4和IPv6都有用于链路本地地址自动配置的机制,一台主机基本不需要协助就可以决定自己的地址,这就是所谓的无状态地址自动配置(SLAAC)
  • IPv4链路本地地址的动态配置
    • 主机通过APIPA可自动从链路本地范围使用16位子网掩码生成自己的IPv4地址
  • IPv6链路本地地址的动态配置
    • IPv6SLAAC的目标是允许节点自动分配链路本地IPv6地址
  • IPv6重复地址检测(DAD)
    • DAD使用ICMPv6邻居请求和邻居通告消息,以确定一个特定IPv6地址是否已在连接链路上使用.
    • 一个节点首先加入临时地址的所有节点组播地址和请求节点组播地址,为了检查使用的地址是否重复,一个节点发送一个或多个ICMPv6邻居请求消息,这些消息的源和目的IPv6地址分别是未指定地址和被检查目的地址的请求节点地址,目的地址字段设置为被检查的地址,如果在响应中收到一个邻居通告消息,说明DAD失败,并放弃被检查的地址
  • 以太网上的PPP
    • 这种方法设计在以太网中携带PPP,所以称为以太网上的PPP
  • 与系统配置相关的攻击
    • 未授权客户机或未授权服务器对DHCP的干扰,到耗尽资源的各种形式的Dos攻击.IPv4无法通过典型部署还防御这些攻击.
    • IETF致力于为IPv6邻居发现提供安全性,哪个邻居,什么时间或是否已部署SLAAC,这些因素将直接影响网络运行的安全性.
    •  

 

 

 

 

 

更多推荐

第六章 DHCP和自动配置

本文发布于:2023-06-14 07:29:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1451244.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第六章   DHCP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!