linux網絡測試(必會)


一、網絡及服務故障的排查思路:

 例:假如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"進行非字邊界匹配)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM