从TCP/IP五层模型的角度来排查网络故障,通常涉及从物理层到应用层的逐步检查。
1. 物理层(Physical Layer)
职责: 传输原始的比特流(如电缆、光纤、无线信号等)。
排查工具和步骤:
- 物理检查: 检查网线、电缆、光纤是否连接良好,是否存在断裂或损坏、光模块收发是否正确
- 测试工具: 使用线缆测试仪(如Fluke)来检测线缆问题
- 硬件自检: 检查网络设备的指示灯状态
2. 数据链路层(Data Link Layer)
职责: 数据帧的传输与接收,错误检测和修复(如MAC地址,交换机的工作)
故障类型: VLAN接口模式、VLAN tag是否正确、STP选举阻塞、LACP(链路聚合的协商)、bond等
排查工具和步骤:
- ifconfig/ip a命令: 查看网络接口的MAC地址,确认网卡正常工作。
- ethtool: 检查网卡的物理连接状态和链路层属性。
- cat /proc/net/bonding/bond0 查看Linux中的bond状态
3. 网络层(Network Layer)
职责: 数据包的路由与转发(如IP地址的管理、路由协议的运行)。
故障类型: IP地址冲突、不正确的路由表配置、子网划分错误、路由器故障、MTU值(VxLAN、GRE等网络)
排查工具和步骤:
- ifconfig/ping /tcping(windows)命令: 测试网络层的连通性,逐级ping目标设备,排查具体的网络问题。
- traceroute/tracert(windows)命令: 跟踪数据包路径,确定在哪一跳出现了问题。
- ip route/route命令: 查看和修改路由表,确保数据包的路由路径正确
- nmcli工具查看网卡配置文件链接等
- sysctl查看内核参数,路由转发是否开启。端口转发是否开启
4. 传输层(Transport Layer)
职责: 提供端到端的通信,保证数据传输的可靠性(如TCP/UDP)。
故障类型: 端口阻塞、防火墙规则错误、TCP连接超时、拥塞控制问题。
排查工具和步骤:
- netstat/ss命令: 查看当前系统的TCP/UDP连接状态,检查是否有异常连接。
- telnet/nc (netcat)/工具: 测试特定端口的连通性,验证服务是否可达。
- iptables/firewalld: 检查防火墙规则,确保合法的TCP/UDP流量不会被阻挡。
- tcpdump/Wireshark: 抓包分析传输层的数据包,诊断TCP三次握手失败或连接中断等问题。
5. 应用层(Application Layer)
职责: 提供网络服务,如HTTP、FTP、DNS等。
故障类型: 服务未启动、应用程序错误、配置文件错误、端口占用。
排查工具和步骤:
- systemctl/service命令: 检查和管理网络服务的状态,确保服务正常运行。
- journal/tail 日志分析: 检查应用层服务的日志文件(如/var/log目录下的日志),分析是否有错误信息。
- curl/wget工具: 测试HTTP/HTTPS服务的连通性,确保Web服务正常工作。
- DNS工具: 使用nslookup或dig排查DNS解析问题,确保域名解析正常
- selinux等,分析selinux对应日志
- 查看进程 ps/top 是否在正确的状态
其他工具:
- debug、抓包工具(wireshark、tcpdump)