如何帮奶茶店修复 DHCP 池枯竭

简介

在 2018 年圣诞节之前,我曾帮助 [email protected] 对面的贡茶修复了网络,并且得到了一杯免费的布丁奶茶。具体的问题实际上并不复杂,只是 DHCP lease 时间过长 (一周)导致的 DHCP 池枯竭,但是却能导致所有的客户都无法上网,在没有配置 IPv6 的网络环境下影响尤其显著。这次来到 Toronto 北部某家奶茶店时,又遇上了类似的问题,我将在这篇文章中介绍此类问题正确和错误的解决方法。

寻找问题

此类问题一般的症状是,设备在连接上 WiFi 之后无法获取 IP 地址,并且无法上网,或者只能访问 IPv6 网络。这是因为 DHCP lease 池已经枯竭,无法给新的设备分发地址造成的。能够访问 IPv6 地址是因为 IPv6 的地址分配并不依赖于 DHCP,而是 SLAAC。

在我们的案例中,具体的体现如下:

我们可以看到,dhclient 并不能在 LAN 上得到任何 DHCP offer,由此我们能够确定,DHCP 池已经枯竭,或者网络上并没有 DHCP 服务器。

寻找 IPv4 地址段

为了证实网内是有 IPv4 的,我们可以试试看能不能抓到已经拿到 DHCP offer 设备的 ARP 报文,以此确定 IPv4 的存在以及 LAN 的网段。

在上图中,我们能够看到网内已经有 IPv4 地址设备的通信,由此我们能确定 LAN 是存在 IPv4 的,也就是说 DHCP 池的确枯竭了。并且,从通信的端点地址中,我们可以看出 IPv4 的地址段应该是 192.168.0.0/24,并且网关地址应该是 192.168.0.1。我们可以通过手动设定地址来测试我们的猜测是否正确。

我们的猜测果然没错。接下来我们就可以试试看登录路由器控制台了。

修复问题

在进行这步之前,请确保您有店家或者网络拥有者的许可来进行操作和修改设备的配置,否则您的行为将违反您所在国家的计算机入侵法律。(e.g. R.S.C., 1985, c. C-46: http://laws-lois.justice.gc.ca/PDF/C-46.pdf)。

首先我们登录路由器的控制台,在我们的案例中,路由器的用户名和密码都是默认的 (cusadmin:password)。在现实案例中,这样的配置是非常不安全的,也是网络配置人员容易和常犯的错误。

我们可以在上图中看到,DHCP lease time 长达一周,并且 LAN 的网段只有区区 /24。这便是 DHCP 池枯竭的罪魁祸首了,在人流量相对较高的商业环境中,这样的设置势必会在几日甚至几小时内让 DHCP 池枯竭。

为了应对枯竭的问题,我们将网段扩展为 10.0.0.0/8,并且将 DHCP 租借时间定为 30 分钟。只要用户仍然在网内,设备就会在租借时间的一半时间内 (15分钟)更新租借,所以不用担心此设置会对网络稳定性造成任何影响。注意路由器设定更改会导致设备重启,所以请斟酌是否要在高峰期更改任何设定。

至此,设备的重新配置已经全部完成了。

测试更改

我们可以看到,在设备重启后,客户端已经可以正常获取 IPv4 地址了,并且一切网络通信正常,说明 DHCP 池枯竭的问题已经被成功修复。

后续故事

在我将此配置问题告知贡茶后,一名员工听我解释完了问题并且和我一起修复了问题,解决了这家店顾客的上网问题,还免费给了我一杯布丁奶茶;Toronto 北部的某家店不但在我描述问题的时候满脸不耐烦,并且直接用借口敷衍过了我想帮忙的请求,我甚至怀疑他们有没有在听我讲话。当然我最后绝对没有当雷锋去爆破密码修复问题给店里的二十号人可用的网络。在执行此类操作的时候最好进行一下内网探测,看看网内是否有依赖于当前网络配置的设备(静态IP等),以免造成灾难性后果。