搭建一次公网IP被占用后的排查过程记录

2025.7.9 杂七杂八 953
33BLOG智能摘要
深夜2点17分,生产环境VPN突然失联,监控系统告警。经检查,VPN服务正常运行但客户端无法连接。通过ARP抓包发现,公网IP 203.0.113.45存在两个MAC地址记录,其中一个是陌生设备的。追踪该设备来源,发现是实习生私自接入测试用智能摄像头,其配置的静态IP与VPN服务器冲突。事件暴露了网络接入审批流程缺失问题。为防止类似情况,团队随后采取核心IP段IP-MAC绑定、开启端口安全、实习生设备强制使用测试IP等改进措施,并编写ARP监控脚本实现自动化告警。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

那个深夜,我们的公网IP神秘失踪了——一次IP冲突排查全记录

搭建一次公网IP被占用后的排查过程记录

上周四凌晨2点17分,我的手机突然疯狂震动。迷迷糊糊抓起来一看,监控系统告警:生产环境VPN突然失联。作为一个经历过多次深夜故障的老运维,我瞬间清醒——这绝对不是什么小问题。

一、故障现象:VPN集体掉线

连上跳板机后,我立即检查了VPN服务器状态:

# 检查OpenVPN服务状态
systemctl status openvpn@server
# 返回结果:Active: active (running)

服务明明在跑,但所有客户端都无法连接。更诡异的是,从内网SSH到这台服务器完全正常。这时候我后背开始发凉——这症状太像IP冲突了。

二、第一反应:ARP侦查

我立刻在核心交换机上抓包,果然发现了异常:

# 在交换机上执行
show arp | include 203.0.113.45
# 返回两个MAC地址:
# 00:1a:4b:xx:xx:xx (我们的服务器)
# 5c:5e:ab:xx:xx:xx (陌生设备)

看到这里我反而松了口气,至少确认不是配置错误。但新的问题来了:这个5c:5e:ab开头的MAC到底是谁?

三、追踪神秘设备

通过MAC地址前三位查询厂商,显示是某国产物联网设备。我们机房根本没有这类设备!这时候我突然想起上个月新来的实习生…

  • Step 1: 查询DHCP日志,发现该MAC昨天刚获取过IP
  • Step 2: 定位到接入交换机Port 3/12
  • Step 3: 冲到机房拔线,VPN瞬间恢复

四、真相大白:实习生的小实验

第二天上班后,果然发现是实习生把测试用的智能摄像头直接插在了办公网络。这个设备被配置了静态IP,恰巧和我们VPN服务器撞车。

血泪教训:新设备接入必须走审批流程!我连夜写了段自动化检测脚本:

#!/usr/bin/env python3
# ARP监控脚本
from scapy.all import *

def arp_monitor(pkt):
    if ARP in pkt and pkt[ARP].op in (1,2): # who-has or is-at
        if pkt[ARP].psrc == '203.0.113.45':
            send_mail_alert(f"IP冲突告警!MAC: {pkt[ARP].hwsrc}")

sniff(prn=arp_monitor, filter="arp", store=0)

五、后续改进措施

这次事故让我们做了三个重要改进:

  1. 核心IP段启用IP-MAC绑定
  2. 网络接入层开启端口安全
  3. 所有实习生设备强制使用10.开头的测试IP段

现在回想起来,虽然折腾到凌晨4点,但这次排查过程确实让我对ARP协议和网络隔离有了更深的理解。下次如果再遇到类似问题,估计半小时内就能搞定了。

评论

  • 深夜排障真的太刺激了,看到IP冲突那段我都能感受到楼主的紧张感

  • 实习生的锅哈哈哈哈,想起我们公司之前也有类似的事故

  • 学到了!这个自动检测脚本可以收藏一下,以后说不定能用上

  • 建议文末的改进措施再加一条:给新员工做基础的网络安全培训

  • 作为一个网络小白,居然看懂了整篇排查思路,感谢技术分享!👍

  • IP-MAC绑定太重要了,我们公司就是没做这个吃了大亏

  • 看到凌晨4点那里好心酸,运维真的都是007战士啊

  • 细节很棒!尤其是从MAC查厂商那部分很实用