Linux网络问题排查

  • 一、网络不通
    • 1. 链路是否连通
    • 2. 网卡是否正常启用
    • 3. 是否正确设置网关
    • 4. DNS工作状况
    • 5. 是否可以正常路由到远程主机
    • 6. 远程主机是否开放端口
    • 7. 本机查看监听端口
    • 8. 查看防火墙规则
  • 二、网络速度慢
  • 三、网络排查思路

一、网络不通

如果是网络不通,要定位具体的问题,一般是不断尝试排除不可能故障的地方,最终定位问题根源。一般需要查看

是否接入到链路    ethtool  eth0
是否启用了相应的网卡   ifconfig  eth1
本地网络是否连接   route  -n查看gateway网关,然后再ping  网关
DNS故障    nslookup   域名/ip
能否路由到目标主机    traceroute www.baidu.com
远程端口是否开放    nmap -p 22  220.181.111.188
本机查看监听端口   netstat -lnp | grep 端口号
查看防火墙规则   iptables -L  或  SELinux

一般来说当存在网络不通的故障时,访问出端和入端的信息是我们都要收集的,目的在于确定问题所在的主机或者区段。假如a不能访问c而b能够访问c,那么很明显问题出在a或a到c的网络上,而通过同一子网中的几台机器a、b可以正常访问网络,却不能访问c,那么可能是这个网络到c存在问题,或c存在问题。
  定位了问题所在的主机,一般有一些步骤来逐渐缩小问题范围,最终定位问题:

1. 链路是否连通

即检查网卡与网络是否物理连通,网线是否插好且连接可用,很多时候不能立刻到机房确定物理连接,可以用命令:

ethtool ethN    #ehtN是连接到故障网络的网卡

例1:使用ethtool 查看 ens33 的物理连接

  其中,speed显示了当前网卡的速度,这是一个千兆网卡;Duplex显示了当前网络支持全双工;Link detected显示当前网卡和网络的物理连接正常。通常网速和全/半双工状态是主机和网络协议商自动协商的,例如这里第8行的 auto-negotiation。如果发现15行的双工被设置成了Half,可以手动将其改为全双工网络:

# ethtool -s ens33 autoneg off duplex full

2. 网卡是否正常启用

一般网络物理连接故障的情况并不多见,当排除物理连接上的问题后,需要进一步查看网卡的工作状态。
例2:使用ifconfig命令检查网卡ens33状态

  例2第3行的信息显示了对该网卡的配置,包括IP,子网掩码等,这里可以检查是否出现错配,如果这一行显示不正确,那一定是网卡没有正确配置开启。
网络收发的字节数、包数、错误数以及丢包情况,特别是 TX 和 RX 部分的 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,通常表示出现了网络 I/O 问题。其中:
errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;
overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包;
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
collisions 表示碰撞数据包数。

3. 是否正确设置网关

如果网卡已经正常启动,需要确认目标网络接口是否正确配置网关,同时主机和网关之间的连接没有问题,通过route命令和ping命令结合完成这一阶段的排查。
例3 使用route 命令查看内核路由表

  route -n 以IP而不是主机名的形式显示网关等信息,一方面更快,另一方面不涉及DNS,通过route命令查看内核路由,检验具体的网卡是否连接到目标网路的路由,之后就可以尝试ping 网关,排查与网关之间的连接。
  如果无法ping通网关,可能是网关限制了ICMP数据包,或者交换机设置的问题。

4. DNS工作状况

通常很多网络问题是DNS故障或配置不当造成的,nslookup和dig命令能够用来排查DNS问题。
例4. 使用nslookup命令查看DNS解析

  这里的DNS服务器 192.168.20.2位于当前局域网内,nslookup的结果显示DNS工作正常。如果这里nslookup命令无法解析目标域名,则很有可能是DNS配置不当,到/etc/resolv.conf文件中查看是否存在域名服务器的配置:
  
例5 及时生效的DNS配置——/etc/resolv.conf文件

  /etc/resolv.conf文件是临时即刻生效的DNS服务器配置。
  如果我们的DNS服务器在一个子网内,而无法ping通它,这个DNS服务器很可能已经宕机。

5. 是否可以正常路由到远程主机

互联网是通过大量路由器中继连接起来的,网络的访问就是在这些节点间一跳一跳最终到达目的地,想要查看网络连接,最直接最常用的命令是ping,ping得通,说明路由工作正常,但是如果ping不通,traceroute命令可以查看从当前主机到目标主机的全部“跳”的过程。traceroute和ping命令都是使用ICMP协议包。

例7. 使用traceroute追踪路由状况

 traceroute可以查看网络中继在哪里中断或者网络延时情况,“*” 是因为网络不通或者某个网关限制了ICMP协议包。

6. 远程主机是否开放端口

telnet命令是检查端口开放情况的利器,或者nmap工具,

centos7中需先安装telnet命令
yum list telnet*              列出telnet相关的安装包
yum install telnet-server          安装telnet服务
yum install telnet.*           安装telnet客户端

例8. 使用telnet检测远程主机的端口开放情况

  telnet IP PORT,可以查看指定远程主机是否开放目标端口,这里百度的前端服务器开放80端口是网页服务必须的。
  但是telnet 命令的功能非常有限,当防火墙存在时,就不能很好地显示结果,所以telnet无法连接包含两种可能:1是端口确实没有开放,2是防火墙过滤了连接。
 
例如我们尝试 telnet 连接百度前端服务器的 22 端口:

  无法继续进行,但是我们无法判断究竟是端口没有开放,还是被防火墙给拦截了,这时使用nmap工具将更加强大:
例9. 使用nmap工具检测端口开放情况

  同样的服务器,使用nmap检测,观察到第7行,说明实际上该服务器是启用了22端口的,但是防火墙过滤了数据包,如果端口真的没有启用,那么第7行的STATE将显示closed,而不是filtered。开放的端口其状态将是open。
  这时就可以了解,端口无法连接的原因是端口关闭还是防火墙过滤了。

7. 本机查看监听端口

如果要在本地查看某个端口是否开放,可以使用如下命令:

# netstat -lnp | grep PORT

其中,参数:
-l,显示正在监听的套接字
-p,显示套接字所属的进程ID和进程名
-n,以数字形式显示地址

例10. 查看本地指定端口的监听情况

# netstat -lnp | grep :11211
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.0.0.11:11211         0.0.0.0:*               LISTEN      28911/memcached
udp        0      0 10.0.0.11:11211         0.0.0.0:*                           28911/memcached

例10以memcached服务为例,查看当前活动端口监听的网络,如果netstat找不到指定的端口,说明没有进程在监听指定端口。
  其中第一列是套接字通信协议,第2列和第3列显示的是接收和发送队列,第4列是主机监听的本地地址,反映了该套接字监听的网络;第6列显示当前套接字的状态,最后一列显示打开端口的进程。

8. 查看防火墙规则

使用 iptables -L 命令查看当前主机的防火墙。

二、网络速度慢

一般有以下几个方式定位问题源:

DNS是否是问题的源头: dig 或  nslookup
查看路由过程中哪些节点是瓶颈:traceroute  查看网络中每一跳的延时,定位延时最高的网络区段
查看带宽的使用情况:iftop 查看哪些网络连接占用的带宽较多
使用命令tcpdump

三、网络排查思路

  1. 网卡是否工作,包括硬件和驱动:lspci,dmesg
  2. IP参数是否正确设置:ifconfig
  3. 局域网内通信是否正常:ping
  4. 路由信息是否正常:route -n
  5. DNS状态:dig, nslookup
  6. 路由节点状况与延时:traceroute
  7. 服务监听端口:netstat -lnp
  8. 防火墙:iptables, SELinux

Linux网络问题排查相关推荐

  1. Linux网络延迟排查方法

    在 Linux 服务器中,可以通过内核调优.DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响.在应用程序中,可以使用各级缓存.WAF.CDN 等来缓解 DDo ...

  2. Linux 网络延迟排查方法

    该文来自公众号:程序员老鬼 在 Linux 服务器中,可以通过内核调优.DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响.在应用程序中,可以使用各级缓存.WA ...

  3. Linux网络故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)

    目录 ifconfig -s,显示网卡信息的精简列表 -a.up.down 将IP地址绑定到某个网卡,以及解绑操作 ping telnet netstat lsof nc 模拟一个服务器程序和客户端程 ...

  4. Linux网络故障排查

    1.网卡工具,服务器有多个网卡并且已经配置好运行当中,你却没记得eth0.eth1.eth2-分别对应的是哪个物理的网卡,此时可以使用如下命令: ethtool eth0 此时就会看到 eth0 对应 ...

  5. linux排查网络问题,Linux网络问题排查(未完待续)

    最近在做的实验,需要同时保持大量的TCP连接,大概在3K的连接数,但是会在一些时刻突然有大量连接断开,等发现的时候也很难排查原因. 主要考虑有三方面的原因,1是网络,2是内存CPU,3是实验本身的代码 ...

  6. Linux网络异常排查手段

    网络不通常用工具:ping.mtr.nmap.telnet.curl 域名IP服务器解析工具:nslookup. dig 1.ping 启动方式及解释: ]# ping -c3 www.baidu.c ...

  7. linux服务器无网络确认,Linux服务器故障排查实用指南

    [2013年3月25日 51CTO外电头条]由于造成网络问题的因素多种多样,因此网络故障排查技能就成了每位服务器或网络服务负责人必不可少的重要素质.Linux为我们提供了大量网络故障排查工具,在本文中 ...

  8. linux使用running网卡ping,Linux CentOS 7 IP地址配置及网络问题排查

    一.Linux CentOS 7 IP地址配置 输入命令"ifconfig" 查看本机IP地址.[[email protected] ~]# ifconfig ens33: fla ...

  9. linux服务器网络不稳定,Linux服务器故障排查指南7:网络缓慢状况

    网络缓慢状况的故障排查 从某种角度来说,网络无法工作的问题更容易解决.当一台主机无法访问,我们可以执行前面讨论过的故障排查步骤直到一切恢复正常.但如果仅仅是网络缓慢,追查其根本原因往往变得更为棘手.本 ...

  10. Linux网络包接收过程的监控与调优

    Linux内核对网络包的接收过程大致可以分为接收到RingBuffer.硬中断处理.ksoftirqd软中断处理几个过程.其中在ksoftirqd软中断处理中,把数据包从RingBuffer中摘下来, ...

最新文章

  1. MFC按钮添加提示文字
  2. Android之解析Android Map地图返回的Json数据
  3. NAC网络访问控制,你需要知道的!
  4. 接口重复提交解决方案
  5. Selenium2+Python自动化-处理浏览器弹窗(转载)
  6. 网易=4 ×(新浪 + 搜狐)
  7. BTA 2018 区块链核心技术专场:12 位专家全方位剖析区块链核心技术原理与业务实践
  8. 如何修改macOS文件的默认打开方式?
  9. 微软面试智力题 (附答案)
  10. 简单实现图片转彩色字符画
  11. JAVA 2048源码_java实现2048游戏源代码
  12. 第三方支付的流程分析与总结
  13. android dlna uri,android DLNA投屏
  14. Android 手写签名 (图片合成)
  15. 宋朝历史衰败原因大揭秘
  16. 血仍未冷——写在37岁生日
  17. 发布一个iPhone版“远程桌面”
  18. java实现客户端 与服务端的对话_Socket实现单客户端与服务器对话功能
  19. 新的一年软件测试行业的趋势能够更好?
  20. JAVA程序设计:买卖股票的最佳时机含手续费(LeetCode:714)

热门文章

  1. php开发公众号 token验证失败 其中一个原因
  2. Win11 U盘驱动异常怎么调整为正常?
  3. 程序员英语 - 读音
  4. 服务器架设无限流量,云服务器架设无限流量
  5. html+css+js制作520表白网页,全屏的爱心和表白语网页动画代码,浪漫的520爱心表白动画特效。...
  6. 网络拓扑学习之SLB
  7. 没有ftp信息服务器,电脑没有ftp服务器配置
  8. 【看看这长尾效应】长尾效应综述
  9. 微信小程序开发——最新网络流行语(前言)
  10. 光猫DNS服务器未响应,有光纤猫了还要猫吗?