网络分层排查链路
一、物理层。排查目的从最基础的物理层开始排查物理层不通上层排查就没有意义。1、确认网卡、网线是等硬件是否正常工作。举例下方是插好线并且可以正常连接的网口。看flag标志UP表示网卡激活状态RUNNING表示网卡有物理连接还有一种命令查看是否有物理连接 ethtool 网口BROADCAST表示支持广播MULTICAST表示支持组播。2、检查网卡指示灯和交换机口是否正常。3、ping 127.0.0.1。操作系统在启动时会默认创建一个虚拟网卡lo并分配给它 127.0.0.1 这个地址这个网卡是纯软件模拟的不需要任何物理硬件网卡、网线支持。只要是运行着标准TCP/IP协议的操作系统Windows、Linux、macOS等ping 127.0.0.1 必须通。如果不通说明操作系统底层的网络协议栈TCP/IP 核心驱动已经崩溃或损坏之后只能重启服务器或者重装系统来解决问题了。二、网络层。排查目的确认网关和外网的连通性定位延迟、丢包和路由路径问题。1、route -n查看所有路由信息。只能存在一个默认网关。2、ping 网关IP。不能出现丢包或者延迟尖刺。3、长时间测试。如果网关正常使用长时间测试ping -c 300 目标IP关注是否呀延时尖刺、丢包、延迟抖动是否大于1毫秒。4、arp -n。查看ARP表信息arp -n查看出来的物理地址只能对应一个网口IP。5、cpdump -i eno1 icmp 抓 ICMP 包。看包是再哪里被拦截。判断标准有来有回 路通没回复 路不通ping 网关IP排查验证实例1ping管理口网关路由存在尖刺延时并且丢包判断是没有唯一的默认路由其他路由占用了流量导致ssh登进去经常卡壳。[rootrac1 ~]# ping 172.27.0.1PING 172.27.0.1 (172.27.0.1) 56(84) bytes of data.64 bytes from 172.27.0.1: icmp_seq1 ttl255 time0.863 ms64 bytes from 172.27.0.1: icmp_seq2 ttl255 time0.919 ms64 bytes from 172.27.0.1: icmp_seq3 ttl255 time1523.11 ms ------延迟尖刺64 bytes from 172.27.0.1: icmp_seq4 ttl255 time0.859 ms64 bytes from 172.27.0.1: icmp_seq5 ttl255 time2.05 ms64 bytes from 172.27.0.1: icmp_seq6 ttl255 time1862.832 ms ------又一个延迟尖刺64 bytes from 172.27.0.1: icmp_seq7 ttl255 time0.865 ms--- 172.27.0.1 ping statistics ---14 packets transmitted, 14 received, 20% packet loss, time 100938ms ------20% packet loss存在丢包rtt min/avg/max/mdev 0.832/1.650/5.430/11111.310 ms -------延迟抖动1ms 说明网络不稳arp -n排查验证实例1同一台服务器上不同网口使用同一个IP。命令arp -n | grep 172.27.101.198之后存在两个物理地址。ether 14:18:77:70:ce:b1 C eno1 172.27.101.198ether 14:18:77:70:ce:b2 C eno2 172.27.101.198arp -n排查验证实例2不同服务器上不同网卡使用同一个IP针对其他同事使用和你一样的IP情况。命令arping -I eno1 172.27.101.198之后存在两个物理地址。60 bytes from 14:18:77:70:ce:b1 (172.27.101.198): index0 time0.123 ms60 bytes from 00:50:56:99:12:34 (172.27.101.198): index1 time0.145 ms三、传输层排查目的确认服务器是否可达定位中途的数据包情况。1、tcpdump进行数据抓端口包处理。判断标准三次握手成功 门开了收到 [R.] 门锁着无回复 有防火墙2、确认监听状态。[rootrac1 ~]# ss -tlnp | grep 22LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:((sshd,pid1876,fd6))分析a、LISTEN说明端口有在被监听并且0.0.0.0:22表示对所有访问者开放。b、如果显示127.0.0.1:22表示任何网口显示这个也是只能自己监听自己192.168.1.100:22表示在这个特定的网段才可以连接。c、若是没有输出就表示服务没有启动就不能ssh连接。d、如果显示0.0.0.0表示服务正常可能是防火墙的问题。四、应用层排查目的应用层排障目标就是确认“软件能不能正常干活”。不是看路通不通而是看“业务逻辑对不对”。应用层的排查是很灵活的目前经验总结有1、进程号 确认软件活着。ps aux | grep 服务名 │ │ → 有进程 没崩没进程 挂了先重启2、/var/log/messages 系统级报错的总入口。3、应用自己的日志如 /var/log/secure、/var/log/nginx/error.log 定位具体根因。应用层排障 日常看日志 查进程。第1层物理层网卡灯亮吗网线插了吗 ↓ 通了第2层网络层ping 网关通吗路由表对吗 ↓ 通了第3层传输层端口 LISTEN 吗三次握手成功吗 ↓ 通了第4层应用层应用进程在吗日志报错吗返回数据对吗 ↓ 正常 ?全部正常问题不在这台服务器上

相关新闻