CentOS8清空arp缓存后仍无法连通网关下一步
机器刚执行完ip neigh flush all,网关依旧 ping 不通,很多人卡在这一步。别急着重启,先确认下面几件事,九成问题都能定位。

先确认“清空”到底有没有生效
终端再跑一条ip neigh show,如果列表里还有网关的 MAC,说明缓存根本没掉——CentOS8 的 NetworkManager 会在 flush 后立刻重新发 ARP 请求,只要链路有回应,表项秒回。真想锁死,可临时systemctl stop NetworkManager再清一次,看网关是否现身。
链路灯亮≠网线通
ethtool eth0 查看 Speed/Duplex,如果显示“Link detected: no”,换根线或换个交换机口再说。见过太多“灯亮却协商失败”的诡异案例,清一宿 ARP 也白搭。
IP 配错了,ARP 当然收不到回包
ip addr核对网卡地址与网关是否在同一网段。比如网关写 192.168.10.1,本机却拿到 192.168.20.100/24,协议栈直接走默认路由,ARP 根本不发。改完地址记得nmcli connection up让配置落地。

网关 MAC 被静态绑错
有人图省事,以前写死了ip neigh add 192.168.10.1 lladdr xx:xx:xx:xx:xx:xx dev eth0 nud permanent。flush 清不掉永久项,ip neigh del 192.168.10.1 dev eth0手工删掉再 ping。若公司做了批量静态绑定,去交换机核对 MAC 是否被漂移,别在服务器端死磕。
本地防火墙把 ARP 当垃圾扔
CentOS8 默认 nftables,规则里若写了arp drop,或者 ebtables 在桥层拦截,清空缓存后重新请求直接被拒。临时nft list ruleset | grep arp,有 hit 就放行:nft insert rule ip filter INPUT arp saddr ip counter accept。
交换机开 Port-Security 锁 MAC
端口学到新 MAC 直接 shutdown,服务器端表现为“ARP 发出去没人回”。让网络同事查交换机日志,是否出现 “Port Security violation”。临时把端口 reset,或让运维把你的 MAC 加入白名单。

VLAN 标签丢了
机器网卡没配 VLAN,但交换机端口是 trunk,网关其实在 VLAN10。CentOS8 端收不到 ARP 回包,抓包只能看到自己的 who-has 孤零零往外飘。建子接口:nmcli con add type vlan ifname eth0.10 dev eth0 id 10 ip4 192.168.10.102/24 gw4 192.168.10.1,再测。
网关本身就不在线
拿台同网段笔记本直连核心交换机,ping 网关地址。如果笔记本也扑街,问题甩给上层设备,服务器端再怎么清 ARP 都是无用功。让值班同事看防火墙或核心是否挂了 VRRP 切换。
临时绕路验证法
给服务器再加一条静态 ARP:ip neigh add 192.168.10.1 lladdr 正确的MAC dev eth0 nud permanent,能立刻 ping 通,则证明链路、路由、防火墙都没毛病,就是 ARP 学不到。继续往“谁不回应”方向追。
一键排查脚本
#!/bin/bash
echo === 链路 ===
ethtool eth0 | grep -E 'Link detected|Speed'
echo === 地址 ===
ip -4 addr show eth0
echo === 路由 ===
ip route | grep default
echo === ARP 表 ===
ip neigh show | grep 192.168.10.1
echo === 防火墙 ===
nft list ruleset | grep -i arp
echo === 抓包 5 秒 ===
timeout 5 tcpdump -i eth0 -nn arp host 192.168.10.1
跑完脚本,哪一行空输出就重点啃哪一块,基本十分钟内能锁死故障点。
总结步骤
清缓存只是排障起手式,后面跟着“链路→地址→路由→ARP→防火墙→交换机”一路往下捋。别迷信重启,先拿数据说话,九成网络断连都能在上述环节找到答案。

