当终端设备和DHCP服务器不在同一广播域内的时候,中间设备就需要指定一个地址来将广播包转发出去,即需要设定helper_address来实现中继。

而事实上,在企业中一般只需要一个或者两个DHCP服务器提供冗余就已足够,完全没有必要在每一个广播域单独设置一台DHCP服务器,这样做既增加了成本,也更不利于管理。
要知道这个功能如何实现,我们先来了解一下DHCP服务器的简单运行原理:

DHCP服务器想要给终端设备分配IP信息,需要获取两个重要的信息,终端所在的网段(即掩码)、对应设备的MAC地址。DHCP依靠前者来判断应当给对应设备分配那个地址池中的地址,然后依靠后者来维护IP和MAC之间的映射好以此来保证不会出现IP地址冲突。

了解了DHCP的简单运行原理,我们再来说配置了ip helper-address命令之后的路由器工作过程:

DHCP客户端发送请求,由于没有ip地址,所以自己的源IP地址为0.0.0.0,而且也不知道目的DHCP服务器的地址,所以为广播255.255.255.255,即源IP为0.0.0.0;目的IP地址为255.255.255.255;源MAC地址为自己MAC地址;目的MAC地址为FF:FF:FF:FF:FF:FF
当路由器接收到该信息,则对其进行替换,用自己的接口地址(接收到数据报的接口,也就是终端所在网段网关)来取代源地址0.0.0.0,并且用ip help-address 命令中指定的地址来取代目的地址255.255.255.255,即源IP为(网关地址);目的IP地址为(ip helper-address指定地址);源MAC地址为终端MAC地址;目的MAC地址为(ip helper-address指定地址对应MAC地址)
如此,当DHCP服务器接收到路由器转发来的信息后,同样可以获得相应的信息来确定网段和MAC地址与IP地址的映射,故而可以让终端获得相应的信息。