[点晴永久免费OA]同一个网络,有人正常有人断网?我做了个工具定位了问题
|
2026年5月19日 13:51
本文热度 127
|
周三下午 3:20。运营那边丢来一句话:“网络有问题,有人能上ERP,有人打不开。”
- 这句话看起来很普通,但其实是运维最头疼的信号--不是全挂,是“部分正常”。
- 到达现场发现,确实是有几台正常,但是有几台无法上网。
- 第一反应排查三件套:ping 网关 (部分失败)、tracert 不正常、DNS正常。
- 到这里就不对劲了:如果是出口问题,应该全挂;如果是DNS问题,应该一致异常。
01
真凶:关键突破点(为什么怀疑 DHCP?)
我随手看了一台异常电脑:ipconfig。
结果直接破案:IP:192.168.0.23。网关:192.168.0.1。
而正常电脑是:IP:10.10.20.55,网关:10.10.20.1。
同一个网络,出现两种IP体系。
这时候基本可以断定:网络里出现了第二个 DHCP 服务器。
02
我们先来分析下,DHCP怎么工作的?
客户端启动时会广播:“谁给我IP?”
然后:谁先回复,就用谁。
正常情况:PC → 广播 → 企业DHCP → 企业正确IP。
异常情况:PC → 广播 → 私接路由。
结果:就导致有人正常有人瘫痪的情况。
这就是:“同网络不同命运”。
03
于是我根据这个原理,做了个DHCP小工具:
一键可以在同一个网段中直接揪出真凶。
工具原理:发送 DHCP Discover(广播)->监听所有 DHCP Offer->统计返回的服务器。DHCP不是唯一响应,是“抢答机制”。
并且通过抓到的mac地址->程序在接入交换机中对比->抓到这个设备在哪个端口->并判定结果。
04
工具制作步骤+源码:
步骤1、Python环境+依赖包:
步骤2、交换机设备json清单:
- 建立一个“switches.json”的json文件,->储存交换机设备信息。
- 当d出现问题点击"定位设备"时->主程序会调用json->连到交换机上->通过命令检测对比mac->最终定位到端口。
- 请看以下是json文件示例代码(以下替换为你实际的信息就行):
{
"switches": [
{
"name": "Access-SW1",
"ip": "192.168.31.253",
"type": "hp_comware",
"username": "admin",
"password": "Password"
},
{
"name": "Access-SW2",
"ip": "10.10.42.251",
"type": "hp_comware",
"username": "admin",
"password": "Password"
}
]
} |
- 直接上主程序代码:建名称为“dhcp_tool.py”的Python文件,和上述json文件放一个文件夹中。
- 注1:完整代码我放以下链接里,请复制以下链接到浏览器后,直接可打开代码:
https://raw.giteeusercontent.com/IT_pangge/it-explorer-fat-brother/raw/master/%E4%B8%80%E9%94%AE%E6%A3%80%E6%B5%8Bdhcp%E9%9D%9E%E6%B3%95+%E5%88%A4%E6%96%AD%E5%93%AA%E4%B8%AA%E6%8E%A5%E5%8F%A3/dhcp_tool.py?metadata=eyJyIjoibWFzdGVyIiwiZnAiOiLkuIDplK7mo4DmtYtkaGNw6Z2e5rOVK-WIpOaWreWTquS4quaOpeWPoy9kaGNwX3Rvb2wucHkiLCJ1aWQiOjE2OTA1NzI2LCJwaWQiOjQ2MTY2OTA0LCJzdG8iOiJnaXQtc2hhcmRpbmctc3RvLTEwdC0wNzIiLCJycCI6InJlcG9zL2U2LzgyL2U2ODJhYzI2ODg2MWI1ZjRiZThiNGQxMjE0NDVmMDY3NDY4ZTI5YWZhYzUwN2FhZDc4M2E4ZTA4Nzc1NTdlYWMuZ2l0IiwiaXNwIjp0cnVlLCJleHBpcmVfYXQiOjE3NzczNjA4MDB9&signature=YfEB_YeXk6jJnwZG4i1Chp4wGkznUhqsMewomkDND8g
05
总结+解决方案:
阅读原文:https://mp.weixin.qq.com/s/AKQkXMClFYIEjrRTDBWCXQ
该文章在 2026/5/20 12:49:43 编辑过