RFC3442:The Classless Static Route Option for Dynamic Host Configuration Protocol (DHCP) version 4,December 2002
本备忘录的状态
本文档为 Internet 社区指定了 Internet 标准跟踪协议,并请求讨论和改进建议。本协议的标准化状态和现状请参考当前版本的《互联网官方协议标准》(STD 1)。本备忘录的分发不受限制。
版权声明
版权所有 (C) 互联网协会 (2002)版权所有。
梗概
本文档定义了一个新的动态主机配置协议(Dynamic Host Configuration Protocol,DHCP) 选项,该选项从 DHCP 服务器传递到 DHCP 客户端以配置客户端中的静态路由列表。这些路由中的网络目的地是无类别的——每个路由表条目都包含一个子网掩码。
介绍
此选项废弃了 RFC 2132 [4] 中定义的静态路由选项(选项 33)。
IP 协议 [1] 使用路由器将数据包从连接到一个 IP 子网的主机传输到连接到不同 IP 子网的主机。当 IP 主机(源主机)希望将数据包传输到另一台 IP 主机(目的地)时,它会查阅其路由表以确定应该用于将数据包转发到目标主机的路由器的 IP 地址。
IP 主机上的路由表可以通过多种方式维护 - 使用路由信息协议,例如 RIP [8]、ICMP 路由器发现 [6,9] 或使用 RFC 2132 [4] 中定义的 DHCP 路由器选项.
在已经提供 DHCP 服务的网络中,使用 DHCP 更新 DHCP 客户端上的路由表有几个优点。它是有效的,因为它利用了无论如何都会发送的消息。这很方便 - DHCP 服务器配置已经被维护,因此维护路由信息,至少在相对稳定的网络上,几乎不需要额外的工作。如果 DHCP 服务已在使用中,则无需部署额外的基础设施。
RFC 2131 [3] 中定义的 DHCP 协议和 RFC 2132 [4] 中定义的选项仅提供安装默认路由或安装有类路由表的机制。有类路由是子网掩码隐含在子网号中的路由 - 有关有类路由的详细信息,请参见 STD 5, RFC 791 [1] 的第 3.2 节。
有类路由不再常用,因此 DHCP 静态路由选项不再有用。目前,无类路由 [7, 10] 是 Internet 上最常部署的路由形式。
在无类别路由中,IP 地址由网络号(RFC 950 [7] 中描述的网络号和子网号的组合)和主机号组成。
在有类 IP 中,网络号和主机号是使用位掩码从 IP 地址派生的,该位掩码的值由 IP 地址的前几位决定。在无类别 IP 中,网络号和主机号是使用单独的数量(子网掩码)从 IP 地址派生的。为了确定给定路由适用的网络,IP 主机必须知道该网络的网络号和子网掩码。
静态路由选项(选项 33)不为每个路由提供子网掩码 - 假设子网掩码隐含在每个路由条目中指定的任何网络号中。Classless Static Routes 选项确实为每个条目提供了一个子网掩码,因此子网掩码可以不同于使用 STD 5, RFC 791 [1] 和 STD 5, RFC 950 [7] 中指定的算法确定的内容。
定义
本文档中的关键词“必须/MUST”、“不得/MUST NOT”、“需要/REQUIRED”、“应该/SHALL”、“不应/SHALL NOT”、“应该/SHOULD”、“不应该/SHOULD NOT”、“推荐/RECOMMENDED”、“可以/MAY”和“可选/OPTIONAL”是为了解释为 BCP 14, RFC 2119 [2] 中所述。
本文档还使用以下术语:
“DHCP 客户端/ DHCP client”
DHCP 客户端或“客户端/client”是使用 DHCP 获取配置参数(例如网络地址)的 Internet 主机。
“DHCP 服务器/ DHCP server”
DHCP 服务器或“服务器/server”是将配置参数返回给 DHCP 客户端的 Internet 主机。
“链路/link”
任何一组网络连接点都将接收在任何一个连接点上发送的链路层广播。
该术语用于 DHCP 中,因为在某些情况下,可能在一条链路上配置了多个 IP 子网。DHCP 使用本地网络(全1)广播,它不是特定于子网的,因此将到达连接到链路的所有节点,而不管它们配置在哪个 IP 子网或子网上。
“链路”有时被称为广播域或物理网段。
无类路由选项格式
此选项的代码为 121,其最小长度为 5 个字节。该选项可以包含一个或多个静态路由,每个静态路由都包含一个目的地描述符和用于到达该目的地的路由器的 IP 地址。
在上面的示例中,指定了两条静态路由。
目标描述符使用紧凑编码描述特定目标的 IP 子网号和子网掩码。这种编码由一个描述子网掩码宽度的八位字节组成,后跟子网编号的所有重要八位字节。
子网掩码的宽度描述了掩码中一位的数量,例如,子网号为 10.0.127.0 和子网掩码为 255.255.255.0 的子网的子网掩码宽度为 24。
子网编号的重要部分只是子网编号的所有八位字节,其中子网掩码中的相应八位字节不为零。有效八位字节数是子网掩码的宽度除以八,向上取整,如下表所示:
下表包含有关如何对各种子网编号/掩码组合进行编码的一些示例:
本地子网路由
在某些情况下,一条链路上可能配置了多个 IP 子网。在这种情况下,IP 地址位于链路中一个 IP 子网中的主机可以直接与 IP 地址位于同一链路上不同 IP 子网中的主机通信。如果客户端在这样的链路上的 IP 子网上被分配了一个 IP 地址,对于除了客户端被分配的 IP 子网之外的链路中的每个 IP 子网,DHCP 服务器可以被配置为指定一个路由器 IP地址为 0.0.0.0。
例如,考虑在一条链路上配置了三个 IP 子网的情况:10.0.0/24、192.168.0/24、10.0.21/24。如果客户端分配的 IP 地址为 10.0.21.17,则服务器可以包含目的地为 10.0.0/24 的路由和路由器地址为 0.0.0.0 的路由,以及目的地为 192.168.0/24 的路由和路由器地址 0.0.0.0。
其底层 TCP/IP 堆栈不提供此功能的 DHCP 客户端必须忽略路由器 IP 地址为 0.0.0.0 的无类静态路由选项中的路由。请注意,此处描述的行为仅适用于无类静态路由选项,不适用于静态路由选项和路由器选项。
DHCP 客户端行为
如果它是从 DHCP 服务器接收的,不支持此选项的 DHCP 客户端必须忽略它。支持此选项的 DHCP 客户端必须安装选项中指定的路由,除非在本地子网路由部分中指定。如果同时提供静态路由选项和无类静态路由选项,则支持此选项的 DHCP 客户端不得安装静态路由选项(选项代码 33)中指定的路由。
支持此选项并发送 DHCP 参数请求列表选项的 DHCP 客户端必须请求此选项和 DHCP 参数请求列表中的路由器选项 [4]。
支持此选项并发送参数请求列表的 DHCP 客户端也可以请求静态路由选项,以便与不支持无类静态路由的旧服务器兼容。无类静态路由选项代码必须出现在路由器选项代码和静态路由选项代码(如果存在)之前的参数请求列表中。
如果 DHCP 服务器同时返回无类静态路由选项和路由器选项,DHCP 客户端必须忽略路由器选项。
类似地,如果 DHCP 服务器同时返回一个无类静态路由选项和一个静态路由选项,DHCP 客户端必须忽略静态路由选项。
在从每个目标描述符导出子网号和子网掩码后,DHCP 客户端必须将子网号中掩码中相应位为零的任何位清零。换句话说,路由表中安装的子网号是无类静态路由选项中给出的子网号和子网掩码的逻辑与。例如,如果服务器发送一个目的地址为 129.210.177.132(十六进制 81D4B184),子网掩码为 255.255.255.128(十六进制 FFFFFF80)的路由,那么客户端将安装一个目的地址为 129.210.177.132(十六进制 81D4B184)的路由。.
避免尺寸限制的要求
由于完整的路由表可能非常大,因此 DHCP 消息的标准 576 个八位字节最大大小可能太短而无法包含一些合法的无类静态路由选项。因此,如果 DHCP 客户端的 TCP/IP 堆栈能够接收更大的 IP 数据报,则实现无类静态路由选项的客户端应该发送最大 DHCP 消息大小 [4] 选项。在这种情况下,客户端应该将此选项的值至少设置为客户端正在配置的接口的 MTU。客户端可以将此选项的值设置得更高,直到它准备接受的最大 UDP 数据包的大小。(请注意,最大 DHCP 消息大小选项中指定的值是总的最大数据包大小,包括 IP 和 UDP 标头。)
请求此选项的 DHCP 客户端和发送此选项的 DHCP 服务器必须实现 DHCP 选项串联 [5]。在 RFC 3396 [5] 的术语中,Classless Static Route Option 是一个需要串联的选项。
DHCP 服务器管理员职责
许多客户端可能没有实现无类静态路由选项。因此,DHCP 服务器管理员应配置其 DHCP 服务器以发送路由器选项和无类静态路由选项,并应在路由器选项和无类静态路由选项中指定默认路由器。
当 DHCP 客户端请求 Classless Static Routes 选项并且还请求 Router 选项和 Static Routes 选项中的一个或两个,并且 DHCP 服务器正在向该客户端发送 Classless Static Routes 选项时,服务器不应该包括 Router 或 Static Routes选项。
安全注意事项
DHCP 协议中潜在的攻击风险在 DHCP 协议规范 [3] 的第 7 节和 DHCP 消息的身份验证 [11] 中讨论。
无类静态路由选项可用于通过为路由器提供不正确的 IP 地址来误导网络流量。这可以是拒绝服务攻击,其中给定的路由器 IP 地址根本无效,或者可用于通过提供潜在窥探者的 IP 地址来设置中间人攻击。这不是一个新问题 - RFC 2132 [4] 中定义的现有路由器和静态路由选项表现出相同的漏洞。
IANA 考虑事项
此 DHCP 选项已在 IANA 维护的 DHCP 选项代码列表中分配了选项代码 121。
规范参考
[1] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981. [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [3] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March 1997. [4] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor Extensions", RFC 2132, March 1997. [5] Lemon, T. and S. Cheshire, "Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396, November 2002.
参考资料
[6] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, September 1981. [7] Mogul, J. and J. Postel, "Internet Standard Subnetting Procedure", STD 5, RFC 950, August 1985. [8] Hedrick, C., "Routing Information Protocol", RFC 1058, June 1988. [9] Deering, S., "ICMP Router Discovery Messages", RFC 1256, September 1991. [10] Pummill, T. and B. Manning, "Variable Length Subnet Table For IPv4", RFC 1878, December 1995. [11] Droms, R. and W. Arbaugh, "Authentication for DHCP Messages", RFC 3118, June 2001.
知识产权声明
对于可能声称与本文档中描述的技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或者此类权利下的任何许可可能会或可能不会得到的程度,IETF 不采取任何立场。可用的;它也不代表它已作出任何努力来确定任何此类权利。可以在 BCP-11 中找到有关 IETF 与标准跟踪和标准相关文档中的权利有关的程序的信息。可以获得可用于出版的权利声明的副本和将提供的许可的任何保证,或者可以获得本规范的实施者或用户使用此类专有权利的一般许可或许可的尝试结果来自 IETF 秘书处。
IETF 邀请任何相关方提请其注意任何版权、专利或专利申请,或可能涵盖实践本标准可能需要的技术的其他专有权利。请将信息发送给 IETF 执行董事。
完整的版权声明
版权所有 (C) 互联网协会 (2002)版权所有。
本文件及其译文可能会被复制和提供给他人,并且可以全部或部分地准备、复制、出版和分发对其进行评论或以其他方式解释或协助其实施的衍生作品,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文档本身,例如通过删除版权声明或对 Internet 协会或其他 Internet 组织的引用,除非出于制定 Internet 标准的需要,在这种情况下,版权程序定义在必须遵循 Internet 标准流程,或按照要求将其翻译成英语以外的语言。
上述授予的有限权限是永久性的,不会被互联网协会或其继任者或受让人撤销。
本文档和其中包含的信息按“原样”提供,互联网协会和互联网工程工作队不提供所有明示或暗示的保证,包括但不限于任何保证,即使用此处的信息不会侵犯任何有关适销性或特定用途适用性的权利或任何默示保证。
致谢
RFC 编辑器功能的资金目前由互联网协会提供。