计算机网络中的 DHCP 中继代理
先决条件 - 动态主机配置协议 (DHCP),DHCP 服务器如何为主机动态分配 IP 地址?
为了动态地为主机分配 IP 地址,DHCP 客户端在 DORA 进程中与 DHCP 服务器交换 DHCP 消息。
在 DORA 过程中,广播发现和请求消息,提供和确认消息是广播还是单播取决于广播标志的值,即如果广播标志的值为 1,则广播提供和确认消息如果为 0,则消息是单播的。但这仅在 DHCP 服务器存在于同一网络中时才有效,因为路由器不转发任何广播数据包。如果服务器位于不同的网络中怎么办?这就是 DHCP 中继代理的作用。
DHCP 中继代理 –
DHCP 中继代理是任何 TCP/IP 主机,当服务器位于不同的网络上时,它用于在 DHCP 服务器和客户端之间转发请求和回复。中继代理接收 DHCP 消息,然后生成新的 DHCP 消息以在另一个接口上发送出去。此外,DHCP 中继代理添加了一个 giaddr(数据包的网关地址)字段以及中继代理信息选项 82(如果启用)。当服务器回复被转发到主机时,选项字段被删除。
注 –发现和请求消息由 DHCP 中继代理单播。
例子 -
这是一个没有 IP 地址的 DHCP 客户端的拓扑。有一个 IP 地址为 192.168.2.2 的 DHCP 服务器,中间有一个路由器,因为 DHCP 中继代理在接口 fa0/0 上的 IP 地址为 192.168.1.1,在接口 fa0/1 上的 IP 地址为 192.168.2.1。
现在,首先,DHCP 客户端广播发现消息,以找出交换机接收到的 DHCP 服务器,因为它在同一个广播域中。交换机在网络中广播 DHCP 数据包,由 PC 和路由器(DHCP 中继代理)接收。 PC 和路由器接收到广播数据包,但由于 DHCP 服务器存在于不同的网络中,因此 PC 丢弃了该数据包,因此该数据包必须仅传送到默认网关。
启用了DHCP 中继代理功能的路由器,将源地址替换为自己的地址,将目的IP 地址替换为DHCP 服务器IP 地址,即DHCP 中继代理将数据包单播到DHCP 服务器。 DHCP 中继代理在数据包中添加 giaddr 字段并将其转发给 DHCP 服务器。 giaddr 字段被添加到数据包中,以便服务器知道它必须从哪个池中分配 IP 地址。
在我们的例子中,giaddr 字段将包含 192.168.1.1(路由器 [DHCP 中继代理] 接收发现消息的接口的 IP 地址)。
服务器向提供释放 IP 地址的路由器回复单播 DHCP 提议。
作为回报,路由器向已发送 DHCP 请求的网络广播 DHCP Offer 消息。广播消息由交换机接收,如上图所示。
交换机向主机广播 DHCP 提供消息。因此,报文被 DHCP 客户端接收
现在,DHCP 客户端为交换机接收到的服务器广播 DHCP 请求消息,显示 IP 地址的接受。交换机将 DHCP 请求消息广播到其他主机和路由器(DHCP 中继代理),如上图所示。
路由器将源IP地址替换为自己的IP地址,目的IP保持不变,即由DHCP中继代理单播
服务器向路由器(DHCP 中继代理)回复单播 DHCP 确认消息,如上图所示。
路由器依次将 DHCP 确认消息广播到它接收 IP 地址的 DHCP 请求的网络。广播消息由交换机接收,如上图所示。
当交换机通过其所有端口广播消息时,DHCP 客户端会收到广播 DHCP 确认消息。
配置 -
这是客户端、路由器、dhcp_server的基本配置。路由器一直在 fa0/0 上分配 IP 地址 192.168.1.1,在 fa0/1 上分配 IP 地址 192.168.2.1。
ROUTER(config)#int f0/0
ROUTER(config-if)#ip address 192.168.1.1 255.255.255.0
ROUTER(config-if)#no shutdown
ROUTER(config)#int f0/1
ROUTER(config-if)#ip address 192.168.2.1 255.255.255.0
ROUTER(config-if)#no shutdown
DHCP_SERVER 在接口 fa0/0 上分配了 IP 地址 192.168.2.2,DHCP 池以名称 POOL1 定义,网络 192.168.1.0 和子网掩码 255.255.255.0 分配给池 POOL1。
DHCP_SERVER(config)#int f0/0
DHCP_SERVER(config-if)#ip address 192.168.2.2 255.255.255.0
DHCP_SERVER(config-if)#no shutdown
DHCP_SERVER(config)#ip dhcp pool POOL1
DHCP_SERVER(dhcp-config)#network 192.168.1.0 255.255.255.0
DHCP_SERVER(dhcp-config)#default-router 192.168.1.1
DHCP_SERVER(dhcp-config)#exit
现在,IP helper-address 命令用于将路由器配置为 DHCP 中继代理,为 192.168.2.2 提供 DHCP_server 的地址。
ROUTER(config)#int f0/0
ROUTER(config-if)#ip helper-address 192.168.2.2
ROUTER(config-if)#exit