在 Cisco 2621 路由器的接口上配置了辅助网络,并且已执行ip helper-address
命令,但该辅助网络的客户端无法提取 DHCP 地址。我们交换了主要网络和次要网络,一切都开始正常工作。把它换回来,和以前一样的问题。
谁能解释为什么会这样?有没有办法使 DHCP 请求的转发适用于接口辅助网络,或者它只能适用于主网络?
在 Cisco 2621 路由器的接口上配置了辅助网络,并且已执行ip helper-address
命令,但该辅助网络的客户端无法提取 DHCP 地址。我们交换了主要网络和次要网络,一切都开始正常工作。把它换回来,和以前一样的问题。
谁能解释为什么会这样?有没有办法使 DHCP 请求的转发适用于接口辅助网络,或者它只能适用于主网络?
Cisco 路由器将使用在接口上配置的主要子网来识别转发的 DHCP 请求。
唯一的其他选项是DHCP 智能中继功能,它允许路由器使用次要子网,但前提是主子网的多个 DHCP 提议都看不到。
你有两个选择。
选项一:配置 DHCP 智能中继(在 Dave 和 Mierdin 的回答中查看更多相关信息):
ip dhcp 智能中继
选项二:在您的 dhcpcd.conf 中设置共享网络语句(假设您正在运行基于 Linux 的 DHCP 服务器 - 如果您不是,请参阅下面的彼得的回答)
shared-network "testing" {
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers a.b.c.d;
pool {
}
}
}
只有接口的主地址作为 DHCP 数据包的网关 IP 地址 (giaddr) 字段在 DHCPDiscover 数据包中发送。
您可以考虑使用允许单独的 DHCP 中继代理(ip helper-address)的子接口。
我相当肯定,当路由器转发 DHCP 请求时,它只包含在接口上配置的主要网络。我不相信有任何方法可以让它使用辅助网络。
编辑:我做了一些谷歌搜索并确定了其他人已经指出的内容,有一个称为智能中继的功能可以使用辅助网络,但只能在主超时三遍之后。
了解和排除 Catalyst 交换机或企业网络中的 DHCP 故障的相关引述- Cisco Systems
如何使 DHCP 在辅助 IP 网段上工作
默认情况下,DHCP 有一个限制,即仅当从配置了主 IP 地址的接口接收到请求时才发送回复数据包。DHCP 流量使用广播地址。当路由器接口收到 DHCP 请求时,它会将其转发给 DHCP 服务器(当配置了 IP helper-address 时),并在接口上配置了主 IP 的源地址,让 DHCP 服务器知道它必须使用哪个 IP 池在 DHCP 回复数据包中使用(用于客户端)。
路由器无法知道 DHCP 广播请求是否来自接口上配置的辅助 IP 网络上的设备。作为一种解决方法,可以配置子接口配置(前提是连接到路由器的设备支持 dot1q 标记)将两个子网分开,以便它们都能正确获取对应的 IP 地址。
如果辅助地址是首选方式,则还有另一种解决方法,即启用全局配置命令 ip dhcp smart-relay 。这有一个限制,即如果在连续三个请求主地址池后没有来自 DHCP 服务器的响应,它仅使用辅助 IP 来中继 DHCP 请求。