背景
我有一个Windows DHCP服务器(Server 2008 R2)分发几个范围的地址。 其中一个范围是针对一些Mitel IP电话。 手机configuration为使用dhcp选项125获取configuration信息。 当电话启动时,它不知道使用哪个vlan,所以它只是得到它所连接的任何端口的默认(无标记)vlan。 dhcp服务器给它一个包含选项125信息的响应,手机能够从这个响应中读出它应该使用的vlan。 电话然后释放其原始地址,并使用正确的vlan标签请求新的DHCP租约。 手机也通常有电脑连接到通过端口。 来自计算机的数据包不会被标记,因此PC将保留在端口的原始(未标记)vlan上。 这已经为我们工作了多年。
问题和症状
在过去几个星期的某个地方,事情发生了变化,我不知道是什么。 只要不重新启动,手机将继续工作,这意味着必须正确处理DHCP更新请求。 连接到某些交换机的电话甚至可以在重新启动后继续运行。 但是,连接到其他交换机的电话在重启时将无法完成该过程。 我们所有的手机都使用由UPS备份的PoE,因此任何重新启动都已经很长时间了。 这意味着我不知道问题何时出现。 我所知道的是一个电话昨天重新启动失败,今天在排除故障,我们重置该开关柜。 现在没有任何交换机上的电话正在工作(幸好它仍然是一个小数字)。 我也知道,一月底的时候,我们把一个受伤的用户的电话搬到了一楼的临时工作区。
当我看到一个电话启动,我可以看到它成功地获得第一个地址。 然后,它成功读取选项125信息,设置正确的vlan标记,并释放原始IP租约。 它甚至能够从服务器接收和接受正确vlan上的报价 。 但是,这是停止的地方。 手机在屏幕上显示“ DHCP: Offer 2 ACC ”信息,但Windows DHCP服务器没有logging租约,手机也不能继续工作。 我只能猜测,DHCP REQUEST数据包永远不会到达Windows服务器,所以手机正在等待来自Windows的最终确认,可以继续。
解决方法
我终于能够再次获得电话工作。 要做到这一点,我必须先断开电脑。 然后,我把电话的交换机端口设置为在电话vlan上不加标签,在PC vlan上没有成员资格。 手机现在将正确重启。 此时,我可以将交换机端口configuration放回原来的位置,只要没有人尝试拨打该号码,因为我正在重置端口,手机也不会错过任何节拍。 然后我可以重新连接电脑。 显然,这不是一个理想的过程,但是因为手机重新启动,所以很less有人能够使用它来让人们重新工作,直到find根本原因。 现在办公室已经closures了一周,所以这个问题实际上会被允许在周末坐下来(我没有个人办公室的钥匙)。
我固定的这个电话是在服务器房间的服务电话,直接连接到我们的核心交换机。 有可能这个问题是核心交换机上的路由或处理标签的问题,这样,在其他交换机首先通过(由其他交换机标记)分组的远程办公室,该解决方法将不会有效,但是我会很惊讶如果发生这种情况,我知道它必须正确处理DHCP更新和实际的电话交谈。
一个麻烦就是离开PC vlan上标记的端口意味着电话代替失败,并显示消息“ DHCP: Offer 1 ACC ”。 我需要完全删除该vlan才能成功。
注意:我现在已经证实,在远程build筑中这种解决方法是有效的。 这导致我怀疑我的设备不知道分配给正确的VLAN。 那个我在核心交换机上遇到问题的事实,几乎在同一时间发生在networking上的几个地方,表明核心交换机可能是问题。 没有什么具体的看,我正在安排一个接近周末的维护窗口来重新启动交换机。 我也可能更新固件。
环境
我们的核心交换机是HP 5406zl。 该交换机处理VLAN间路由。 Windows DHCP服务器直接连接到交换机。 terminal交换机通过光纤SFP连接到核心交换机,并且这些端口被标记为两端的所有vlan。 核心交换机使用一个ip helper-address设置来configuration每个vlan,将其指向我们的DHCP服务器,而一个dhcp relay-option 82 replace line,这样dhcp服务器就会知道使用哪个范围。 这些configuration以及端点交换机上的端口configuration在至less16个月内没有变化。 在那个时候,我们有其他的开关和手机重置。
我们的大多数terminal交换机都是HP 2530系列。 这些开关似乎正常工作(3个不同的2530的电话今天已经正确地重新启动)。 这是旧的交换机有问题。 我们有一个旧的3Com 4200和一个4210,将无法正常工作。 直接连接到前面提到的核心交换机的业务电话也不能工作。
题
在这一点上我最好的猜测是在DHCP服务器上的Windows更新改变了行为,但我看不到。 或者核心交换机可能没有正确处理REQUEST数据包,但是我确信这里没有任何改变,也不能解释为什么只有特定的端点交换机才会生效。 我该如何解决这个问题?
更新:
这是一个从一个失败的电话dhcp日志摘录:
10,03 / 06 / 15,12:40:40,Assign,10.1.2.158,08000F197844,,3189088995,0,11,03 / 06 / 15,12:40:40,Renew,10.1.2.158, ,08000F197844,,3189088995,01,12,03 / 06 / 15,12:40:41,Release,10.1.2.158,08000F197844,,3189088995,01,0153 / 06 / 15,12: 40:45,NACK,10.1.2.154,08000F197844,0,6 ,,, 15,03 / 06 / 15,12:40:45,NACK,10.1.2.154,08000F197844,0,6,…,
10.xxx地址是PC vlan(这个选项在这个地方预先给我)。 首先,电话应该得到这样的地址,所以这是预期的。 然而,在发布消息之后,我也希望能够在192.168.16.x范围内find一个地址,因为我可以在手机上看到一个提议被接受(除非我误解了“ACC”)。 有趣的是,我从来没有看到服务器试图发布这样的地址,即使电话认为它收到了一个。
我认为networking上有一个stream氓dhcp服务器(它在Windows服务器之前发出一个地址,但没有电话需要的dhcp选项继续),但这并不能解释为什么电话工作当且仅当我完全删除PC vlan的任何path。 我会在早上通过连接我的笔记本电脑到一个为电话vlan设置的端口来进行testing,但如果其他人有更好的解释,我很乐意听到。
以下是交换机configuration的副本:
http://pastebin.com/veXjCRXu
我今天通过删除连接到我们的DHCP服务器的端口上的电话vlan的vlan标记来解决这个问题。 对我来说这很奇怪,因为其他使用类似scheme的系统(又名:使用802.1q的Wifi SSID)需要标签或客户端无法获得地址。 它的工作,所以我不会看起来太辛苦,但我会有兴趣看到为什么这是这样的理论的答案。
您应该考虑在有问题的交换机的任一侧运行数据包捕获,然后在Wireshark中查看。 这将能够告诉你1)stream量是否被一个stream氓DHCP服务器拦截(基于MAC地址)和2)是否有东西被弄坏或丢弃(例如,也许你需要DHCP中继)。 这可能需要端口镜像,或者3com可能支持直接在交换机上捕获。
如果您发现此问题再次popup,您可能需要检查您的DHCP范围的大小以及正在使用多less租约。 如果旧的DHCP租约没有被破坏,你的服务器可能会认为池中没有地址,并且不能分配新的地址。 即使在vlan中没有设备响应也是如此。 如果您的DHCP范围是7天,则可能需要7天才能获得新的租约。 同样,改变你的configuration可以解决这个问题,因为会有一个新的地址范围可以抛出,或者可能会根据configuration更改刷新租约。 我build议将租赁期限设置得非常低,如果是这样的话,那么就是一小时。 您可以通过手动删除租约并查看手机现在是否能够拿起新地址(如果问题再次popup)来确认。