linux网络测试(必会)

时间:2024-02-15 17:25:42

一、网络及服务故障的排查思路:

 例:假如http://www.cnblogs.com/zhuji/网址打不开

  第一步:查一下路径通不通

    ping -c3 -i2 -s512 www.cnblogs.com icmp 协议是否禁止

    -c:次数   -i:时间间隔    -s:发包大小

    tranceroute www.cnblogs.com       查看各个节点是否畅通

    telnet www.blogs.com 80     检查服务器web有没有开启,服务开没开,以及防火墙有没有挡住。

                 如果命令卡在第一行表示不通,卡在第二行表示通。

    综上,如果不通:

      1.80服务没开或端口不存在。

      2.服务被防火墙挡住了。

      3.服务监听的端口不在连接的IP上。(连接被限定了IP)

       例:#netstat -lntup | grep ssh

          0.0.0.0表示任意的IP地址都可以连接我的端口,也就是说我的服务并没有限制访问的IP;

          如果是192.168.1.0:22则只限定了192.168.1.0的网段才能够ssh连接我的端口。

      4.运营商默认不开,申请开端口。

二、如果局域网的某个机器无法上网

  1.单机器无法上网

   (1)ping www.baidu.com

      如果通,但不能上网,可能是浏览器,中毒等问题。

   (2)ping 网关(目的是排除物理链路的问题)

  •   如果ping网关不通,则查看IP设置,然后ping自身IP或ping网关内其他机器IP;如果ping自身不通,检查网卡驱动,IP设置,物理链路。
  •        如果ping网关通,则检查DNS的设置是否正确,pingDNS地址看看通不通,或者nslookup看看公网的域名解析是否正常。

   (3)上网的路由器及ISP线路问题

           (4)辅助排查:IP地址冲突,ARP病毒,交换机环路,核心交换机是否损坏,看看其他人能否上网。

  2.大面积不能上网

    路由器,ISP,交换机环路,核心交换机,ARP病毒。

三、客户端打开的网站慢,如何排查?

  (一)用户个例还是全部如此,如果全部如此,那么:

   (1)道路是否畅通的问题

  •  ping网站地址看看通不通

      如果能ping通,不丢包,就是服务器有问题(服务器宕机或过载)

    如果能ping通,但丢包,就是机房问题(带宽不稳定,各个线路不稳定)

    如果ping不通,那么ping百度看看,通不通,不通就是机房问题

  •     路由追踪,看看从客户端到服务器的线路节点是否有问题:

      traceroute -d (Linux)

      tracert -d (windows)

      -d:禁止反向解析(速度快)

   (2)机房业务是否OK

  •    telnet www.baidu.com 80       检查服务器有没有开启以及防火墙有没有挡住

             nmap www.baidu.com -p 80      扫描端口

        curl www.baidu.com 或 wget www.baidu.com

  •   提供服务的服务器是否资源过载,服务器及服务连接数过多,负载高,CPU高,IO高等。

   (3)外部问题

  •   网站购买的带宽满了,通过流量监控服务查看
  •   内链外链(调用外部网站网址有问题)根据网站URL调试网站

      a、Google浏览器直接按F12

      b、火狐 fire bug等

     【没有错误,只是有点警告】

     【有错误,让开发看看是不是错误导致的】

   (4)集群架构问题

  •   web服务器问题
  •        数据库问题
  •        登录数据库看看是否有慢查询语句:show proceslist 调整MySQL配置,优化SQL语句
  •        存储等问题
  •        是不是存储服务器,如NFS、MFS的负载及磁盘IO高

四、合格的Linux运维必会

  1.TCP/IP协议三次握手和四次断开的过程

  2.http协议的工作原理

   1)地址解析

    如客户端浏览:http://zhuji:8080/index.html

      协议名:http         主机名:zhuji        端口:8080          对象路径:/index.html

    在这一步需要域名系统DNS解析域名zhuji.com 得到主机的IP地址。

      2)封装HTTP请求数据包、

    把第一步的解析结果在结合自己本机的信息,封装成一个HTTP请求数据包。

      3)封装成TCP包,建立TCP连接

    TCP的三次握手

      4)客户机发送请求命令

    建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符,客户机信息许可内容。

      5)服务器响应

  •     服务器接到请求后,给予相应的响应信息,格式为一个状态行,包括信息的协议版本号,一个成功或错误的代码,后边是MIME信息包括服务信息,实体信息和可能的内容。
  •     实体消息是服务器向浏览器发送头部信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据.

      6)服务器关闭TCP连接

    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:Keep-alive。TCP连接在发送后将                              仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立连接所需要的时间,还节约了网络带宽。

  3.机器无法上网(详见上方)

  4.网站打开慢(详见上方)

  5.DNS解析原理

            

 

  1. 在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
  2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该*域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面动作,进行查询,直至找到www.qq.com主机。
  6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转发请求转至上上级,以此循环。不管是本地DNS服务器用的是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

  6.OSI七层网络模型

              

 

  7.route如何添加一个网络路由

   添加到主机的路由:

     # route add –host 192.168.1.10 dev eth0

     # route add –host 192.168.1.10 gw 192.168.1.1

   添加到网络的路由:

     # route add –net 192.168.1.0  netmask 255.255.255.0 eth0

     # route add –net 192.168.1.0  netmask 255.255.255.0 gw 192.168.1.1

     # route add –net 192.168.1.0/24 eth1

   添加默认网关:

     # route add default gw 192.168.1.1

   删除路由:

     # route del –host 192.168.1.10 dev eth0

   添加永久路由方法: 

     方法一:

      # vi /etc/rc.local(添加到末尾)

      语句: route add -net 192.168.3.0/24 dev eth0

         route add -net 192.168.2.0/24 gw 192.168.2.254

     方法二:

      # vi /etc/sysconfig/network (添加到末尾)

      语句:GATEWAY=gw-ip 或者 GATEWAY=gw-dev

     方法三:

      # vi /etc/sysconfig/static-routes (没有static-routes的话就手动建立一个这样的文件)

      语句:any net 192.168.3.0/24 gw 192.168.3.254

         any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129

     方法四:

      开启 IP 转发:# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)

            # vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)

  8.如何查看已知端口对应的服务名:

    根据端口号查找对应的服务名

      1)grep -w 端口号 /etc/services

      2)grep "\b端口号\b" /etc/services

    根据服务名查找对应的端口号

      1)grep -w 服务名 /etc/services

      2)grep "\b服务名\b" /etc/services

    其中-w表示只显示全字符合的列,即精确匹配;"\b"表示匹配一个字边界,即字与空格间的位置。例如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”(若匹配“verb”中的“er”可                                                使用"\B"进行非字边界匹配)。