华为交换机MAC地址查询与端口安全配置实战指南
干网络维护这些年华为交换机上敲display mac-address查表、配置端口安全几乎是我每天都会碰的技能。不管是排查私接设备、定位广播风暴还是给公司做接入层准入都离不开这两个操作。这篇文章我把华为交换机查看MAC地址的常用命令和端口安全配置一次性讲透适合刚接手华为设备的网管也适合想系统梳理一遍的老手。文中命令以VRP平台为例S5720、S5730、S5735这些常见的千兆和三层交换机基本通用少部分命令不同软件版本会有细微差异我会在对应位置提醒一句。1. 先搞清楚MAC地址表到底在看什么我在实际项目里遇到过一个典型案例办公室网络突然卡顿领导怀疑有人偷偷接了路由器。我跑到核心交换机上先display mac-address发现某个端口下边带了几十个MAC而且这些MAC集中从同一片工位方向学上来顺着端口一查果然有人私接了一个小交换机。这是MAC地址表最直接的用途——它就是交换机的“通讯录”记录了从哪个端口学到了哪些设备。1.1 三种MAC地址类型单播、组播、广播一个MAC地址长度48比特写成十六进制是12位比如5489-98AD-1234。华为设备上display mac-address查出来的地址类型通常分三种单播MAC第一个字节的最低位是0普通电脑、服务器网卡都是这类日常查表主要看它。组播MAC第一个字节最低位是1比如01-00-5E-开头的一般是IP组播映射出来的MAC常见于组播视频流这类业务。广播MAC就是FF-FF-FF-FF-FF-FF交换机收到目的地址为广播MAC的帧会向同VLAN所有端口转发。为什么要分清楚排查广播风暴的时候如果看到广播流量异常增长再去配合接口收发包计数就能定位到真正发广播的设备。只会看一眼MAC列表是远远不够的。1.2 动态、静态、黑洞表项的差别华为交换机的MAC地址表项分三类实际管理中经常会混用动态设备上线自动学习默认老化时间是300秒可以修改设备下线或老化后表项就没了交换机重启后也会清零。静态手工配置进去的永久保存在配置文件里重启不丢适合固定服务器、网关、打印机这类长期不动的设备。配置命令是mac-address static 5489-98ad-1234 GigabitEthernet0/0/1 vlan 10。黑洞手工配置的黑名单收到源地址或目的地址为黑洞MAC的报文直接丢弃适合拉黑某台违规设备。命令是mac-address blackhole 5489-98ad-ffff vlan 10。静态和黑洞虽然都是手工配置但思路相反静态是“我信任它所以固定下来”黑洞是“我不信任它所以直接丢弃”别搞混了。1.3 交换机是怎么“自学”MAC的以及端口安全为什么必须做在前面交换机的MAC学习概括成四个字就是“见源学、见目查”。收到一个数据帧先看源MAC表里没有就记录“这个源MAC是从哪个端口进来的”然后看目的MAC表里有就从对应端口转发没有就向VLAN内除接收口以外的所有端口泛洪。整个学习过程是自动的不需要人工干预。端口安全的核心就是把“学源MAC”这个动作管起来学多少、学谁的、学完记不记全部由你决定。如果放任不管接入层有人私接设备MAC表被灌爆就会出现“设备明明在线但通信时断时续”的怪象排查起来非常头疼。所以端口安全必须在接入层做在前面而不是等出了问题再补。2. 华为交换机查看MAC地址的核心命令与实战2.1 一条display mac-address输出怎么读在华为交换机上执行display mac-address输出大概是这个样子的MAC Address VLAN Learned-From Type 5489-98ad-1234 10 GigabitEthernet0/0/1 dynamic 5489-98ad-5678 10 GigabitEthernet0/0/1 dynamic 00e0-fc12-3456 20 GigabitEthernet0/0/3 dynamic 00e0-fc12-7890 20 GigabitEthernet0/0/5 static关键看三列MAC Address是设备地址VLAN是这个MAC所在的业务VLANLearned-From表示从哪个物理端口学上来的Type显示是dynamic、static还是sticky。现实中经常遇到“查到了MAC但不知道这台电脑对应哪个端口”的情况反过来也有“知道端口但不知道上面接了什么设备”的这时候就需要下面这些过滤方式。2.2 按端口、VLAN、具体MAC精确过滤只查看某个端口上完成了多少设备display mac-address GigabitEthernet0/0/1只查看某个VLAN里的地址display mac-address vlan 10按完整MAC精确查找这条在“设备到底在哪”这类问题里最有用display mac-address 5489-98ad-1234配合ARP表可以把整张对应关系还原出来display arp | include 192.168.1.10实战中我常用的组合拳是先display arp查IP对应的MAC再用display mac-address查MAC来自哪个端口最后display interface看端口状态和收发包计数。这一套三板斧基本能解决九成“某台机器找不到、某台机器上不了网”的问题。2.3 通过MAC前缀分辨虚拟机和物理机很多人搜过“000c29开头的MAC地址都是虚拟机吗”。00:0C:29是VMware虚拟机的OUI前缀看到这个开头的MAC基本可以断定是ESXi或Workstation里的虚拟机网卡。常见虚拟化平台的前缀对照如下前缀平台00:0C:29VMware ESXi / Workstation00:50:56VMware00:15:5DMicrosoft Hyper-V08:00:27Oracle VirtualBox52:54:00KVM / QEMU00:1C:42Parallels办公网里如果非虚拟化区域突然出现这类前缀的MAC大概率是有人私自装了虚拟机并且给虚拟机配置了桥接网卡联入办公网络。这种私接行为正是端口安全要重点防治的对象。网上也有很多OUI查询平台输入前三位即可反查厂商排查终端型号时很管用。2.4 用广播/组播统计定位异常流量源热词里的“dis mac | in broad”其实是display mac-address | include Broadcast的组合写法。直接看广播表项意义有限因为广播MAC本来就是所有端口共享的更有价值的是定位“谁在玩命发广播”。做法是display interface GigabitEthernet0/0/1看入方向的Broadcast计数哪个端口数值明显飙升就一级一级往下查。我曾经遇到整层楼卡顿排查到最后是某个办公室的小交换机成环广播包成倍翻涨最后就是靠端口广播计数一个口一个口拔线定位的。提醒一句display mac-address能帮助你描述现象但要真正抓住“谁在发”优先看接口计数再配合STP或环路检测。3. 端口安全的本质防的不是MAC是人3.1 端口安全到底能防什么、防不了什么端口安全本质上是接入层的“门禁”。开启后能做到三件事限制端口学习的MAC数量超过就按策略处理把学习到的MAC固化成粘滞表项非授权设备换了也进不来绑定IP和MAC防止用户私自改IP。它防不了伪造MAC——如果某人刻意把网卡MAC改成合法设备的MAC端口安全是分不出来的那种威胁得上802.1X和终端准入。另外一个容易忽略的点如果你接的是虚拟化服务器vSphere这类平台开了混杂模式、允许MAC地址更改或伪传输虚拟机会让交换机看到大量来自同一个物理口的MAC变动。这种场景不适合开端口安全尤其是服务器上联口开了反而会把正常业务流量挡掉。这也是为什么端口安全主要部署在“人用的接入口”而不是服务器上联口。我见过一个案例运维把服务器口也开了严格端口安全结果虚拟化平台一迁移端口立刻被判违规业务直接中断这种坑别踩。3.2 单个端口允许多少设备max-mac-num怎么定关键参数是端口最大MAC学习数命令是port-security max-mac-num。数值怎么定要看端口用途一台电脑独占的桌面口设1就好。打印机口除了打印机本体可能还有管理口一般设2到3。接无线AP的口要特别小心。AP如果是本地转发或桥接模式无线终端的MAC会从AP上联口学到交换机上这时候如果照搬“一个口限1个”无线用户会轮流掉线坑很深。我的习惯是AP口默认不启用端口安全或者只做MAC数量限制但把数值放宽到8到16具体看AP转发模式来定。这里也回应一下很多人会用到的“华为交换机配置实例”搜索需求不同VRP版本默认值不完全一致开启端口安全后默认最大MAC学习数可能是1也可能不是所以务必显式写上port-security max-mac-num不要依赖默认值。3.3 粘滞MAC让交换机记住合法设备粘滞MAC英文叫sticky MAC是端口安全里最常用的功能。它的工作逻辑是第一次从端口学到的MAC自动转成静态表项保存下来之后交换机只认这些MAC。哪怕设备重启、交换机重启合法设备还能正常通信新接上来的未知设备直接被拒。粘滞MAC最舒服的一点是自动建档不用手工一条条敲MAC。注意必须先在端口下使能port-security enable再配置port-security mac-address sticky顺序反了会直接报错不少新手卡在这里。4. 华为交换机端口安全配置实操4.1 最简配置开启端口安全并限制MAC数量以S5720为例桌面电脑口的最简配置system-view interface GigabitEthernet0/0/1 port-security enable port-security max-mac-num 1 port-security protect-action restrict第一行使能端口安全第二行限制这个口最多学1个MAC第三行设置超出后的处理动作是restrict即丢弃报文并记录日志。配置完查看结果display port-security display port-security interface GigabitEthernet0/0/1display port-security没有任何参数时显示全局概况带接口参数时显示该接口的使能状态、最大MAC数、当前学习到的MAC数、保护动作等信息。注意有的VRP版本默认动作是shutdown配完测试设备一插端口就error-down不要慌先display port-security看动作再决定是改动作还是恢复端口。4.2 粘滞MAC固化与解除的正确姿势在刚才的基础上加上stickysystem-view interface GigabitEthernet0/0/1 port-security enable port-security mac-address sticky port-security max-mac-num 1 port-security protect-action restrict开启sticky后当前已经学习到的动态MAC会自动变成sticky类型以后换一台机器接上端口直接判违规。查看粘滞表项display mac-address sticky如果某台设备要换机需要先解除旧MACinterface GigabitEthernet0/0/1 undo port-security mac-address sticky 5489-98ad-1234 vlan 10然后让新设备重新学习。我个人的实操建议是别一上来就开sticky。先只限数量观察端口正常学习了哪些MAC确认没有遗漏再开sticky固化。我见过有人直接把sticky开在多人共用的工位口上同事一换电脑全上不了网最后只能逐台手清场面非常尴尬。4.3 端口安全里怎么绑定IP和MAC只做MAC限制的漏洞在于现在Windows和手机改MAC太容易所以实际项目里经常要把IP也绑进去system-view interface GigabitEthernet0/0/1 port-security enable port-security max-mac-num 1 port-security mac-address sticky vlan 10 ip-address 192.168.1.10 5489-98ad-1234这条命令的意思是端口只允许5489-98ad-1234这台设备并且它的IP必须是192.168.1.10VLAN是10。改了IP端口不给转发。用户自行改IP就没了意义。注意VLAN号别写错业务VLAN是10却写成20配置根本不生效排查起来很恼火。到了这一步终端的IP、MAC、端口、VLAN四元组就全部锁死了。4.4 违规处理动作怎么选shutdown、restrict、protect华为端口安全的违规处理动作有三个很多新手分不清动作行为日志/告警端口状态适用场景protect丢弃违规报文不记录端口保持正常不推荐单独使用restrict丢弃违规报文记录日志并上报告警端口保持正常办公网终端口首选shutdown丢弃违规报文记录日志端口error-down机柜、弱电间固定设备口实际选型时我的经验是办公楼固定工位用restrict既能起到限制作用又不会因为一次换机导致断网事后看日志还能追责。机柜和弱电间里的固定设备口用shutdown出现未知接入直接断安全性最高。protect我基本不用静默丢包是排障噩梦出了问题都不知道是安全策略挡的。如果端口被shutdown需要手动恢复interface GigabitEthernet0/0/1 shutdown undo shutdown部分版本也支持restart命令效果一样。后面我会讲自动恢复的配置。5. 一个典型场景公司5个部门划分VLAN后的接入加固5.1 先按部门把VLAN和地址段划分清楚热搜里有个很典型的需求“公司5个部门划分5个子网A部门100主机B部门50C部门20”。我一般这样做地址规划部门/用途VLAN网段可用主机数规划说明A部门VLAN 10192.168.10.0/24253覆盖100台留余量B部门VLAN 20192.168.20.0/24253覆盖50台宽裕C部门VLAN 30192.168.30.0/24253覆盖20台服务器区VLAN 40192.168.40.0/24253单独隔离管理网VLAN 99192.168.99.0/24253设备管理地址A部门100台终端用/24是常规操作。如果公司未来明确会扩张直接给/23更从容但前提是核心交换机支持大段地址的二层转发否则还是规规矩矩用/24。VLAN把一个大的广播域切成5个小广播域广播报文少了安全边界清晰了某个部门出了问题也不会影响全网。划分完成后用display mac-address vlan 10数一下实际MAC数量可以和规划对得上避免地址规划不足。5.2 接入端口的分级安全策略配置按端口类型设计不同的安全策略这是整个项目里最关键的一步。我把模板贴出来# 桌面终端口只认一台设备粘滞restrict interface GigabitEthernet0/0/1 port-security enable port-security max-mac-num 1 port-security mac-address sticky port-security protect-action restrict # 打印机口允许3个MAC interface GigabitEthernet0/0/2 port-security enable port-security max-mac-num 3 port-security mac-address sticky port-security protect-action restrict # 上行口和服务器口不启用端口安全 interface GigabitEthernet0/0/24 undo port-security enable这里再提一个和端口安全经常一起做的功能DHCP Snooping。私接小路由器乱发DHCP是很常见的接入层问题把交换机的DHCP Snooping打开上行口设成信任口其他口设成非信任口私接路由器自动失效。端口安全负责管“哪台设备能接入”DHCP Snooping负责管“谁能发地址”两个一起用接入层才真正稳。5.3 部署后的验证与效果检查配置完成后先别急着全量上线挑几个代表端口测试。我通常的做法是正常电脑插上ping网关通display mac-address能看到一条dynamic或sticky表项。换一台没登记的设备插上终端无法上网执行display logbuffer | include port-security能看到告警记录。试改IP业务不通说明IP-MAC绑定生效。检查端口有没有误伤同事display port-security interface GigabitEthernet0/0/1看当前安全MAC数是否正常。全量部署我建议选在业务低峰期凌晨或者周末最合适配一台验证一台不要一把梭。配置完成后记得save不然设备一重启所有策略全部回滚。6. 常见问题与排障速查6.1 明明配了端口安全别人还能换IP最常见的原因是只限制了MAC数量没做IP-MAC绑定。只限制MAC数量时用户换IP不影响端口安全判断所以依然能上网。解决办法就是给端口配上带ip-address的粘滞条目。还有一种情况是MAC被伪造比如用户把网卡MAC改成合法设备MAC端口安全分不出来这时候要靠DHCP Snooping、静态绑定和端口隔离共同兜底。遇到这类问题先display port-security interface看当前学习表再逐层排查。6.2 端口被shutdown后恢复与自动恢复端口因为port-security触发error-down后状态显示为ERROR DOWN(PORT-SECURITY)。手动恢复方法interface GigabitEthernet0/0/1 shutdown undo shutdown批量场景建议配置自动恢复error-down auto-recovery cause port-security interval 300意思是因端口安全被关闭的端口300秒后自动尝试恢复。注意如果违规设备还插着恢复后端口会再次被关反反复复所以恢复前先确认是不是有陌生设备接着。很多网管配置了自动恢复就以为万事大吉结果端口一直在“恢复-关闭-恢复-关闭”之间循环日志刷屏排查时才发现是违规设备根本没拔。6.3 交换机学习到大量陌生MAC的处理流程遇到display mac-address显示一大堆陌生地址先别慌。按这个顺序排查步骤操作目的1display mac-address | count看总表项数量是否异常2display mac-address逐一比对端口找出学习MAC特别多的端口3登录对应下联设备检查确认是不是小交换机或AP4display interface 看收发包计数判断是否存在环路5查看OUI前缀识别是否虚拟机私接6有异常则断口处理避免影响其他终端另外说一句不要在没看端口计数的情况下盲目清MAC表清了还会重新学治标不治本。先定位来源才是正道。6.4 几个容易被问到的点华为S5720怎么改密码和本地登录控制台口在user-interface console 0下配密码远程登录在AAA下改本地用户密码。示例user-interface console 0 authentication-mode password set authentication password cipher Huawei123aaa local-user admin password irreversible-cipher New123SSH连不上老交换机报shell request failed on channel 0通常是新版SSH客户端默认禁用了ssh-rsa签名算法而老VRP只支持RSA密钥。客户端侧加-oHostKeyAlgorithmsssh-rsa可解也可能是设备端在线会话数超限清一下在线用户就行。蓝牙或物联设备MAC老变像杰理701这类蓝牙芯片默认使用随机地址每次连接MAC都会变化这是BLE规范里的地址随机化机制不是设备故障。做终端资产管理时别把这些设备的MAC当成固定标识否则会一直“查无此机”。虚拟网卡MAC可以设置成纯数字吗MAC地址的字符集是十六进制0-9都是合法字符所以“纯数字”并不奇怪比如00:00:00:00:00:12就是一个合法单播MAC。这类虚拟网卡在交换机上一样会形成MAC表项。最后说点个人体会。端口安全这套东西配置本身不难难的是边界判断哪些口该开、哪些口绝对不能开必须结合每个工位的实际使用习惯来定。我自己的习惯是分三档管理——固定终端口开sticky加restrict公共区域口只限数量不开sticky上行口和服务器口不做端口安全靠ACL和防火墙管。具体到你们公司可以先从最容易出问题的工位下手跑一周看日志再推广全公司。MAC地址和端口安全说到底是接入层治理的一小部分但管好了能替你挡掉大量看起来玄乎的网络故障这也是我个人一直在用的交付方式希望对你有用。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →