作为一个在运维领域摸爬滚打了多年的老兵,大家在碰到“网络不通”这种情况的时候,是不是总习惯于随手敲一个ping命令然后就开始进行盲猜?
借此机会来跟大家分享一下我这几年的排障核心思路:先别盲目地去尝试各种命令,而是要先判断一下问题究竟出在哪一个层级的上面。
我通常都会去遵循一个从下到上的闭环排查路径:
第一层先从网卡和IP的层面开始看起,重点去确认一下ip -br link当中是不是出现UP和LOWER_UP的状态,以及有没有拿到正确的IPv4地址;
第二层则是路由与网关,借助ip route get去验证数据包是不是知道应该往哪个方向去走,并且同时对邻居表开展检查的工作;
第三层是DNS,如果IP能够ping通的话就优先去对解析进行排查,利用dig来区分到底是NXDOMAIN还是出现了超时的情况;
第四层是端口和服务,用ss -lntp去检查一下是不是监听在了0.0.0.0上面而不是仅仅局限于本机,并且结合防火墙和nc来进行验证;
最后一层就是利用tcpdump去进行抓包的动作,通过流量的实际情况来说话,比如说看看有没有SYN包或者是RST包出现。
记住这句核心判断:ping通 ≠ 端口通,端口通 ≠ 应用正常。按层排查,效率绝对翻倍~