什么是DHCP
HCP(动态主机配置协议)是一个局域网的网络协议,客户机 / 服务器协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
作用
为主机指定配置信息
发展
BOOOTP(Internet引导程序协议)
只能提供有限的配置信息,没有机制来知此恨改变已经提供的信息。
DHCP
- 使用租用的概念扩展BOOTP模型
- 提供主机操作所需的所有信息
DHCP的组成
- 地址管理:
- 用于IP地址的动态分配
- 并为客户机提供地址租用
- 配置数据交付
- DHCP协议的消息格式
- 状态机
DHCP提供的三种地址分配方案
- 自动分配
- 动态分配
- 手动分配
差异
- 地址分配是否基于客户机的身份
- 该地址是否可撤销或变更
动态分配
客户机从服务器配置的地址池(通常是一个预定义的范围)中获取可撤销的IP地址
地址池
通常情况下,可用地址池专门为DHCP用途分配的一个连续的IP地址范围
- 租用期:分配给客户的地址只在一段特定时间内有效。客户机可提出延长租用期的要求
- 续订租期:客户机在租期过半的时候开始尝试续订租约
- 租用期的长度的特点:
- 无限是可能的 :不推荐使用,除非是简单网络
- 较长的租用期:较快耗尽可用的地址池,但是能提供更稳定的地址和减少网络开销(续租请求少)
- 较短的租用期:提供可用性更高的地址池,稳定性减小和网络流量负荷增大
- 常见默认值:12~24小时
租用
- 客户机发送DHCP请求 -------(客户机提供的信息)----->服务器接受请求----(客户机提供的信息+外部信息==》响应中的地址和配置信息)
- 租用信息保存:服务器保存在持久性存储器中,通常是非易失性内存或磁盘中。服务器重启运行良好,租约将保持完好。
DHCP和BOOTP消息格式
固定长度
- Op(操作字段)(8位):标识消息是请求(1)或应答(2)
- HW(htype)(8位):基于ARP使用的值,常见值是1(以太网)
- HW(hlen)(8位):存放硬件(MAC)地址。对类似以太网的网络,通常是6
- 跳步数(8位):消息传输过程中的中继次数。发送方设置为0
- 事务ID(32位):客户机选择的随机数。用于将应答和请求匹配
- 秒数(16位):客户机设置。第一次申请或者重新申请地址经过的秒数
- 标志(16):当前只包含一个经过定义的位(广播标志),客户机可能在请求中设置该位,表示它们不能或不愿意处理单播IP数据报,但可以处理广播数据。
0 | 1~15 |
---|---|
B | 零 |
- 客户机地址(32):请求者的IP地址(如果有),否则为0
- “你的”IP地址(32):由服务器填写,以便向请求者提供服务器地址
- (下一)服务器地址(32):下一个服务器的地址,用于客户机的引导过程
- 网关(中继)IP地址(32):由DHCP或BOOTP中继器填写,它们在转发DHCP(消息时返回自己的地址)
- 客户机硬件地址(128):客户机的唯一标识,通常是MAC地址。可以让服务器以不同方式来使用。
- 服务器名(64):ASCLL字符。以null结尾。如果空间紧张,可用于保存DHCP选项
- 引导文件名(128):ASCLL字符。启动文件路径。以null结尾。如果空间紧张,可用于保存DHCP选项
可变长度
- 选项:
- 格式
8位 | 固定数量的字节 | 一字节 | |
---|---|---|---|
标签:选项的类型 | 选项值 | 选项值长度 | 包含选项值自身的可变数量的字节 |
-
消息选项类型:
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPDECLINE
DHCPACK
DHCPNAK
DHCPRELEASE
DHCPINFORM
DHCPFORCERENEW
DHCPLEASEQUERY
DHCPLEASEUNASSINGNED
DHCPLESEUNKNOWN
DHCPLEASEACTIVE -
选项超载现象
-
超载选项(52):来表明那些字段适合携带选项。
-
选项长度对携带的影响
选项字段:常规携带位置
服务器名字段和引导文件名字段:选项超载。将包含一个超载选项(52) -
长选项机制:对应超过255字节的选项
-
同意选项在同一消息出现多次:按出现在消息中的顺序组合,并将结果作为一个选项来处理
-
如果一个长选项用于表示选项超载,这时处理顺序是从后向前:选项字段、引导文件名字段和服务器名字段
-
选项的包含的内容
DHCP协议操作
- 客户机发出DHCP请求
- 广播消息
- UDP/IP数据报
- 消息类型:DHCPDISCOVER
- Op字段:BOOTREQUEST
- 选项字段前4个字节:十进制 99、130、83、99
- 客户机->服务器:0,0,0,0(端口68)----->255,255,255,255(端口67)
- 服务器–>客户机:服务器IP(端口67)------->本地IP广播地址(端口68)
- 服务器响应
- 当客户机广播之后,对于接收到消息的服务器,无论是直接接受还是通过中继代理都会响应
- 消息类型:DHCPOFFER消息
- ”你的”IP地址:包含提供的IP地址
- 租用时间T:在不更新租约的情况下地址可被租用的时间上限
- 更新时间T1:客户机从获得租约到尝试要求服务器更新租约的时间
- 重新绑定时间T2:客户机尝试要求DHCP服务器更新其地址的时间
- 默认情况:T1=(T/2),T2=(7T/8)
- 收集响应,选择服务器
- 客户机会收到一个或多个服务器的DHCPOFFER
- 客户机确认自己想接收哪个DHCPOFFER
- 广播一个包括服务器标识符选项的DHCPREQUEST消息
- IP地址选项:由选中的DHCPOFFER消息提供的地址
- 可能会被多个服务器收到,但是,只有服务器标识符选项的标识的服务器可以同意将该地址进行绑定
- 其他服务器清除与该请求相关的状态
- 完成绑定
- 选中的服务器响应一个DHCPACK消息,通知客户机现在可以使用该地址。
- 如果服务器无法分配包含在DHCPREQUEST消息中的地址,该服务器将响应一个DHCPNAK消息
- 客户机响应
- 接收到DHCPNAK消息和其他相关配置信息时,可以探测网络,以确认地址未被使用
- 如果地址已经被使用,客户机就不使用,向服务器发送一个DHCPDECLING消息,通知该地址不能被使用
- 经过默认10秒之后,客户机可以重试
- 客户机如果在租约期到期之前放弃一个地址,它将发送一个DHCPRELEASE消息
- 更新租约
- 客户机通过一个DHCPREQUEST消息请i去当前正在使用的地址
- 情况一:服务器可能会拒绝该请求(DHCPNCK),也可能同意(DHCPACK)
- 情况二:客户机不需要更新,但需要其他配置信息,可使用DHCPINFORM代替DHCPREQUEST,以表明客户机使用现有地址,但希望获得额外的信息。服务器会返回一个DHCPACK消息,包括了额外的配置信息
DHCP状态机
DHCP协议在客户机和服务器运行一个状态机
状态用于指出协议下一个处理的消息类型
- 客户机开始处于
Init状态
:没有信息,并广播DHCPDISCOVER消息 选择状态
:客户机接收DHCPOFFER消息,直到决定使用哪个服务器和地址请求状态
:当她做出选择,发出DHCPREQUEST消息来响应时,进入请求状态- 接收ACK:
- 可能会收到来自不需要的地址的ACK。如果没有发现它需要的地址,发送一个DHCPDECLING消息,并
转化到Init状态
- 接收到一个自己需要的地址的DHCPACK消息,接受它,获得超时值T1和T2,并
进入绑定状态
,这是就能使用这个地址直至过期
- 更新状态:当地一个计时器T1到期进入更新状态,并尝试重新建立租约。如果接收到一个新的DHCPACK这个过程成功。不成功—T2到期,导致客户机尝试从任意服务器重新获得一个地址。
- 租用期到期:客户机放弃所租用的地址,如果没有可选的地址或可用的网络连接,这时他将断开网路链接。
DHCPv6
ipv6地址生命周期?
DHCPv6消息格式
- DHCPv6消息被封装为UDP/IPv6数据报,它使用客户端端口546,服务器端口547
- 消息发送到终极代理或服务器,它使用一台主机的链路范围的源地址
基本格式(客户机/服务器消息格式)
消息类型包含了典型的DHCP消息
扩展格式(中继器代理)
用于DHCPv6中继代理和DHCPv6服务器
- 消息类型包含了RELAY-FORW(中继代理转发)和RELAY-REPL(目的地是中继代理的消息)
- 链路地址:给出了全局IPv6地址,服务器用它标识客户机所在链路
- 对等放地址:包含中继代理地址或客户机地址(要中继的消息来自客户机)
- 选项字段:包含了中继消息选项(包含中继转发的完整消息);其他选项也可包含在内
DHCPv6和DHCPv4区别
- DHCPv6使用ipv6组播方式:客户机将请求发送到所有的中继代理和服务器的组播地址(ff02::1:2)源地址在链路本地范围。没有保留BOOTP消息格式
身份关联(IA)
- IA 是HDCP客户机和服务器之间的一个标识,用于指向一个地址
- IA标识符(IAID): 每个 IA包括一个IAID ,客户机选择的IAID唯一标识每个IA,并将这个值与服务器共享
- 每个 IA可以仅与一个接口相关联
- 每个向DHCPv6分配地址的客户机接口至少需要一个 IA
- IA的配置信息(一个或者多个地址,以及相关的租约信息)
- 地址的首选生命周期和有效生命周期
- 请求的地址类型:常规地址。临时地址。
同时分配
临时地址 | 常规地址 |
---|---|
1.有随机数的一部分派生而来 | |
2.用于协助改善IPv6主机地址跟踪隐私问题 |
- 服务器响应一个请求时,它为客户机的IA分配一个或多个地址,分配时基于服务器管理员确定的一组
地址分配策略
- 地址分配策略:依赖于请求所到达的链路、客户机的标准信息,以及DHCP选项中由客户机提供的其他信息。
8 临时地址和非临时地址的区别:临时地址没有TI和T2时间
DHCP唯一标识符(DUID)
每台主机和路由器都要有配置信息
提供和获取这些配置的方法:3种
- 一个系统要在Internet上运行并提供常用服务的“基本要素”:ip地址,子网掩码,DNS服务器,路由器的IP地址
- 服务器用它标识所选地址对应的客户机和配置信息
- 客户机用它标识感兴趣的服务器
- 长度可变
- 全球唯一
- DUID类型:(不止这三种)
- DUID-LLT:基于链路层地址和时间
- DUID-EN: 基于企业编号和供应商分配
- DUID-LL: 仅基于链路层地址
- 标准格式:
- 开始于2字节的用于指出是哪种DUID的标识符
- DUID-LLT 中,紧跟着是一个16位的硬件类型【RFC0826】,是推荐的格式,之后是一个32位的时间戳,其中秒数开始于2000年1月1日午夜,将在2136年归零;最后是可变长度链路层地址
- DUID-LL 中,紧跟着是一个16位的硬件类型【RFC0826】
- DUID-EN 中则是一个32位的专用企业编号
协议操作
一台在客户机是否启用DHCP,取决于一台主机接收到的ICMPv6路由器通告消息。
ICMPv6路由器通告消息重要字段
M位
可管理地址配置标志:表示IPv6地址可使用DHCPv6获得
O位
其他配置标志:表示ipv6地址之外的配置可以通过DHCPv6获得
M和O位的组合
- 都关闭:不使用DHCPv6,使用无状态地址自动分配
- M关闭,O启用:客户机使用无状态DHCPv6,并使用无状态地址自动分配
操作过程
1:solicit 对应dhcpv4 的discover报文
2:advertise 对应dhcpv4 的offer报文
3:request 对应dhcpv4的request报文
4:reply 对应dhcpv4的ack报文
- 客户机先确定使用的链路本地地址
- 执行ICMP路由发现操作:确定所在网络中是否存在一台路由器
- 路由器通告:
- 客户机组播DHCPSOLICIT:以便发现DHCPv6服务器
DHCPv6
DHCPv6前缀委托(DHCPV6-PD和6rd)?
DHCPv6可以配置主机也可以配置路由器。
配置路由器可以通过向另一台路由器委托一个地址空间范围来实现。这个地址范围可以描述为一个ipv6地址前缀;这个前缀在【RFC3633】定义的DHCP前缀选项中。
IA_PD
- 前缀委托定义的新格式的IA。
- 每个IA_PD由一个IAID和相关的配置信息构成。
- DHCPv6-PD对固定路由器和移动路由器做前缀委托
6rd(特殊格式的PD)
- 用来支持服务提供商快速部署IPv6。
- IPv6 6rd前缀:保存在OPTION_6RD选项中,用于根据客户已分配的IPv4地址为客户网站分配IPv6地址
- 如何分配IPv6地址:通过算法,它将服务提供商提供的6rd前缀作为前n位(推荐小于32)。客户分配的单播地址IPv4地址作为后面的32(或更少位)
- OPTION_6RD选项包括的值:
- ipv4掩码长度
- 6rd前缀长度
- 6rd前缀和6rd中继地址列表(提供6rd中继的ipv4地址)
使用DHCP中继
- 简单网络中,一个DHCP服务器可供一个局域网使用
- 复杂网络中,可以通过一个或更多DHCP中继代理来中继DHCP流量。
- 中继代理用于将DHCP操作扩展到跨越多个网段。
- 使用中继的时机
- 在一般情况下,中继不会参与客户机和服务器之间的所有DHCP流量交换。
- 相反,它仅中继那些 广播消息(或IPv6中的组播)。这种消息通常在客户机首次获得自已的地址时交换。
- 当一台客户机获得一个IP地址,并且服务器的IP地址使用服务器标识选项时,它可与服务器进行单播通信而不经过中继。
- 注意,中继代理在传统上是第3层设备,并且通常结合了路由功能。
中继代理信息选项(针对DHCPv4,RAIO)
中继代理的最初目的:将一个消息从一个子网中继到另一个,而不需要经过一台路由器
RAIO:在很多情况下,我们看到DHCPv4信息选项中的每个子选项都有对应的IPv6选项。
RAIO的DHCP认证子选项:它提供了一种确保中继和服务器之间消息交换完整性的方
法。这
中继代理远程ID子选项和IPv6远程ID选项
背景:中继的共同需求是通过超出客户机自身提供的信息之外的信息来标识发送DHCP请求的
客户机。
- 远程ID子选项:它提供了二种标识发送请求的DHCP客户机的方法
- CPv6中继代理远程ID选项:提供了相同的功能,它还包括一个额外的字段(企业编号),以表明与供应商相关的识别信息。这种远程ID信息格式后来以一种基于企业编号的特定供应商方式定义。一种常用的方法是将DUID用于远程ID
服务器标识符覆盖?
背景:中继可能希望干预DHCP客户机和服务器之间的操作
场景:在通常情况下,一个中继会转发SOLICIT消息,并在消息从客户机传递到服务器的过程中,可能为这些消息附加某些选项。中继在这种情况下是必要的,因为客户机可能还没有一个可接受的IP地址,并且仅用广播或组播方式将消息发送到本地子网。当一台客户机接收并选择自已的地址之后,它可使用服务器标识符选项中携带的服务器标识直接与DHCP服务器通信。实际上,这将削弱中继在客户机和服务器之间后续事务中的作用。.
租约查询和大批量租约查询
- 背景:在某些环境下,允许第三方系统(如中继或接人集中器)学习一个特定DHCP客户机的地址绑定是有用的。
- 来提供。在DHCPv6中,它也可为委托前缀提供租约信息。
- 这些信息可能由中继保存,但也可能在中继失败时丢弃oDHCPLEASEQUERY消息允许一个代理根据需要重新获得这种信息,它通常发生在一个中继流量已失去绑定的情况下。
- HCPv4, DHCPLEASEQUERY消息支持4种查询: IPv4地址、 MAC地址、客户机标识符和远程ID。
- 对于DHCPv6,它支持两种查询: IPv6地址和客户机标识符(DUID)。
- DHCPv4服务器可能用以下几种消息响应租约查询:
- DHCPLEASEUNASSIGNED:指出该查询值的响应服务器是授权的,但目前没有分配相应租约
- DHCPLEASEACTIVE:表示一个租约是有效的,并提供了租约参数(包括Tl和T2)。这里没有对此信息用途的特定建议,无论出于何种目的,都希望提供给请求者。 DHCPv6服务器使用一个LEASEQUERYLREPLY消息来响应,其中包含一个客户机数据选项。这个选项依次包括以下选项:客户机ID、 IPv6地址、 IPv6前缀和 客户机的最后事务时间。
- DHCPLEASEUNKNOWN:服务器最后一次询问客户机的时间(以秒为单位)。LEASEQUERYLREPLY消息也可包含以下两个选项:中继数据和客户机链路。第一个选项包括中继最后一次发送的相关查询的数据,第二个选项指出特定客户机拥有一个或多个地址绑定的链路。再次指出,这个信息可用于请求者希望的任何目的。
大批量租约查询(BL)
- 租约查询的扩展
- 同时查询多个绑定关系,支持更大范围的查询类型
- 使用UDP/IP
- 不是传统DHCP的一部分
- 特殊用途场景:DHCP用于获取一个前缀委托时
第二层中继代理
- 第二层设备:
- 第二层设备更靠近端系统,他们会 中继和处理DHCP请求
- 背景:第二层设备不能做为传统的中继代理的问题
解决:对IPv4和IPv6规定了第2层“轻量级”DHCP中继代理(LDRA)如何工作
- 当针对中继行为时,接口被标记为面向客户或面向网络,以及可信或不可信。
- 面向网络的接口在拓扑结构上更接近DHCP服务器
- 可信的接口是那些假设到达的分组不存在欺骗的接口
ipv4的LDRA
问题:题是如何处理DHCP的giaddr字段,以及在LDRA本身没有IP层信息时插人一个RAIO
推荐的方法是
- LDRA在客户机接收的DHCP请求中插入RAIO,但不填写giaddr字段
- DHCP消息以广播方式发送给一个或多个DHCP服务器,以及其他处于接收状态的LDRA。 这种消息一直被洪泛(即在所有接口上发送,除了获得该消息的接口),直到被一个不可信的接口接收。当LDRA接收到一个包含RAIO的这种消息,它不会添加其他的同类选项,但会继续执行洪泛。通过广播发送的响应(例如DHCPOFFER消息)可能被LDRA拦截,这时需要剥离RAIO并使用其中的信息,以便将响应发送给发出请求的客户机。很多LDRA也拦截单播的DHCP流量。在这些情况下,创建或剥离RAIO也是必要的。
- 注意,兼容的DHCP服务器必须支持处理和返回这样的DHCP消息:无论是用单播发送还是广播发送,其包含的RAIO中没有有效的giaddr字段
ipv6的LDRA
- IPv6的LDRA通过创建RELAYLFORW和RELAYLREPL消息处理DHCPv6流量
- 面向客户的接口将会丢弃接收到的ADVERTISE、 REPLY、 RECONFIGURE和RELAYLREPL消息
- 不可信的面向客户的接口也会出于安全原因丢弃接收到的RELAYLFORW消息
- RELAYLFORW消息包含标识面向客户接口的选项(即链路地址字段、对等方地址字段和接口ID选项)。链路地址字段设置为0,对等方地址字段设置为客户机IP地址,接口ID选项设置为LDRA中配置的值。
- 当接收到一个链路地址字段为0的RELAYLREPL消息时,LDRA解封所包含的信息,并将其发送到由接口ID选项(由服务器提供)指定的客户机接口。
- 面向客户的接口修改接收的RELAYLFORW消息的跳步数。面向网络的接口将会丢弃接收的除RELAYLREPL之外的消息
DHCP认证
DHCP并没有提供安全保障,因此可能建立一些未授权的DHCP客户机或服务器,无论是有意的还是无意的,这可能严重破坏一个网络的其他功能。
DHCP选项,即认证选项
目的:
确定DHCP认证选项的目的是确定DHCP
配置方式:
- 代码字段设置为90,长度字段给出选项中的字节数(不包括代码或长度字段)。如果协议和算法字段值为0,认证信息字段保存一个简单的共享配置令牌。只要客户机和服务器的配置令牌匹配,相应的消息可以接收。(这种流量可能被攻击者截获,因此这种方法并不很安全,但是,它可能有助于抵御偶然的DHCP问题。)
- 延期认证
- 具体看协议和算法字段是否设置为1 :客户机的DHCPDISCOVER或DHCPINFORM消息中包含一个认证选项,并且服务器在DHCPOFFER和DHCPACK消息中包含响应的认证信息
-
- 这个认证信息中包括一个消息认证码(MAC ;见第18章),它提供对发送方的认证和消息内容完整性的检验。假设服务器和客户机有一个共享的密钥, MAC可确保客户机被服务器信任,反之亦然。它也用于确保客户机和服务器之间交换的DHCP消息没有被修改,或是由早期DHCP消息重放而来
- 重放检测方法(RDM)由RDM字段值来确定。如果RDM设置为0,重放检测字段包含一个单向递增的值(例如时间戳)。检测接收的消息以确保该值总是增加。如果这个值没有增加,很可能是对一个早期DHCP消息的重放(捕获、存储并在此后重新发送)。我们可以想象,在数据包重新发送的情况下,重放检测字段中的值不会增加。但是,在一个局域网(DHCP普遍用于其中)中也可能无法说明问题,这是因为DHCP客户机和服务器之间通常只经过一跳路由
DHCP认证没有广泛使用(至少)有两个原因
- 第一,这种方法需要在DHCP服务器和每个需要认证的客户机之间分发共享密钥。
- 第二,认证选项的定义出现在DHCP已广泛使用之后。尽管如此, [RFC4030]建立在这个规范之上,以帮助DHCP消息通过中继代理安全转发
重新配置扩展
- 在普通操作中, DHCP客户机启动对地址绑定的更新。
- 重新配置扩展:
扩展允许服务器引发一个客户机改变更新状态,并通过别的普通操作(即DHCPREQUEST)尝试更新租约。一台不希望更新租约的服务器可能响应一个DHCPNAK,导致客户机重新启动为INIT状态。这台客户机稍后使用一个DHCPDISCOVER消息重新开始。 - 目的:是当前网络中出现一些明显的状态改变时,使客户端能重新建立一个地址或丢弃自己的地址
- 该扩展没有流行起来
快速确认
- 功能:允许一台DHCP服务器通过一个DHCPACK来响应DHCPDISCOVER消息,从而有效跳过DHCPREQUEST消息,并最终使用两消息交换来代替四消息交换。
- 设计目的:快速配置可能频繁改变其网络接人点的主机(例如移动主机)
- 当仅有一台可用的DHCP服务器并且地址充足时,我们可以不关注这个选项。
- 使用:
- 客户机可在DHCPDISCOVER消息中包含该选项,但在任何其他消息中不能包含该选项。
- 服务器仅在DHCPACK.消息中使用该选项
- 当一台服务器使用该选项来响应时,接收消息的客户机知道该返回地址可立即使用。如果后来确定该地址已用于另一个系统(例如通过ARP),客户机发送一个DHCPDECLINE消息,并放弃该地址。客户机也可能通过一个DHCPRELEASE消息自愿放弃接收到的地址
位置信息(LCI和LoST)
- GeoConf(123)和GeoLoc(144)选项:提供地理空间位置配置信息(LCI)。包括经纬度,高度坐标每个信息的分辨率指标。
- GEOCONF_CIVIC(99):市政地址位置
- 启用HTTP的位置投递(HELD)协议:用于提供位置信息,替在DHCP消息中直接编码LCI,而是采用DHCP选项OPTION_V4_ACCESS_DOMAIN ( 213 )和OPTION_V6_ACCESS_DOMAIN ( 57 )分别为IPv4和IPv6提供一台HELD服务器的FQDN
- 相关的位置服务:当一台主机知道自已的位置时,它可能需要使用该位置的相关服务(例如位置最近的医 院)。 IETF的位置到服务转换(LoST)框架[RFC5222]通过一个使用位置相关URI访问的应用层协议来实现上述功能oDHCP选项OPTION_V4_LOST( 137 )和OPTION_V6_LOST( 51 )为一个FQDN提供可变长度的编码, FQDN分别为DHCPv4和DHCPv6指定一台LoST服务器的名称。这个编码与DNS的域名编码采用相同格式
移动和切换信息(Mos和ANDSF)
- 服务对象:蜂窝配置和不同无线网络之切换
- 有两套相关的DHCP选项:
- IEEE802.21移动服务Mos发现
- 接入网发现和选择功能(ANDSF)
Mos
- 为移动节点获得地址或域名提供了一种手段,无论提供这些服务的服务器使用DHCPv4还是DHCPv60对于IPv4
- 提供了3种类型的服务 :这些服务提供了有关可用网络、控制链路参数功能和链路状态变化通知的信息
- 信息服务
- 命令服务
- 事件服务
- OPTION-1Pv4_Address-MoS选项(139)包含一个子选项的向量,其中包含提供每种服务的服务器的IP地址
- OPTION-IPv4_FQDN-MoS选项( 140 )的一个子选项为每种服务的服务器提供了一个FQDN向量
- ANDSF规范
- 基于3GPP
- ANDSF服务器由蜂窝基础设施运营商来配置,并可能保存多种传输网络(例如同时使用3G和Wi-Fi)的可用性和访问策略等信息
- ANDSF IPv4地址选项( 142)包含一个ANDSF服务器的IPv4地址向量。这些地址按优先顺序(第一个是最合适的)提供
- ANDSF IPv6地址选项( 143)包含一个ANDSF服务器的IPv6地址向量
- 要使用DHCPv4请求ANDSF信息,移动节点可在参数请求列表中包括ANDSF IPv4地址选项。
- 要使用DHCPv6请求ANDSF信息,客户机可在选项请求选项(ORO)中包含ANDSF IPv6地址选项(见[RFC3315]的22.7节)
DHCP嗅探
DHCP “嗅探”是某些交换机厂商在其产品中提供的一种能力,可用于检查DHCP消息内容,以确保只有访问控制列表中列出的地址才可交换DHCP流量。这样有助于防止两个潜在的问题。首先,将一个“欺骗性” DHCP服务器的危害限制在一定范围内,这是因为其他主机无法接收到它提供的DHCP地址。另外,这项投术可限制一组特定MAC地址的分配。虽然该技术提供了一些保护,但是通过操作系统提供的命令,在一个系统中很容易改变MAC地址,因此这种投术只能提供有限的保护。
无状态地址自动配置(SLAAC)?
大多数路由器通过手动配置地址,主机既可手动配置地址,也可使用一种如DHCP的分配协议或某种算法来自动配置地址。 IPv4和IPv6都有用于链路本地地址自动配置的机制,一台主机基本不需要协助就可以决定自已的地址。这就是所谓的无状态地址自动配置(SLAAC)
- 这里存在两种形式的自动配置,它们取决于需要生成什么类型的地址
- 对于只用于一条链路的地址(链路本地地址),一台主机只需找到一些在链路上未使用的合适地址。
- 对于要用于全球性连接的地址,这类地址的某些部分通常必须被管理
IPv4链路本地地址的动态配置
在一台主机没有任何手工配置的地址,并且所在网络没有DHCP服务器的情况下,基于IP的通信是不可能发生的,除非主机使用某种方式生成IP地址。
- 链路本地地址的动态配置或自动专用IP寻址(APIP):
- 主机通过该机制可自动从链路本地范围169.254.1.1至169.254.254.254使用16位子网掩码255.255.0.0生成自已的IPv4
- 从本质上来说,就是一台主机从一个范围中随机选择一个地址,并检查该地址是否已在本子网中被其他系统使用。这种检查通过IPv4 ACD来实现
链路本地地址的IPv6 SLAAC
- 目标:允许节点自动(和自主)分配链路本地IPv6地址
- 包括3个主要步骤:
- 获得一个链路本地地址
- 使用无状态自动配置获取全球地址
- 检测链路本地地址是否已在链路中使用
无状态自动配置可用于没有路由器的环境,在这种情况下只分配链路本地地址。
当路由器存在时,由一个路由器通告的前缀和本地产生的信息组合成一个全球地址
- SLAAC也可结合DHCPv6 (或手动分配地址)使用,以允许一台主机获得除自已地址外的其他信息(称为“无状态” DHCPv6)。当网络采用有状态或无状态DHCPv6配置时,执行SLAAC的主机可用于同一网络中。在通常情况下,有状态DHCPv6用于需要为主机更精确分配地址时,但无状态DHCPv6和SLAAC结合是最常见的部署选择。
- 临时(或乐观)链路本地地址:
它们只用于具有组播能力的网络,并在建立时分配了极大的首选和有效生命周期。为了形成数字化的地址,在熟知的链路本地前缀氏80::0 (适当长度)之后附加了一个唯一的编号。这是通过将地址中最右边的Ⅳ位设为Ⅳ位数字,最左边的10位设为10位链路本地前缀1111111010,并且其余位设为0来实现的。生成的地址设置为临时(或乐观)状态,并检查该地址是否重复
IPv6重复地址检测(DAD)
- 使用ICMPv6邻居请求和邻居通告消息(见第8章),以确定一个特定(临时或乐观) IPv6地址是否已在连接链路上使用
- 在为一个接日分配IPv6地址时使用,无论手动分配还是自动配置或DHCPv6分配。如果发现地址重复,将不使用该临时地址。如果DAD成功,临时地址转换为优先状态,并可不受限制地使用
DAD按以下步骤执行:
- 一个节点首先加人临时地址的所有节点组播地址和请求节点组播地址。为了检查使用的地址是否重复,一个节点发送一个或多个ICMPv6邻居请求消息。这些消息的源和目的IPv6地址分别是未指定地址和被检查目的地址的请求节点地址。目的地址字段设置为被检查的地址(临时地址)。如果在响应中接收到一个邻居通告消息,说明DAD失败,并放弃被检查的地址。
- 当一个地址未成功完成DAD时,任何针对它的邻居请求被视为一种特殊情况,说明其他主机有使用相同地址的意图。如果接收到这些消息,丢弃它们,放弃当前的临时地址,并且DAD失败
- 如果DAD失败,通过接收一个来自其他节点的邻居请求或一个到目的地址的邻居通告,说明这个地址未分配给一个接日,并且不会成为一个首选地址。如果这个地址是一个基于由本地MAC地址导出的接口标识符配置的链路本地地址,不可能通过相同过程最终生成一个不冲突的地址,这时应放弃使用该地址并要求管理员输人地址。如果这个地址是基于不同形式的接口标识符, IPv6操作可能尝试使用基于别的临时地址的其他地址
全球地址的IPv6 SLAAc
在一个节点已获得一个链路本地地址后,它可能需要一个或多个全球地址。全球地址的形成过程类似于链路本地SLAAC,但需要使用一个由路由器提供的前缀。这种前缀携带在一个路由器通告的前缀选项中,并且由一个标志来表示这个前缀是否用于与SLAAC共同形成全球地址。如果是,这个前缀与接口标识符(如果不采用隐私扩展方式,它与形成链路本地地址相似)组合形成一个全球地址。这种地址的首选和有效生命周期也由前缀选项表示的信息来确定
无状态DHCP
HCPv6可用于一种“无状态”模式,在这种模式下, DHCPv6服务器不指定地址(或保留任何一台客户机的状态),但提供其他配置信息。 并将SLAAC和DHCPv6相结合
在一个无状态DHCPv6部署方案中,假设节点采用DHCPv6之外的方法获得自已的地址
无状态DHCPv6客户机使用DHCPv6的INFORMATION-REQUEST消息请求信息,该信息由服务器发送的REPLY消息提供。INFORMATION-REQUEST消息包含一个选项请求选项,给出客户机想了解的更多信息的选项。 INFORMATION-REQUEST可能包含一个客户机标识符选项,它允许为特定的客户机定制答案
地址自动配置的用途
DHcP和DNs交互
- 当一台DHCP客户机获得一个IP地址时,它接收的配置信息的重要部分是一台DNS服务器的IP地址
- 由于本地专用网络的DNS映射通常采用烦琐的手工管理,因此,将指定DHCP地址与相应地址的DNS映射更新方法结合起来将会带来方便。这可通过组合DHCP/DNS服务器或动态DNS 来实现。
- 组合DNS/DHCP服务器(如Linux dnsmasq包)是一个服务器程序,它可配置为提供IP地址租约以及其他信息,也可读取一个DHCPREQUEST中的客户机标识符或域名,并在使用DHCPACK进行响应之前,通过“名称到地址”的绑定更新内部DNS数据库。这样,由DHCP客户机或与相同DNS服务器交互的其他系统发起的任何后续DNS请求,能够在客户机名称和新分配的IP地址之间转换
以太网上的PPP
- 对于大多数局域网和一些广域网连接, DHCP提供了最常用的客户机系统配置方法
- 以太网上的PPP(PPPoE):对于广域网连接(例如DSL),常用另一种基于PPP的方法代替它。这种方法涉及在以太网中携带PPP,因此称为以太网上的PPP(PPPoE)
- pppoE用于广域网连接设备(例如DSL调制解调器)作为一个交换机或网桥而不是使用路由器的情况下。ppp作为某些ISP建立连接的首选,这是因为它可提供比其他配置选项(例如DHCP)更细致的配置控制和审计日志
- 对物理电话线的同时使用是通过频分复用来实现的, DSL信息在比POTS更高的频率上传输。当连接到传统的电话听筒时,需要用一个过滤器来避免更高的DSL频率的干扰。DSL调制解调器为PPP端日提供桥接服务,该端口位于IsP的接入集中器(AC)中,连接客户的调制解调器线和ISP的网络设备。调制解调器和AC也支持PPPoE协议,在这个例子中,该用户选择将一台家用PC连接到DSL调制解调器,并使用一个点到点的以太网络(即仅使用一根电缆的以太网)。
在DSL调制解调器与ISP成功建立一条低层链路后, PC可以开始进行PPPoE交换,它被定义在信息文档[RFC2516]中,如图6-29所示
这个协议包括一个发现阶段和一个PPP会话阶段。
发现阶段涉及交换几个PPPoE主动发现(PAD)消息: PADI (初始化)、 PADO (提供)、 PADR (请求)和PADS (会话确认)。在这个交换完成后,由以太网封装的一次PPP会话开始,并最终由任何一方发送PADT (终止)消息来终止。如果低层连接中断,这个会话也会终止。 pppoE消息使用图6-30所示的格式,并封装在以太网的有效载荷区。
PPPoE版本和类型字段的长度都是4位,并包含当前PPPoE版本的值0x1代码字段中包含PPPoE消息类型的提示,如图6-30的右下部分所示。会话ID字段包含值0x0000表示PADI、 PADO和PADR消息,并在后续消息中包含一个唯一的16位数字。在PPP会话阶段会保持相同的值. 【PAD消息包含一个或者多个标签,它们按TLV方式排列为一个16位的TAG_TYPE字段.随后是一个16位的TAG_LENGTH竿段和一个数据可变的标签值 表6-2给出了TAG_TYPE宇段的值和含义】
# 什么是DHCP
HCP(动态主机配置协议)是一个局域网的网络协议,客户机 / 服务器协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
作用
为主机指定配置信息
发展
BOOOTP(Internet引导程序协议)
只能提供有限的配置信息,没有机制来知此恨改变已经提供的信息。
DHCP
- 使用租用的概念扩展BOOTP模型
- 提供主机操作所需的所有信息
DHCP的组成
- 地址管理:
- 用于IP地址的动态分配
- 并为客户机提供地址租用
- 配置数据交付
- DHCP协议的消息格式
- 状态机
DHCP提供的三种地址分配方案
- 自动分配
- 动态分配
- 手动分配
差异
- 地址分配是否基于客户机的身份
- 该地址是否可撤销或变更
动态分配
客户机从服务器配置的地址池(通常是一个预定义的范围)中获取可撤销的IP地址
地址池
通常情况下,可用地址池专门为DHCP用途分配的一个连续的IP地址范围
- 租用期:分配给客户的地址只在一段特定时间内有效。客户机可提出延长租用期的要求
- 续订租期:客户机在租期过半的时候开始尝试续订租约
- 租用期的长度的特点:
- 无限是可能的 :不推荐使用,除非是简单网络
- 较长的租用期:较快耗尽可用的地址池,但是能提供更稳定的地址和减少网络开销(续租请求少)
- 较短的租用期:提供可用性更高的地址池,稳定性减小和网络流量负荷增大
- 常见默认值:12~24小时
租用
- 客户机发送DHCP请求 -------(客户机提供的信息)----->服务器接受请求----(客户机提供的信息+外部信息==》响应中的地址和配置信息)
- 租用信息保存:服务器保存在持久性存储器中,通常是非易失性内存或磁盘中。服务器重启运行良好,租约将保持完好。
DHCP和BOOTP消息格式
固定长度
- Op(操作字段)(8位):标识消息是请求(1)或应答(2)
- HW(htype)(8位):基于ARP使用的值,常见值是1(以太网)
- HW(hlen)(8位):存放硬件(MAC)地址。对类似以太网的网络,通常是6
- 跳步数(8位):消息传输过程中的中继次数。发送方设置为0
- 事务ID(32位):客户机选择的随机数。用于将应答和请求匹配
- 秒数(16位):客户机设置。第一次申请或者重新申请地址经过的秒数
- 标志(16):当前只包含一个经过定义的位(广播标志),客户机可能在请求中设置该位,表示它们不能或不愿意处理单播IP数据报,但可以处理广播数据。
0 | 1~15 |
---|---|
B | 零 |
- 客户机地址(32):请求者的IP地址(如果有),否则为0
- “你的”IP地址(32):由服务器填写,以便向请求者提供服务器地址
- (下一)服务器地址(32):下一个服务器的地址,用于客户机的引导过程
- 网关(中继)IP地址(32):由DHCP或BOOTP中继器填写,它们在转发DHCP(消息时返回自己的地址)
- 客户机硬件地址(128):客户机的唯一标识,通常是MAC地址。可以让服务器以不同方式来使用。
- 服务器名(64):ASCLL字符。以null结尾。如果空间紧张,可用于保存DHCP选项
- 引导文件名(128):ASCLL字符。启动文件路径。以null结尾。如果空间紧张,可用于保存DHCP选项
可变长度
- 选项:
- 格式
8位 | 固定数量的字节 | 一字节 | |
---|---|---|---|
标签:选项的类型 | 选项值 | 选项值长度 | 包含选项值自身的可变数量的字节 |
-
消息选项类型:
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPDECLINE
DHCPACK
DHCPNAK
DHCPRELEASE
DHCPINFORM
DHCPFORCERENEW
DHCPLEASEQUERY
DHCPLEASEUNASSINGNED
DHCPLESEUNKNOWN
DHCPLEASEACTIVE -
选项超载现象
-
超载选项(52):来表明那些字段适合携带选项。
-
选项长度对携带的影响
选项字段:常规携带位置
服务器名字段和引导文件名字段:选项超载。将包含一个超载选项(52) -
长选项机制:对应超过255字节的选项
-
同意选项在同一消息出现多次:按出现在消息中的顺序组合,并将结果作为一个选项来处理
-
如果一个长选项用于表示选项超载,这时处理顺序是从后向前:选项字段、引导文件名字段和服务器名字段
-
选项的包含的内容
DHCP协议操作
- 客户机发出DHCP请求
- 广播消息
- UDP/IP数据报
- 消息类型:DHCPDISCOVER
- Op字段:BOOTREQUEST
- 选项字段前4个字节:十进制 99、130、83、99
- 客户机->服务器:0,0,0,0(端口68)----->255,255,255,255(端口67)
- 服务器–>客户机:服务器IP(端口67)------->本地IP广播地址(端口68)
- 服务器响应
- 当客户机广播之后,对于接收到消息的服务器,无论是直接接受还是通过中继代理都会响应
- 消息类型:DHCPOFFER消息
- ”你的”IP地址:包含提供的IP地址
- 租用时间T:在不更新租约的情况下地址可被租用的时间上限
- 更新时间T1:客户机从获得租约到尝试要求服务器更新租约的时间
- 重新绑定时间T2:客户机尝试要求DHCP服务器更新其地址的时间
- 默认情况:T1=(T/2),T2=(7T/8)
- 收集响应,选择服务器
- 客户机会收到一个或多个服务器的DHCPOFFER
- 客户机确认自己想接收哪个DHCPOFFER
- 广播一个包括服务器标识符选项的DHCPREQUEST消息
- IP地址选项:由选中的DHCPOFFER消息提供的地址
- 可能会被多个服务器收到,但是,只有服务器标识符选项的标识的服务器可以同意将该地址进行绑定
- 其他服务器清除与该请求相关的状态
- 完成绑定
- 选中的服务器响应一个DHCPACK消息,通知客户机现在可以使用该地址。
- 如果服务器无法分配包含在DHCPREQUEST消息中的地址,该服务器将响应一个DHCPNAK消息
- 客户机响应
- 接收到DHCPNAK消息和其他相关配置信息时,可以探测网络,以确认地址未被使用
- 如果地址已经被使用,客户机就不使用,向服务器发送一个DHCPDECLING消息,通知该地址不能被使用
- 经过默认10秒之后,客户机可以重试
- 客户机如果在租约期到期之前放弃一个地址,它将发送一个DHCPRELEASE消息
- 更新租约
- 客户机通过一个DHCPREQUEST消息请i去当前正在使用的地址
- 情况一:服务器可能会拒绝该请求(DHCPNCK),也可能同意(DHCPACK)
- 情况二:客户机不需要更新,但需要其他配置信息,可使用DHCPINFORM代替DHCPREQUEST,以表明客户机使用现有地址,但希望获得额外的信息。服务器会返回一个DHCPACK消息,包括了额外的配置信息
DHCP状态机
DHCP协议在客户机和服务器运行一个状态机
状态用于指出协议下一个处理的消息类型
- 客户机开始处于
Init状态
:没有信息,并广播DHCPDISCOVER消息 选择状态
:客户机接收DHCPOFFER消息,直到决定使用哪个服务器和地址请求状态
:当她做出选择,发出DHCPREQUEST消息来响应时,进入请求状态- 接收ACK:
- 可能会收到来自不需要的地址的ACK。如果没有发现它需要的地址,发送一个DHCPDECLING消息,并
转化到Init状态
- 接收到一个自己需要的地址的DHCPACK消息,接受它,获得超时值T1和T2,并
进入绑定状态
,这是就能使用这个地址直至过期
- 更新状态:当地一个计时器T1到期进入更新状态,并尝试重新建立租约。如果接收到一个新的DHCPACK这个过程成功。不成功—T2到期,导致客户机尝试从任意服务器重新获得一个地址。
- 租用期到期:客户机放弃所租用的地址,如果没有可选的地址或可用的网络连接,这时他将断开网路链接。
DHCPv6
ipv6地址生命周期?
DHCPv6消息格式
- DHCPv6消息被封装为UDP/IPv6数据报,它使用客户端端口546,服务器端口547
- 消息发送到终极代理或服务器,它使用一台主机的链路范围的源地址
基本格式(客户机/服务器消息格式)
消息类型包含了典型的DHCP消息
扩展格式(中继器代理)
用于DHCPv6中继代理和DHCPv6服务器
- 消息类型包含了RELAY-FORW(中继代理转发)和RELAY-REPL(目的地是中继代理的消息)
- 链路地址:给出了全局IPv6地址,服务器用它标识客户机所在链路
- 对等放地址:包含中继代理地址或客户机地址(要中继的消息来自客户机)
- 选项字段:包含了中继消息选项(包含中继转发的完整消息);其他选项也可包含在内
DHCPv6和DHCPv4区别
- DHCPv6使用ipv6组播方式:客户机将请求发送到所有的中继代理和服务器的组播地址(ff02::1:2)源地址在链路本地范围。没有保留BOOTP消息格式
身份关联(IA)
- IA 是HDCP客户机和服务器之间的一个标识,用于指向一个地址
- IA标识符(IAID): 每个 IA包括一个IAID ,客户机选择的IAID唯一标识每个IA,并将这个值与服务器共享
- 每个 IA可以仅与一个接口相关联
- 每个向DHCPv6分配地址的客户机接口至少需要一个 IA
- IA的配置信息(一个或者多个地址,以及相关的租约信息)
- 地址的首选生命周期和有效生命周期
- 请求的地址类型:常规地址。临时地址。
同时分配
临时地址 | 常规地址 |
---|---|
1.有随机数的一部分派生而来 | |
2.用于协助改善IPv6主机地址跟踪隐私问题 |
- 服务器响应一个请求时,它为客户机的IA分配一个或多个地址,分配时基于服务器管理员确定的一组
地址分配策略
- 地址分配策略:依赖于请求所到达的链路、客户机的标准信息,以及DHCP选项中由客户机提供的其他信息。
8 临时地址和非临时地址的区别:临时地址没有TI和T2时间
DHCP唯一标识符(DUID)
每台主机和路由器都要有配置信息
提供和获取这些配置的方法:3种
- 一个系统要在Internet上运行并提供常用服务的“基本要素”:ip地址,子网掩码,DNS服务器,路由器的IP地址
- 服务器用它标识所选地址对应的客户机和配置信息
- 客户机用它标识感兴趣的服务器
- 长度可变
- 全球唯一
- DUID类型:(不止这三种)
- DUID-LLT:基于链路层地址和时间
- DUID-EN: 基于企业编号和供应商分配
- DUID-LL: 仅基于链路层地址
- 标准格式:
- 开始于2字节的用于指出是哪种DUID的标识符
- DUID-LLT 中,紧跟着是一个16位的硬件类型【RFC0826】,是推荐的格式,之后是一个32位的时间戳,其中秒数开始于2000年1月1日午夜,将在2136年归零;最后是可变长度链路层地址
- DUID-LL 中,紧跟着是一个16位的硬件类型【RFC0826】
- DUID-EN 中则是一个32位的专用企业编号
协议操作
一台在客户机是否启用DHCP,取决于一台主机接收到的ICMPv6路由器通告消息。
ICMPv6路由器通告消息重要字段
M位
可管理地址配置标志:表示IPv6地址可使用DHCPv6获得
O位
其他配置标志:表示ipv6地址之外的配置可以通过DHCPv6获得
M和O位的组合
- 都关闭:不使用DHCPv6,使用无状态地址自动分配
- M关闭,O启用:客户机使用无状态DHCPv6,并使用无状态地址自动分配
操作过程
1:solicit 对应dhcpv4 的discover报文
2:advertise 对应dhcpv4 的offer报文
3:request 对应dhcpv4的request报文
4:reply 对应dhcpv4的ack报文
- 客户机先确定使用的链路本地地址
- 执行ICMP路由发现操作:确定所在网络中是否存在一台路由器
- 路由器通告:
- 客户机组播DHCPSOLICIT:以便发现DHCPv6服务器
DHCPv6
DHCPv6前缀委托(DHCPV6-PD和6rd)?
DHCPv6可以配置主机也可以配置路由器。
配置路由器可以通过向另一台路由器委托一个地址空间范围来实现。这个地址范围可以描述为一个ipv6地址前缀;这个前缀在【RFC3633】定义的DHCP前缀选项中。
IA_PD
- 前缀委托定义的新格式的IA。
- 每个IA_PD由一个IAID和相关的配置信息构成。
- DHCPv6-PD对固定路由器和移动路由器做前缀委托
6rd(特殊格式的PD)
- 用来支持服务提供商快速部署IPv6。
- IPv6 6rd前缀:保存在OPTION_6RD选项中,用于根据客户已分配的IPv4地址为客户网站分配IPv6地址
- 如何分配IPv6地址:通过算法,它将服务提供商提供的6rd前缀作为前n位(推荐小于32)。客户分配的单播地址IPv4地址作为后面的32(或更少位)
- OPTION_6RD选项包括的值:
- ipv4掩码长度
- 6rd前缀长度
- 6rd前缀和6rd中继地址列表(提供6rd中继的ipv4地址)
使用DHCP中继
- 简单网络中,一个DHCP服务器可供一个局域网使用
- 复杂网络中,可以通过一个或更多DHCP中继代理来中继DHCP流量。
- 中继代理用于将DHCP操作扩展到跨越多个网段。
- 使用中继的时机
- 在一般情况下,中继不会参与客户机和服务器之间的所有DHCP流量交换。
- 相反,它仅中继那些 广播消息(或IPv6中的组播)。这种消息通常在客户机首次获得自已的地址时交换。
- 当一台客户机获得一个IP地址,并且服务器的IP地址使用服务器标识选项时,它可与服务器进行单播通信而不经过中继。
- 注意,中继代理在传统上是第3层设备,并且通常结合了路由功能。
中继代理信息选项(针对DHCPv4,RAIO)
中继代理的最初目的:将一个消息从一个子网中继到另一个,而不需要经过一台路由器
RAIO:在很多情况下,我们看到DHCPv4信息选项中的每个子选项都有对应的IPv6选项。
RAIO的DHCP认证子选项:它提供了一种确保中继和服务器之间消息交换完整性的方
法。这
中继代理远程ID子选项和IPv6远程ID选项
背景:中继的共同需求是通过超出客户机自身提供的信息之外的信息来标识发送DHCP请求的
客户机。
- 远程ID子选项:它提供了二种标识发送请求的DHCP客户机的方法
- CPv6中继代理远程ID选项:提供了相同的功能,它还包括一个额外的字段(企业编号),以表明与供应商相关的识别信息。这种远程ID信息格式后来以一种基于企业编号的特定供应商方式定义。一种常用的方法是将DUID用于远程ID
服务器标识符覆盖?
背景:中继可能希望干预DHCP客户机和服务器之间的操作
场景:在通常情况下,一个中继会转发SOLICIT消息,并在消息从客户机传递到服务器的过程中,可能为这些消息附加某些选项。中继在这种情况下是必要的,因为客户机可能还没有一个可接受的IP地址,并且仅用广播或组播方式将消息发送到本地子网。当一台客户机接收并选择自已的地址之后,它可使用服务器标识符选项中携带的服务器标识直接与DHCP服务器通信。实际上,这将削弱中继在客户机和服务器之间后续事务中的作用。.
租约查询和大批量租约查询
- 背景:在某些环境下,允许第三方系统(如中继或接人集中器)学习一个特定DHCP客户机的地址绑定是有用的。
- 来提供。在DHCPv6中,它也可为委托前缀提供租约信息。
- 这些信息可能由中继保存,但也可能在中继失败时丢弃oDHCPLEASEQUERY消息允许一个代理根据需要重新获得这种信息,它通常发生在一个中继流量已失去绑定的情况下。
- HCPv4, DHCPLEASEQUERY消息支持4种查询: IPv4地址、 MAC地址、客户机标识符和远程ID。
- 对于DHCPv6,它支持两种查询: IPv6地址和客户机标识符(DUID)。
- DHCPv4服务器可能用以下几种消息响应租约查询:
- DHCPLEASEUNASSIGNED:指出该查询值的响应服务器是授权的,但目前没有分配相应租约
- DHCPLEASEACTIVE:表示一个租约是有效的,并提供了租约参数(包括Tl和T2)。这里没有对此信息用途的特定建议,无论出于何种目的,都希望提供给请求者。 DHCPv6服务器使用一个LEASEQUERYLREPLY消息来响应,其中包含一个客户机数据选项。这个选项依次包括以下选项:客户机ID、 IPv6地址、 IPv6前缀和 客户机的最后事务时间。
- DHCPLEASEUNKNOWN:服务器最后一次询问客户机的时间(以秒为单位)。LEASEQUERYLREPLY消息也可包含以下两个选项:中继数据和客户机链路。第一个选项包括中继最后一次发送的相关查询的数据,第二个选项指出特定客户机拥有一个或多个地址绑定的链路。再次指出,这个信息可用于请求者希望的任何目的。
大批量租约查询(BL)
- 租约查询的扩展
- 同时查询多个绑定关系,支持更大范围的查询类型
- 使用UDP/IP
- 不是传统DHCP的一部分
- 特殊用途场景:DHCP用于获取一个前缀委托时
第二层中继代理
- 第二层设备:
- 第二层设备更靠近端系统,他们会 中继和处理DHCP请求
- 背景:第二层设备不能做为传统的中继代理的问题
解决:对IPv4和IPv6规定了第2层“轻量级”DHCP中继代理(LDRA)如何工作
- 当针对中继行为时,接口被标记为面向客户或面向网络,以及可信或不可信。
- 面向网络的接口在拓扑结构上更接近DHCP服务器
- 可信的接口是那些假设到达的分组不存在欺骗的接口
ipv4的LDRA
问题:题是如何处理DHCP的giaddr字段,以及在LDRA本身没有IP层信息时插人一个RAIO
推荐的方法是
- LDRA在客户机接收的DHCP请求中插入RAIO,但不填写giaddr字段
- DHCP消息以广播方式发送给一个或多个DHCP服务器,以及其他处于接收状态的LDRA。 这种消息一直被洪泛(即在所有接口上发送,除了获得该消息的接口),直到被一个不可信的接口接收。当LDRA接收到一个包含RAIO的这种消息,它不会添加其他的同类选项,但会继续执行洪泛。通过广播发送的响应(例如DHCPOFFER消息)可能被LDRA拦截,这时需要剥离RAIO并使用其中的信息,以便将响应发送给发出请求的客户机。很多LDRA也拦截单播的DHCP流量。在这些情况下,创建或剥离RAIO也是必要的。
- 注意,兼容的DHCP服务器必须支持处理和返回这样的DHCP消息:无论是用单播发送还是广播发送,其包含的RAIO中没有有效的giaddr字段
ipv6的LDRA
- IPv6的LDRA通过创建RELAYLFORW和RELAYLREPL消息处理DHCPv6流量
- 面向客户的接口将会丢弃接收到的ADVERTISE、 REPLY、 RECONFIGURE和RELAYLREPL消息
- 不可信的面向客户的接口也会出于安全原因丢弃接收到的RELAYLFORW消息
- RELAYLFORW消息包含标识面向客户接口的选项(即链路地址字段、对等方地址字段和接口ID选项)。链路地址字段设置为0,对等方地址字段设置为客户机IP地址,接口ID选项设置为LDRA中配置的值。
- 当接收到一个链路地址字段为0的RELAYLREPL消息时,LDRA解封所包含的信息,并将其发送到由接口ID选项(由服务器提供)指定的客户机接口。
- 面向客户的接口修改接收的RELAYLFORW消息的跳步数。面向网络的接口将会丢弃接收的除RELAYLREPL之外的消息
DHCP认证
DHCP并没有提供安全保障,因此可能建立一些未授权的DHCP客户机或服务器,无论是有意的还是无意的,这可能严重破坏一个网络的其他功能。
DHCP选项,即认证选项
目的:
确定DHCP认证选项的目的是确定DHCP
配置方式:
- 代码字段设置为90,长度字段给出选项中的字节数(不包括代码或长度字段)。如果协议和算法字段值为0,认证信息字段保存一个简单的共享配置令牌。只要客户机和服务器的配置令牌匹配,相应的消息可以接收。(这种流量可能被攻击者截获,因此这种方法并不很安全,但是,它可能有助于抵御偶然的DHCP问题。)
- 延期认证
- 具体看协议和算法字段是否设置为1 :客户机的DHCPDISCOVER或DHCPINFORM消息中包含一个认证选项,并且服务器在DHCPOFFER和DHCPACK消息中包含响应的认证信息
-
- 这个认证信息中包括一个消息认证码(MAC ;见第18章),它提供对发送方的认证和消息内容完整性的检验。假设服务器和客户机有一个共享的密钥, MAC可确保客户机被服务器信任,反之亦然。它也用于确保客户机和服务器之间交换的DHCP消息没有被修改,或是由早期DHCP消息重放而来
- 重放检测方法(RDM)由RDM字段值来确定。如果RDM设置为0,重放检测字段包含一个单向递增的值(例如时间戳)。检测接收的消息以确保该值总是增加。如果这个值没有增加,很可能是对一个早期DHCP消息的重放(捕获、存储并在此后重新发送)。我们可以想象,在数据包重新发送的情况下,重放检测字段中的值不会增加。但是,在一个局域网(DHCP普遍用于其中)中也可能无法说明问题,这是因为DHCP客户机和服务器之间通常只经过一跳路由
DHCP认证没有广泛使用(至少)有两个原因
- 第一,这种方法需要在DHCP服务器和每个需要认证的客户机之间分发共享密钥。
- 第二,认证选项的定义出现在DHCP已广泛使用之后。尽管如此, [RFC4030]建立在这个规范之上,以帮助DHCP消息通过中继代理安全转发
重新配置扩展
- 在普通操作中, DHCP客户机启动对地址绑定的更新。
- 重新配置扩展:
扩展允许服务器引发一个客户机改变更新状态,并通过别的普通操作(即DHCPREQUEST)尝试更新租约。一台不希望更新租约的服务器可能响应一个DHCPNAK,导致客户机重新启动为INIT状态。这台客户机稍后使用一个DHCPDISCOVER消息重新开始。 - 目的:是当前网络中出现一些明显的状态改变时,使客户端能重新建立一个地址或丢弃自己的地址
- 该扩展没有流行起来
快速确认
- 功能:允许一台DHCP服务器通过一个DHCPACK来响应DHCPDISCOVER消息,从而有效跳过DHCPREQUEST消息,并最终使用两消息交换来代替四消息交换。
- 设计目的:快速配置可能频繁改变其网络接人点的主机(例如移动主机)
- 当仅有一台可用的DHCP服务器并且地址充足时,我们可以不关注这个选项。
- 使用:
- 客户机可在DHCPDISCOVER消息中包含该选项,但在任何其他消息中不能包含该选项。
- 服务器仅在DHCPACK.消息中使用该选项
- 当一台服务器使用该选项来响应时,接收消息的客户机知道该返回地址可立即使用。如果后来确定该地址已用于另一个系统(例如通过ARP),客户机发送一个DHCPDECLINE消息,并放弃该地址。客户机也可能通过一个DHCPRELEASE消息自愿放弃接收到的地址
位置信息(LCI和LoST)
- GeoConf(123)和GeoLoc(144)选项:提供地理空间位置配置信息(LCI)。包括经纬度,高度坐标每个信息的分辨率指标。
- GEOCONF_CIVIC(99):市政地址位置
- 启用HTTP的位置投递(HELD)协议:用于提供位置信息,替在DHCP消息中直接编码LCI,而是采用DHCP选项OPTION_V4_ACCESS_DOMAIN ( 213 )和OPTION_V6_ACCESS_DOMAIN ( 57 )分别为IPv4和IPv6提供一台HELD服务器的FQDN
- 相关的位置服务:当一台主机知道自已的位置时,它可能需要使用该位置的相关服务(例如位置最近的医 院)。 IETF的位置到服务转换(LoST)框架[RFC5222]通过一个使用位置相关URI访问的应用层协议来实现上述功能oDHCP选项OPTION_V4_LOST( 137 )和OPTION_V6_LOST( 51 )为一个FQDN提供可变长度的编码, FQDN分别为DHCPv4和DHCPv6指定一台LoST服务器的名称。这个编码与DNS的域名编码采用相同格式
移动和切换信息(Mos和ANDSF)
- 服务对象:蜂窝配置和不同无线网络之切换
- 有两套相关的DHCP选项:
- IEEE802.21移动服务Mos发现
- 接入网发现和选择功能(ANDSF)
Mos
- 为移动节点获得地址或域名提供了一种手段,无论提供这些服务的服务器使用DHCPv4还是DHCPv60对于IPv4
- 提供了3种类型的服务 :这些服务提供了有关可用网络、控制链路参数功能和链路状态变化通知的信息
- 信息服务
- 命令服务
- 事件服务
- OPTION-1Pv4_Address-MoS选项(139)包含一个子选项的向量,其中包含提供每种服务的服务器的IP地址
- OPTION-IPv4_FQDN-MoS选项( 140 )的一个子选项为每种服务的服务器提供了一个FQDN向量
- ANDSF规范
- 基于3GPP
- ANDSF服务器由蜂窝基础设施运营商来配置,并可能保存多种传输网络(例如同时使用3G和Wi-Fi)的可用性和访问策略等信息
- ANDSF IPv4地址选项( 142)包含一个ANDSF服务器的IPv4地址向量。这些地址按优先顺序(第一个是最合适的)提供
- ANDSF IPv6地址选项( 143)包含一个ANDSF服务器的IPv6地址向量
- 要使用DHCPv4请求ANDSF信息,移动节点可在参数请求列表中包括ANDSF IPv4地址选项。
- 要使用DHCPv6请求ANDSF信息,客户机可在选项请求选项(ORO)中包含ANDSF IPv6地址选项(见[RFC3315]的22.7节)
DHCP嗅探
DHCP “嗅探”是某些交换机厂商在其产品中提供的一种能力,可用于检查DHCP消息内容,以确保只有访问控制列表中列出的地址才可交换DHCP流量。这样有助于防止两个潜在的问题。首先,将一个“欺骗性” DHCP服务器的危害限制在一定范围内,这是因为其他主机无法接收到它提供的DHCP地址。另外,这项投术可限制一组特定MAC地址的分配。虽然该技术提供了一些保护,但是通过操作系统提供的命令,在一个系统中很容易改变MAC地址,因此这种投术只能提供有限的保护。
无状态地址自动配置(SLAAC)?
大多数路由器通过手动配置地址,主机既可手动配置地址,也可使用一种如DHCP的分配协议或某种算法来自动配置地址。 IPv4和IPv6都有用于链路本地地址自动配置的机制,一台主机基本不需要协助就可以决定自已的地址。这就是所谓的无状态地址自动配置(SLAAC)
- 这里存在两种形式的自动配置,它们取决于需要生成什么类型的地址
- 对于只用于一条链路的地址(链路本地地址),一台主机只需找到一些在链路上未使用的合适地址。
- 对于要用于全球性连接的地址,这类地址的某些部分通常必须被管理
IPv4链路本地地址的动态配置
在一台主机没有任何手工配置的地址,并且所在网络没有DHCP服务器的情况下,基于IP的通信是不可能发生的,除非主机使用某种方式生成IP地址。
- 链路本地地址的动态配置或自动专用IP寻址(APIP):
- 主机通过该机制可自动从链路本地范围169.254.1.1至169.254.254.254使用16位子网掩码255.255.0.0生成自已的IPv4
- 从本质上来说,就是一台主机从一个范围中随机选择一个地址,并检查该地址是否已在本子网中被其他系统使用。这种检查通过IPv4 ACD来实现
链路本地地址的IPv6 SLAAC
- 目标:允许节点自动(和自主)分配链路本地IPv6地址
- 包括3个主要步骤:
- 获得一个链路本地地址
- 使用无状态自动配置获取全球地址
- 检测链路本地地址是否已在链路中使用
无状态自动配置可用于没有路由器的环境,在这种情况下只分配链路本地地址。
当路由器存在时,由一个路由器通告的前缀和本地产生的信息组合成一个全球地址
- SLAAC也可结合DHCPv6 (或手动分配地址)使用,以允许一台主机获得除自已地址外的其他信息(称为“无状态” DHCPv6)。当网络采用有状态或无状态DHCPv6配置时,执行SLAAC的主机可用于同一网络中。在通常情况下,有状态DHCPv6用于需要为主机更精确分配地址时,但无状态DHCPv6和SLAAC结合是最常见的部署选择。
- 临时(或乐观)链路本地地址:
它们只用于具有组播能力的网络,并在建立时分配了极大的首选和有效生命周期。为了形成数字化的地址,在熟知的链路本地前缀氏80::0 (适当长度)之后附加了一个唯一的编号。这是通过将地址中最右边的Ⅳ位设为Ⅳ位数字,最左边的10位设为10位链路本地前缀1111111010,并且其余位设为0来实现的。生成的地址设置为临时(或乐观)状态,并检查该地址是否重复
IPv6重复地址检测(DAD)
- 使用ICMPv6邻居请求和邻居通告消息(见第8章),以确定一个特定(临时或乐观) IPv6地址是否已在连接链路上使用
- 在为一个接日分配IPv6地址时使用,无论手动分配还是自动配置或DHCPv6分配。如果发现地址重复,将不使用该临时地址。如果DAD成功,临时地址转换为优先状态,并可不受限制地使用
DAD按以下步骤执行:
- 一个节点首先加人临时地址的所有节点组播地址和请求节点组播地址。为了检查使用的地址是否重复,一个节点发送一个或多个ICMPv6邻居请求消息。这些消息的源和目的IPv6地址分别是未指定地址和被检查目的地址的请求节点地址。目的地址字段设置为被检查的地址(临时地址)。如果在响应中接收到一个邻居通告消息,说明DAD失败,并放弃被检查的地址。
- 当一个地址未成功完成DAD时,任何针对它的邻居请求被视为一种特殊情况,说明其他主机有使用相同地址的意图。如果接收到这些消息,丢弃它们,放弃当前的临时地址,并且DAD失败
- 如果DAD失败,通过接收一个来自其他节点的邻居请求或一个到目的地址的邻居通告,说明这个地址未分配给一个接日,并且不会成为一个首选地址。如果这个地址是一个基于由本地MAC地址导出的接口标识符配置的链路本地地址,不可能通过相同过程最终生成一个不冲突的地址,这时应放弃使用该地址并要求管理员输人地址。如果这个地址是基于不同形式的接口标识符, IPv6操作可能尝试使用基于别的临时地址的其他地址
全球地址的IPv6 SLAAc
在一个节点已获得一个链路本地地址后,它可能需要一个或多个全球地址。全球地址的形成过程类似于链路本地SLAAC,但需要使用一个由路由器提供的前缀。这种前缀携带在一个路由器通告的前缀选项中,并且由一个标志来表示这个前缀是否用于与SLAAC共同形成全球地址。如果是,这个前缀与接口标识符(如果不采用隐私扩展方式,它与形成链路本地地址相似)组合形成一个全球地址。这种地址的首选和有效生命周期也由前缀选项表示的信息来确定
无状态DHCP
HCPv6可用于一种“无状态”模式,在这种模式下, DHCPv6服务器不指定地址(或保留任何一台客户机的状态),但提供其他配置信息。 并将SLAAC和DHCPv6相结合
在一个无状态DHCPv6部署方案中,假设节点采用DHCPv6之外的方法获得自已的地址
无状态DHCPv6客户机使用DHCPv6的INFORMATION-REQUEST消息请求信息,该信息由服务器发送的REPLY消息提供。INFORMATION-REQUEST消息包含一个选项请求选项,给出客户机想了解的更多信息的选项。 INFORMATION-REQUEST可能包含一个客户机标识符选项,它允许为特定的客户机定制答案
地址自动配置的用途
DHcP和DNs交互
- 当一台DHCP客户机获得一个IP地址时,它接收的配置信息的重要部分是一台DNS服务器的IP地址
- 由于本地专用网络的DNS映射通常采用烦琐的手工管理,因此,将指定DHCP地址与相应地址的DNS映射更新方法结合起来将会带来方便。这可通过组合DHCP/DNS服务器或动态DNS 来实现。
- 组合DNS/DHCP服务器(如Linux dnsmasq包)是一个服务器程序,它可配置为提供IP地址租约以及其他信息,也可读取一个DHCPREQUEST中的客户机标识符或域名,并在使用DHCPACK进行响应之前,通过“名称到地址”的绑定更新内部DNS数据库。这样,由DHCP客户机或与相同DNS服务器交互的其他系统发起的任何后续DNS请求,能够在客户机名称和新分配的IP地址之间转换
以太网上的PPP
- 对于大多数局域网和一些广域网连接, DHCP提供了最常用的客户机系统配置方法
- 以太网上的PPP(PPPoE):对于广域网连接(例如DSL),常用另一种基于PPP的方法代替它。这种方法涉及在以太网中携带PPP,因此称为以太网上的PPP(PPPoE)
- pppoE用于广域网连接设备(例如DSL调制解调器)作为一个交换机或网桥而不是使用路由器的情况下。ppp作为某些ISP建立连接的首选,这是因为它可提供比其他配置选项(例如DHCP)更细致的配置控制和审计日志
- 对物理电话线的同时使用是通过频分复用来实现的, DSL信息在比POTS更高的频率上传输。当连接到传统的电话听筒时,需要用一个过滤器来避免更高的DSL频率的干扰。DSL调制解调器为PPP端日提供桥接服务,该端口位于IsP的接入集中器(AC)中,连接客户的调制解调器线和ISP的网络设备。调制解调器和AC也支持PPPoE协议,在这个例子中,该用户选择将一台家用PC连接到DSL调制解调器,并使用一个点到点的以太网络(即仅使用一根电缆的以太网)。
在DSL调制解调器与ISP成功建立一条低层链路后, PC可以开始进行PPPoE交换,它被定义在信息文档[RFC2516]中,如图6-29所示
这个协议包括一个发现阶段和一个PPP会话阶段。
发现阶段涉及交换几个PPPoE主动发现(PAD)消息: PADI (初始化)、 PADO (提供)、 PADR (请求)和PADS (会话确认)。在这个交换完成后,由以太网封装的一次PPP会话开始,并最终由任何一方发送PADT (终止)消息来终止。如果低层连接中断,这个会话也会终止。 pppoE消息使用图6-30所示的格式,并封装在以太网的有效载荷区。
PPPoE版本和类型字段的长度都是4位,并包含当前PPPoE版本的值0x1代码字段中包含PPPoE消息类型的提示,如图6-30的右下部分所示。会话ID字段包含值0x0000表示PADI、 PADO和PADR消息,并在后续消息中包含一个唯一的16位数字。在PPP会话阶段会保持相同的值. 【PAD消息包含一个或者多个标签,它们按TLV方式排列为一个16位的TAG_TYPE字段.随后是一个16位的TAG_LENGTH竿段和一个数据可变的标签值 表6-2给出了TAG_TYPE宇段的值和含义】