linux經常使用http測試命令以及網絡排錯命令總結

#一.http調試命令curl ##1.curl簡介 curl全稱爲commandline uniform resource locator,根據名稱能夠看出curl 命令是在命令行方式下工做的,利用url的語法進行數據的傳輸或文件的傳輸。 更多信息的瞭解,請參考curl的官方網站:https://curl.haxx.se/ 根據官方介紹能夠知道,curl 支持30多種類型的傳輸方式,例如:DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP三、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTPS、HTTP POST、HTTP PUT、FTP上傳、基於HTTP表單的上傳、代理、HTTP / 二、Cookie、用戶+口令認證(Basic、Primor、摘要、CRAM-MD五、NTLM、協商和Kerberos)、文件傳輸恢復、代理隧道等。咱們經常使用的也就是FILE、FTP、HTTP、HTTPS等協議。 ##2.curl典型應用 ####1)僅顯示headert頭信息 經過curl的「-I」參數能夠獲取指定網站的header頭信息,這些是運維人員所須要的重要信息。html

[root@m01 ~]# curl -I www.qianzhigang.top
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Thu, 07 Nov 2019 07:30:49 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: https://www.qianzhigang.top

####2)使用curl實現URL重定向(這裏主要測試設置了重定向的連接) 默認狀況下curl是不會發送http重定向請求,須要使用「-L」參數來實現。當一個被請求的頁面被重定向到另外一個站點上時,就會發送一個http location header做爲請求,而後將請求重定向到新的地址上。最終顯示會有兩個部分,例如:這裏訪問http://www.qianzhigang.top時,會將地址臨時重定向到https://www.qianzhigang.top上(這裏設置的強制https跳轉)linux

[root@m01 ~]# curl -L -I www.qianzhigang.top
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Thu, 07 Nov 2019 07:52:35 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: https://www.qianzhigang.top

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Nov 2019 07:52:35 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: PHPSESSID=bf02e189b60e5e98a48f201369936ca5; path=/
Link: <https://www.qianzhigang.top/wp-json/>; rel="https://api.w.org/"

####3)使用curl獲取http的狀態碼 http狀態碼的獲取對運維人員來講很重要,在對web進行監控的時候,咱們會經過獲取的http的狀態碼來斷定網頁的是否異常,若是返回的http狀態碼不是200,咱們默認這個網頁的訪問時異常的,獲取狀態以前使用curl加參數"-I"也是能夠查看到的,這裏有更好的參數組合來操做獲取,使用「-s」、「-o」、「-w」參數的組合來實現。說明:這裏設置了302臨時跳轉,因此測試使用百度的連接地址nginx

[root@m01 ~]# curl -s -o /dev/null -w%{http_code}"\n" http://www.baidu.com
200

參數說明: -s #表示安靜模式,不輸出錯誤,或者修改進度條。 -o #表示指定結果輸出到你某個文件中保存,不指定的話默認是輸出到終端。 -w #表示輸出的一些定義的元數據,這裏輸出的事%{http_code},除此以外還有http_connect、time_total、time_connect、time_appconnect、time_redirect、size_download、size_upload、content_type、ssl_varify_result等變量可提供選擇。輸出變量須要按照%{variable_name}的格式。 「\n」 #表示換行 在測試一下以前的連接加入更多變量web

[root@m01 ~]# curl -s -o /dev/null -w%{:http_code}" "%{time_total}" "%{redirect_url}"\n" http://www.qianzhigang.top
302 0.085 https://www.qianzhigang.top 
注意: " "引號中間有空格

####4)下載網頁內容保存到本地shell

-O #該參數使用url中默認的文件名保存文件到本地
[root@m01 ~]# curl -O https://www.qianzhigang.com/archives/880.html
-o #該參數將文件保存爲命令行中默認的文件名保存文件到本地
[root@m01 ~]# curl -o test.html https://www.qianzhigang.com/archives/880.html

#二.linux經常使用網絡命令 ##1.網絡管理命令 ####1)最多見的命令pingjson

ping命令主要的功能是用來檢測網絡的連通狀況和分析網絡速度。

#經常使用選項

    -t      #持續ping,不中斷。不加該選項只ping4個包。
    -c      #ping的包數,默認是4個。
    -W      #多長時間ping一次。
    -f      #極速ping。

####2)網絡中的瑞士軍刀nc\netcat命令api

nc是netcat的簡寫,有着網絡界的瑞士軍刀美譽。由於它短小精悍、功能實用,被設計爲一個簡單、可靠的網絡工具

#經常使用選項

     -l     #用於指定nc將處於偵聽模式。
     -u     #指定nc使用UDP協議,默認爲TCP
     -v     #輸出交互或出錯信息,新手調試時尤其有用
     -w     #超時秒數,後面跟數字 
     -z     #表示zero,表示掃描時不發送任何數據

####3)nmap嗅探工具數組

Nmap即網絡映射器對Linux系統/網絡管理員來講是一個開源且很是通用的工具。Nmap用於在遠程機器上探測網絡,執行安全掃描,網絡審計和搜尋開放端口。

#經常使用選項

    -p          #指定端口號
    -p22        #單個端口
    -p22,80     #多個端口
    -p1-1000    #1到1000之間的端口

####4)telnet安全

一種遠程登陸的工具。一樣能夠檢查某個主機是否開啓某個端口

#用法
    
[C:\~]$ telnet 10.0.0.99 22


Connecting to 10.0.0.99:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4

####5)netstat服務器

打印網絡鏈接、路由表、tcp11種狀態。

#經常使用選項
    -l      #只顯示監聽套接字。
    -n      #不作名字解析
    -t      #顯示tcp端口
    -u      #顯示udp端口
    -p      #顯示pid和程序名字
    -r      #顯示路由表
    -a      #顯示全部的套接字

####6)ss

跟netstat命令差很少。

#經常使用選項
    -l      #只顯示監聽套接字。
    -n      #不作名字解析
    -t      #顯示tcp端口
    -u      #顯示udp端口
    -p      #顯示pid和程序名字
    -r      #解析主機名
    -a      #顯示全部的套接字

####7)iftop

iftop界面說明:

界面上面顯示的是相似刻度尺的刻度範圍,爲顯示流量圖形的長條做標尺用的。

中間的<= =>這兩個左右箭頭,表示的是流量的方向。

TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峯值
rates:分別表示過去 2s 10s 40s 的平均流量

#經常使用選項

-i      #設定監測的網卡

-B      #以bytes爲單位顯示流量(默認是bits)

-n      #使host信息默認直接都顯示IP

-P      #使host信息及端口信息默認就都顯示

-m      #設置界面最上邊的刻度的最大值,刻度分五個大段顯示

按q退出監控。

#三.網絡故障排除工具 ##1.抓包工具 抓包方式:wireshark抓包軟件在Windows中使用 Linux抓包命令tcpdump是一個抓包工具,用於抓取互聯網上傳輸的數據包

tcpdump是一個用於截取網絡分組,並輸出分組內容的工具。憑藉強大的功能和靈活的截取策略,使其成爲類UNIX系統下用於網絡分析和問題排查的首選工具
    tcpdump 支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息
    
#經常使用選項

-i       監聽哪個網卡 
-n       不把ip解析成主機名
-nn      不把端口解析成應用層協議
-c       指定抓包的數量
-S       不把隨機序列和確認序列解析成絕對值
-w       將流量保存到文件中,文件中的信息是沒法直接查看的
-r       讀取文件中的內容
-v       輸出一個稍微詳細的信息,例如在ip包中能夠包括ttl和服務類型的信息。 
-vv      輸出詳細的報文信息。

#實例

一、默認啓動

tcpdump -vv     #普通狀況下,直接啓動tcpdump將監視第一個網絡接口上全部流過的數據包。

二、過濾主機

tcpdump -i eth1 host 192.168.1.1        #抓取全部通過eth1,目的或源地址是192.168.1.1的網絡數據

tcpdump -i eth1 src host 192.168.1.1    #指定源地址,192.168.1.1

tcpdump -i eth1 dst host 192.168.1.1    #指定目的地址,192.168.1.1

三、過濾端口

tcpdump -i eth1 port 80         #抓取全部通過eth1,目的或源端口是80的網絡數據

tcpdump -i eth1 src port 80     #指定源端口

tcpdump -i eth1 dst port 80     #指定目的端口

四、協議過濾

tcpdump -i eth1 arp

tcpdump -i eth1 ip

tcpdump -i eth1 tcp

tcpdump -i eth1 udp

tcpdump -i eth1 icmp

#抓tcp某端口的數據包

tcpdump -i eth0 tcp port 21 -nn

五、經常使用表達式

非 : ! or "not" (去掉雙引號) 

且 : && or "and" 

或 : || or "or"

#抓取全部通過eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP數

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

#抓取全部通過eth1,目標MAC地址是00:01:02:03:04:05的ICMP數據

tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

#抓取全部通過eth1,目的網絡是192.168,但目的主機不是192.168.1.200的TCP數據

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

##2)連通性測試工具mtr

####MTR基本原理

MTR(My traceroute)是幾乎全部Linux發行版本預裝的網絡測試工具,此工具也有對應的Windows版本,名稱爲WinMTR。

WinMTR的官方網站也提供下載,具體下載下載連接爲:點擊這裏下載

MTR工具將ping和traceroute命令的功能併入了同一個工具中,實現更強大的功能。

Linux版本的mtr命令默認發送ICMP數據包進行鏈路探測。能夠經過「-u」參數來指定使用UDP數據包用於探測。

相對於traceroute命令只會作一次鏈路跟蹤測試,mtr命令會對鏈路上的相關節點作持續探測並給出相應的統計信息。因此,mtr命令能避免節點波動對測試結果的影響,因此其測試結果更正確,建議優先使用。

MTR 使用方法

在Linux系統上使用

用法說明:

mtr [-hvrctglspni46] [-help] [-version] [-report] [-report-cycles=COUNT] [-curses] [-gtk] [-raw] [-split] [-no-dns] [-address interface] [-psize=bytes/-s bytes] [-interval=SECONDS] HOSTNAME [PACKETSIZE]

示例輸出:

常見可選參數說明:

  • -r 或 -report:以報告模式顯示輸出。

  • -p 或 -split:將每次追蹤的結果分別列出來,而非如「-report」統計整個結果。

  • -s 或 -psize:指定ping數據包的大小。

  • -n 或 -no-dns:不對IP地址作域名反解析。

  • -a 或 -address:設置發送數據包的IP地址。用於主機有多個IP時。

  • -4:只使用IPv4協議。

  • -6:只使用IPv6協議。

  • 另外,也能夠在mtr命令運行過程當中,輸入相應字母來快速切換模式。

  • ?或 h:顯示幫助菜單。

  • d:切換顯示模式。

  • n:切換啓用或禁用DNS域名解析。

  • u:切換使用ICMP或UDP數據包進行探測。

返回結果說明:

默認配置下,返回結果中各數據列的說明以下。

  • 第一列(Host):節點IP地址和域名。如前面所示,按n鍵能夠切換顯示。

  • 第二列(Loss%):節點丟包率。

  • 第三列(Snt):每秒發送數據包數。默認值是10,能夠經過參數「-c」指定。

  • 第四列(Last):最近一次的探測延遲值。

  • 第5、6、七列(Avg、Best、Wrst):分別是探測延遲的平均值、最小值和最大值。

  • 第八列(StDev):標準誤差。越大說明相應節點越不穩定。

在Windows系統上使用

WinMTR是MTR工具在Windows環境下的圖形化實現,但進行了功能簡化,只支持MTR部分參數的調整設置。WinMTR默認發送ICMP 數據包進行探測,沒法切換。WinMTR能夠從其官方網站下載獲取。和mtr命令同樣,相比tracert,WinMTR能避免節點波動對測試結果的影響,因此測試結果更正確。因此,在WinMTR可用的狀況下,建議優先使用 WinMTR 進行鏈路測試。

用法說明:

WinMTR無需安裝,直接解壓運行便可,操做方法很是簡單。運行程序後,在 Host 字段輸入目標服務器域名或 IP,注意前面不要包含空格。以下圖所示。

單擊 Start 開始測試,開始測試後,相應按鈕變成了 Stop。運行一段時間後,單擊 Stop 中止測試。

其它選項說明:

  • Copy Text to clipboard:將測試結果以文本格式複製到粘貼板。

  • Copy HTML to clipboard:將測試結果以HTML格式複製到粘貼板。

  • Export TEXT:將測試結果以文本格式導出到指定文件。

  • Export HTML:將測試結果以HTML格式導出到指定文件。

  • Options:可選參數,包括:

  • Interval(sec):每次探測的間隔(過時)時間。默認爲1秒。

  • Ping size(bytes): PING探測所使用的數據包大小,默認爲64字節。

  • Max hosts in LRU list: LRU列表支持的最大主機數,默認值爲128。

  • Resolve names:經過反查IP以域名顯示相關節點。

返回結果說明:

默認配置下,返回結果中各數據列的說明:

  • 第一列(Hostname):節點IP或域名。

  • 第二列(Nr):節點編號。

  • 第三列(Loss%):節點丟包率。

  • 第四列(Sent):已發送的數據包數量。

  • 第五列(Recv):已成功接收的數據包數量。

  • 第6、7、8、九列(Best 、Avg、Worst、Last):分別是到相應節點延遲的最小值、平均值、最大值和最後一次值。

  • 第八列(StDev):標準誤差,越大說明相應節點越不穩定。

鏈路測試步驟

一般狀況下,鏈路測試流程以下圖所示。

獲取本地網絡對應公網IP

在客戶端本地網絡訪問 ip.taobao.com 等網站,獲取本地網絡對應的公網IP。

正向鏈路測試(PING和MTR)

從客戶端向目標服務器作PING和MTR鏈路測試。從客戶端向目標服務器域名或IP作持續的PING測試,建議至少測試100個數據包,記錄測試結果。根據客戶端操做系統環境的不一樣,使用WinMTR或mtr命令,設置測試目的地址爲目標服務器域名或IP,而後進行鏈路測試,記錄測試結果。

反向鏈路測試(PING和MTR)

進入目標服務器系統內部,作反向PING和MTR鏈路測試。從目標服務器向客戶端IP作持續的PING測試,建議至少測試100個數據包,記錄測試結果。根據目標服務器操做系統環境的不一樣,使用WinMTR或mtr命令,設置測試目的地址爲客戶端 IP,而後進行鏈路測試,記錄測試結果。

測試結果分析

參閱前述說明,對測試結果進行分析。確認異常節點後,訪問 ip.taobao.com 等網站查詢、獲取相應節點歸屬運營商及網絡。

相關文章
相關標籤/搜索