凌晨两点接到值班电话,财务部整个办公室集体断网。赶过去一查,交换机上IP冲突告警刷屏,ARP表乱成一锅粥——有人图省事,把自己笔记本电脑的IP手动改成了打印服务器的地址,还正好是同一台交换机下的两个端口。这个场景,做过园区网运维的朋友应该都不陌生。
IP与MAC地址绑定(IPSG,IP Source Guard)就是专门治这种乱象的机制。它让交换机在收到报文时先做一次“身份核验”,只有在源IP和源MAC都对得上绑定表的情况下才放行,对不上一律丢弃。今天这篇文章,我把华为、H3C、思科上配置IPSG的完整流程、动态绑定原理和踩坑记录整理出来,给刚接触网络安全的运维新人做个参考。老手们也可以看看后半部分的排错思路,说不定能避开我当年踩进去的那些坑。
1. 先说清楚:IPSG到底在防什么
1.1 一个真实的内网事故
回到开头那个案例。财务部的打印机一直用固定IP 192.168.10.50,某天有个同事为了临时共享文件,把自己电脑改成静态IP 192.168.10.50。结果打印机掉线,半个楼层的人访问不了共享盘,网关的ARP表也开始抖动——因为终端发往网关的报文跑到了那台笔记本上,整个VLAN的通信被搅乱。
这种“私改IP”只是最轻微的情况。更难缠的是恶意行为:攻击者抓包拿到别人电脑的IP和MAC,把自己改成领导或服务器的地址,然后绕过准入直接访问核心资源;或者伪装成网关IP,向全网发送ARP应答,把流量都引到自己机器上做中间人窃听。遇到这类攻击,传统ACL基本没用——因为交换机分不清进来的报文到底是真是假,它只认IP和MAC,而这两个字段靠软件就能随便改。
IPSG解决的就是这个问题:交换机在二层端口入口处做强制检查,报文源IP、源MAC必须和绑定表匹配才允许通过,不匹配的直接丢。这样一来,就算攻击者知道别人的IP和MAC,只要他换了一台设备接入,或者换了端口,绑定关系就对不上,伪造流量当场被拦。
1.2 IPSG识别“真假”报文的原理
IPSG的核心是一张绑定表,表里记录四元组:VLAN、接口、IP地址、MAC地址。交换机收到一个IP报文时,把报文里的源IP、源MAC提取出来,和表项比对。匹配上了,放行;匹配不上,丢弃。
这里有个关键细节:IPSG的默认策略是白名单机制。一个端口只要开启了IPSG,那么该端口收到的所有IP报文,都必须能在绑定表里找到对应条目才允许转发。也就是说,任何没有绑定表的终端,一开IPSG就直接断网。这和我们平时做ACL“默认放行,只拦特定流量”的思路完全相反——所以部署时一定要提前想清楚,哪些设备走DHCP动态获取地址,哪些设备必须静态绑定,否则上线那一刻就是大面积故障时刻。
需要注意的是,IPSG检查的是报文里的二层源MAC和三层源IP,不是目的地址。目的地址的转发仍然由三层路由或二层交换决定。这也是它和端口安全(Port Security)的区别:端口安全管的是MAC地址学习数量,IPSG管的是IP和MAC的配对关系。
1.3 动态绑定与静态绑定:两种模式怎么选
动态绑定是指交换机通过DHCP Snooping自动学习终端的IP、MAC、接口、VLAN信息。终端正常通过DHCP获取地址,交换机在后台记录一条绑定表项,整个过程无需人工干预。这是绝大多数终端的接入方式,也是IPSG最常见的使用形态。
静态绑定则是管理员手工在接口下配置“某个IP只能由某块网卡使用”。打印机、服务器、监控摄像头、门禁控制器这种固定IP设备,必须走静态绑定。原因很简单:这类设备不会发DHCP请求,如果只开动态IPSG,它们发出的报文在绑定表里找不到对应条目,会被一律丢光。
选择上我的建议是按设备角色区分:终端默认走DHCP动态绑定;服务器、打印机、网络设备、IoT终端一律静态绑定;安全要求高、终端数量少的区域(比如财务室、研发核心区),可以动态+静态混合,再叠加准入认证,效果最好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 绑定表是怎么长出来的:DHCP Snooping是关键前置
2.1 DHCP Snooping监听与绑定表生成流程
IPSG本身不生成绑定表,它的数据来源是DHCP Snooping。所以部署IPSG之前,必须先把DHCP Snooping打开。
DHCP Snooping的基本原理是:交换机监听终端和DHCP服务器之间的交互报文,在终端成功获取到地址后,把这次分配结果记录到本地表里。完整的流程可以简化成四个步骤:
text复制1. 终端发出 DHCP Discover(广播找服务器)
2. DHCP服务器回应 DHCP Offer(提供地址)
3. 终端发出 DHCP Request(确认要这个地址)
4. DHCP服务器回应 DHCP Ack(确认分配)
交换机在收到 DHCP Ack 后,记录绑定表:
VLAN 10 | GigabitEthernet0/0/1 | 192.168.10.101 | 00e0-4c12-3456 | 租约8小时
实际实现的记录时机在不同厂商、不同版本上略有差异,有的在DHCP Request阶段就记录了初步信息,等Ack后再确认,但原理一致。这个绑定表不是永久存在的,它跟随DHCP租约老化。租约到期、终端续租失败、接口down掉,表项都会相应更新或删除。
2.2 一张绑定表长什么样
用华为交换机举例,执行 display dhcp snooping user-bind all,输出大概是:
text复制Port VLAN IP A
