浅读DHCP中继代理
DHCP中继代理内容一直是我们关注的重点内容,那么通过这方面的了解,我们也能够进一步深化DHCP的学习。这里我们就针对这方面的知识来进行一下说明。中继代理是在不同子网上的客户端和服务器之间中转 DHCP/BOOTP 消息的小程序。根据征求意见文档 (RFC),一种描述协议设计和相关操作的标准文档,DHCP/BOOTP 中继代理是 DHCP 和 BOOTP 标准和功能的一部分。
DHCP/BOOTP 路由器支持
在 TCP/IP 网络中,路由器用于连接称作“子网”的不同物理网段上使用的硬件和软件,并在每个子网之间转发 IP 数据包。要在多个子网上支持和使用 DHCP 服务,连接每个子网的路由器应符合 RFC 1542 中所描述的BOOTP/DHCP中继代理能力。
要符合 RFC 1542 并提供中继代理支持,每个路由器必须能识别 BOOTP 和 DHCP 协议消息并相应处理(中转)这些消息。由于路由器将 DHCP 消息解释为 BOOTP 消息(例如通过相同的 UDP 端口编号发送并包含共享消息结构的 UDP 消息),具有 BOOTP 中继代理能力的路由器中转网络上发送的 DHCP 数据包和任何 BOOTP 数据包。
如果路由器不能作为 DHCP/BOOTP 中继代理运行,则每个子网都必须有在该子网上作为中继代理运行的 DHCP 服务器或另一台计算机。在不切实际地或不可能地配置路由器以支持 DHCP/BOOTP 中继的情况下,您可以配置运行 Windows NT Server 4.0 或更高版本的计算机通过安装 DHCP 中继代理服务来充当中继代理。
大多数情况下,路由器支持 DHCP/BOOTP 中继。如果您的路由器不支持,则应与路由器制造商或供应商联系以查明是否有软件或固件升级提供对该功能的支持。
DHCP中继代理的工作原理
中继代理将它连接的其中一个物理接口(如网卡)上广播的 DHCP/BOOTP 消息中转到其他物理接口连至的其他远程子网。下例显示了子网 2 上的客户机 C 如何从子网 1 上的 DHCP 服务器 1 获得 DHCP 地址租约。
1.DHCP 客户机 C 在子网 2 上使用众所周知的 UDP 服务器端口 67 以用户数据报协议 (UDP) 数据报形式广播 DHCP/BOOTP 探索消息 (DHCPDISCOVER),服务器端口号 67 是为 BOOTP 和 DHCP 服务器通信保留和共享的。
2.中继代理,在 DHCP/BOOTP 允许中继的路由器的情况下,检测 DHCP/BOOTP 消息头中的网关 IP 地址字段。如果该字段有 0.0.0.0 的 IP 地址,则此代理程序填入中继代理或路由器的 IP 地址并将此消息转发到 DHCP 服务器所在的远程子网 1。
3.远程子网上 1 的 DHCP 服务器 1 接收到此消息时,会检查 DHCP 服务器用于提供 IP 地址租约的 DHCP 作用域的网关 IP 地址字段。
4.如果 DHCP 服务器 1 有多个 DHCP 作用域,则网关 IP 地址字段 (GIADDR) 中的地址标识将提供 IP 地址租约的 DHCP 作用域。
例如,如果网关 IP 地址 (GIADDR) 字段有 10.0.0.2 的 IP 地址,则 DHCP 服务器检查其地址作用域范围的可用地址作用域集合,地址作用域范围与包含作为主机的网关地址的 A 类 IP 网络匹配。在这种情况下,DHCP 服务器将对 10.0.0.1 和 10.0.0.254 之间的地址作用域进行检查。如果存在匹配的作用域,则 DHCP 服务器从匹配的作用域中选择可用地址以便在对客户端的 IP 地址租约提供响应时使用。
5.当 DHCP 服务器 1 接收到 DHCPDISCOVER 消息时,它处理并直接将 IP 地址租约 (DHCPOFFER) 发送给在网关 IP 地址 (GIADDR) 字段中标识的中继代理。
6.路由器然后将地址租约 (DHCPOFFER) 转发给 DHCP 客户端。