久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Linux下抓包命令tcpdump詳解

      tcpdump是一個命令行實用程序,可用于捕獲和檢查進出系統(tǒng)的網(wǎng)絡(luò)流量。 它是網(wǎng)絡(luò)管理員中用于排除網(wǎng)絡(luò)問題和安全測試的最常用工具。

      盡管名稱如此,使用tcpdump,您也可以捕獲非TCP流量,例如UDP,ARP或ICMP。 捕獲的數(shù)據(jù)包可以寫入文件或標準輸出。 tcpdump命令最強大的功能之一是它能夠使用過濾器并僅捕獲要分析的數(shù)據(jù)。

      在本文中,我們將介紹如何在Linux中使用tcpdump命令的基礎(chǔ)知識。

      Linux下抓包命令tcpdump詳解

      安裝tcpdump

      在大多數(shù)Linux發(fā)行版和macOS上默認安裝了tcpdump。 要檢查tcpdump命令在您的系統(tǒng)上是否可用:

      [linuxidc@linux:~/www.linuxidc.com]$ tcpdump –version

      輸出應(yīng)如下所示:

      tcpdump version 4.9.2
      libpcap version 1.8.1
      OpenSSL 1.1.1  11 Sep 2018

      Linux下抓包命令tcpdump詳解

      如果您的系統(tǒng)上沒有tcpdump,則上面的命令將顯示“ 沒有那個文件或目錄”。 您可以使用發(fā)行版的軟件包管理器輕松安裝tcpdump。

      [linuxidc@linux:~/www.linuxidc.com]$ tcpdump –version
      bash: /usr/sbin/tcpdump: 沒有那個文件或目錄

      Linux下抓包命令tcpdump詳解

      在Ubuntu和Debian上安裝tcpdump

      $sudo apt update && sudo apt install tcpdump

      在CentOS和Fedora上安裝tcpdump

      $sudo yum install tcpdump

      在Arch Linux上安裝tcpdump

      $sudo pacman -S tcpdump

      使用tcpdump捕獲數(shù)據(jù)包

      tcpdump命令的常規(guī)語法如下:

      tcpdump [選項] [過濾器表達式]

      • 命令選項使您可以控制命令的行為。
      • 過濾器表達式定義將捕獲哪些數(shù)據(jù)包。

      只有root或具有sudo特權(quán)的用戶才能運行tcpdump。 如果您嘗試以非特權(quán)用戶身份運行該命令,則會收到一條錯誤消息:“您無權(quán)在該設(shè)備上進行捕獲”。

      tcpdump: ens33: You don’t have permission to capture on that device
      (socket: Operation not permitted)

      Linux下抓包命令tcpdump詳解

      最簡單的用例是不帶任何選項和過濾器的情況下調(diào)用tcpdump:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump

      輸出如下:

      [sudo] linuxidc 的密碼:
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

      Linux下抓包命令tcpdump詳解

      tcpdump將繼續(xù)捕獲數(shù)據(jù)包并寫入標準輸出,直到接收到中斷信號為止。 使用Ctrl + C組合鍵發(fā)送中斷信號并停止命令。

      要獲得更詳細的輸出,請傳遞-v選項,或傳遞-vv以獲得更詳細的輸出:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -vv

      您可以使用-c選項指定要捕獲的數(shù)據(jù)包數(shù)量。 例如,要僅捕獲5個數(shù)據(jù)包,請輸入:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -c 5
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
      21:08:14.575216 IP linux.42082 > 180.101.49.12.https: Flags [.], ack 470550152, win 30016, length 0
      21:08:14.577139 IP 180.101.49.12.https > linux.42082: Flags [.], ack 1, win 64240, length 0
      21:08:14.578127 IP linux.37565 > _gateway.domain: 52885+ [1au] PTR? 12.49.101.180.in-addr.arpa. (55)
      21:08:14.583548 IP _gateway.domain > linux.37565: 52885 NXDomain 0/1/1 (114)
      21:08:14.585411 IP linux.37565 > _gateway.domain: 52885+ PTR? 12.49.101.180.in-addr.arpa. (44)
      5 packets captured
      14 packets received by filter
      5 packets dropped by kernel

      Linux下抓包命令tcpdump詳解

      捕獲數(shù)據(jù)包后,tcpdump將停止。

      如果未指定任何接口,則tcpdump使用它找到的第一個接口并轉(zhuǎn)儲通過該接口的所有數(shù)據(jù)包。

      使用-D選項可以打印tcpdump可以從中收集數(shù)據(jù)包的所有可用網(wǎng)絡(luò)接口的列表:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -D

      對于每個接口,該命令將打印接口名稱,簡短描述以及關(guān)聯(lián)的索引(數(shù)字):

      輸出:
      1.ens33 [Up, Running]
      2.any (Pseudo-device that captures on all interfaces) [Up, Running]
      3.lo [Up, Running, Loopback]
      4.bluetooth0 (Bluetooth adapter number 0)
      5.nflog (Linux netfilter log (NFLOG) interface)
      6.nfqueue (Linux netfilter queue (NFQUEUE) interface)
      7.usbmon1 (USB bus number 1)
      8.usbmon2 (USB bus number 2)

      Linux下抓包命令tcpdump詳解

      上面的輸出顯示ens3是tcpdump找到的第一個接口,并且在沒有為該命令提供接口時使用。 第二個接口any是一種特殊的設(shè)備,可讓您捕獲所有活動的接口。

      要指定要在其上捕獲流量的接口,請使用-i選項調(diào)用命令,后跟接口名稱或關(guān)聯(lián)的索引。 例如,要捕獲來自所有接口的所有數(shù)據(jù)包,可以指定any接口:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -i any

      Linux下抓包命令tcpdump詳解

      默認情況下,tcpdump對IP地址執(zhí)行反向DNS解析,并將端口號轉(zhuǎn)換為名稱。 使用-n選項禁用轉(zhuǎn)換:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -n

      跳過DNS查詢可以避免生成DNS流量并使輸出更具可讀性。建議在調(diào)用tcpdump時使用此選項。

      與在屏幕上顯示輸出不同,您可以使用重定向操作符>和>>將其重定向到一個文件:

      [linuxidc@linux:~/www.linuxidc.com]$ sudo tcpdump -n -i any > linuxidc.txt
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
      ^C3470 packets captured
      3616 packets received by filter
      0 packets dropped by kernel

      您還可以使用tee命令在保存到文件的同時查看數(shù)據(jù):

      [linuxidc@linux:~/www.linuxidc.com]$  sudo tcpdump -n -l | tee linuxidc.txt

      上面命令中的-l選項告訴tcpdump緩沖輸出行。 不使用此選項時,生成新行時,輸出不會寫在屏幕上。

      了解tcpdump輸出

      tcpdump在新行上輸出每個捕獲的數(shù)據(jù)包的信息。 每行包括一個時間戳和有關(guān)該數(shù)據(jù)包的信息,具體取決于協(xié)議。

      TCP協(xié)議行的典型格式如下:

      [Timestamp] [Protocol] [Src IP].[Src Port] > [Dst IP].[Dst Port]: [Flags], [Seq], [Ack], [Win Size], [Options], [Data Length]

      讓我們逐個字段進行說明,并解釋以下內(nèi)容:

      21:53:20.460144 IP 192.168.182.166.57494 > 35.222.85.5.80: Flags [P.], seq 1:88, ack 1, win 29200,  options [nop,nop,TS val 1067794587 ecr 2600218930], length 87

      • 21:53:20.460144 – 捕獲的數(shù)據(jù)包的時間戳為本地時間,并使用以下格式:hours:minutes:seconds.frac,其中frac是自午夜以來的幾分之一秒。
      • IP – 分組協(xié)議。 在這種情況下,IP表示Internet協(xié)議版本4(IPv4)。
      • 192.168.182.166.57494 – 源IP地址和端口,以點(.)分隔。
      • 35.222.85.5.80 – 目的IP地址和端口,以點號(.)分隔。

      TCP標志字段。 在此示例中,[P.]表示推送確認數(shù)據(jù)包,用于確認前一個數(shù)據(jù)包并發(fā)送數(shù)據(jù)。 其他典型標志字段值如下:

      • [.] – ACK (Acknowledgment)
      • [S] – SYN (Start Connection)
      • [P] – PSH (Push Data)
      • [F] – FIN (Finish Connection)
      • [R] – RST (Reset Connection)
      • [S.] – SYN-ACK (SynAcK Packet)

       

      • seq 1:88 – 序列號在first:last表示法中。 它顯示了數(shù)據(jù)包中包含的數(shù)據(jù)數(shù)量。 除了數(shù)據(jù)流中的第一個數(shù)據(jù)包(其中這些數(shù)字是絕對的)以外,所有后續(xù)數(shù)據(jù)包均用作相對字節(jié)位置。 在此示例中,數(shù)字為1:88,表示此數(shù)據(jù)包包含數(shù)據(jù)流的字節(jié)1至88。 使用-S選項可打印絕對序列號。
      • ack 1 – 確認號(acknowledgment number)是此連接另一端所期望的下一個數(shù)據(jù)的序列號。
      • win 29200 – 窗口號是接收緩沖區(qū)中可用字節(jié)的數(shù)目。
      • options [nop,nop,TS val 1067794587 ecr 2600218930] – TCP選項。 使用nop或“ no operation”填充使TCP報頭為4字節(jié)的倍數(shù)。 TS val是TCP時間戳,而ecr表示回顯應(yīng)答。 請訪問IANA文檔以獲取有關(guān)TCP選項的更多信息。
      • length 87 – 有效載荷數(shù)據(jù)的長度

      tcpdump過濾器

      在不使用過濾器的情況下調(diào)用tcpdump時,它將捕獲所有流量并產(chǎn)生大量輸出,這使得查找和分析目標數(shù)據(jù)包變得非常困難。

      過濾器是tcpdump命令最強大的功能之一。 因為它們允許您僅捕獲與表達式匹配的那些數(shù)據(jù)包。 例如,在對與Web服務(wù)器有關(guān)的問題進行故障排除時,可以使用過濾器僅獲取HTTP通信。

      tcpdump使用Berkeley數(shù)據(jù)包篩選器(BPF)語法使用各種加工參數(shù)(例如協(xié)議,源IP地址和目標IP地址以及端口等)過濾捕獲的數(shù)據(jù)包。

      在本文中,我們將介紹一些最常見的過濾器。 有關(guān)所有可用過濾器的列表,請查看pcap-filter聯(lián)機幫助頁。

      按協(xié)議過濾

      要將捕獲限制為特定協(xié)議,請將該協(xié)議指定為過濾器。 例如,要僅捕獲UDP流量,可以使用:

      $sudo tcpdump -n udp

      定義協(xié)議的另一種方法是使用原型限定符,后跟協(xié)議編號。 以下命令將過濾協(xié)議編號17,并產(chǎn)生與上述相同的結(jié)果:

      $sudo tcpdump -n proto 17

      有關(guān)編號的更多信息,請檢查IP協(xié)議編號列表。

      主機過濾

      要僅捕獲與特定主機有關(guān)的數(shù)據(jù)包,請使用主機限定符:

      $sudo tcpdump -n host 192.168.1.185

      主機可以是IP地址或名稱。

      您還可以使用網(wǎng)絡(luò)限定符將輸出過濾到給定的IP范圍。 例如,要僅轉(zhuǎn)儲與10.10.0.0/16相關(guān)的數(shù)據(jù)包,可以使用:

      $sudo tcpdump -n net 10.10

      按端口過濾

      若要僅將捕獲限制為來自特定端口或特定端口的數(shù)據(jù)包??請使用端口限定符。 以下命令使用以下命令捕獲與SSH(端口22)服務(wù)相關(guān)的數(shù)據(jù)包:

      $sudo tcpdump -n port 23

      portrange限定符使您能夠捕獲一系列端口中的流量:

      $sudo tcpdump -n portrange 110-150

      按來源和目的地過濾

      您還可以使用are src,dst,src和dst以及src或dst限定符基于源或目標端口或主機篩選數(shù)據(jù)包。

      以下命令捕獲來自IP為192.168.1.185的主機的傳入數(shù)據(jù)包:

      $sudo tcpdump -n src host 192.168.1.185

      要查找從任何來源到端口80的流量,請使用:

      $sudo tcpdump -n dst port 80

      復(fù)合過濾器

      可以使用和(&&) 或者 (||), 而不是(!)運算符組合過濾器。

      例如,要捕獲來自源IP地址192.168.1.185的所有HTTP通信,可以使用以下命令:

      $sudo tcpdump -n src 192.168.1.185 and tcp port 80

      您還可以使用括號來分組和創(chuàng)建更復(fù)雜的過濾器:

      $sudo tcpdump -n ‘host 192.168.1.185 and (tcp port 80 or tcp port 443)’

      為避免在使用特殊字符時解析錯誤,請將過濾器括在單引號內(nèi)。

      這是另一個示例命令,用于從源IP地址192.168.1.185捕獲除SSH以外的所有流量:

      $sudo tcpdump -n src 192.168.1.185 and not dst port 22

      檢查數(shù)據(jù)包

      默認情況下,tcpdump僅捕獲數(shù)據(jù)包頭。 但是,有時您可能需要檢查數(shù)據(jù)包的內(nèi)容。

      tcpdump允許您以ASCII和十六進制格式打印數(shù)據(jù)包的內(nèi)容。

      -A選項告訴tcpdump以ASCII格式輸出每個數(shù)據(jù)包,以十六進制格式-x輸出每個數(shù)據(jù)包:

      $sudo tcpdump -n -A

      要以十六進制和ASCII碼顯示數(shù)據(jù)包的內(nèi)容,請使用-X選項:

      $sudo tcpdump -n -X

      讀取和寫入捕獲到文件

      tcpdump的另一個有用功能是將數(shù)據(jù)包寫入文件。 當您捕獲大量數(shù)據(jù)包或要捕獲數(shù)據(jù)包以供以后分析時,這非常方便。

      要開始寫入文件,請使用-w選項,后跟輸出捕獲文件:

      $sudo tcpdump -n -w data.pcap

      上面的命令將捕獲的內(nèi)容保存到名為data.pcap的文件中。 您可以根據(jù)需要命名文件,但是使用.pcap擴展名(數(shù)據(jù)包捕獲)是一種常見的約定。

      使用-w選項時,輸出不會顯示在屏幕上。 tcpdump寫入原始數(shù)據(jù)包并創(chuàng)建一個二進制文件,而常規(guī)文本編輯器無法讀取該文件。

      要檢查文件的內(nèi)容,請使用-r選項調(diào)用tcpdump:

      $sudo tcpdump -r data.pcap

      如果要在后臺運行tcpdump,請在命令末尾添加與號 (&)。

      也可以使用其他數(shù)據(jù)包分析器工具(例如Wireshark)檢查捕獲文件。

      長時間捕獲數(shù)據(jù)包時,可以啟用文件輪換。 tcpdump允許您創(chuàng)建的新文件或以指定的時間間隔或固定大小旋轉(zhuǎn)轉(zhuǎn)儲文件。 以下命令將創(chuàng)建多達十個200MB文件,分別名為file.pcap0,file.pcap1,依此類推:在覆蓋舊文件之前。

      $sudo tcpdump -n -W 5 -C 200 -w /tmp/file.pcap

      生成5個文件后,較舊的文件將被覆蓋。

      請注意,您僅應(yīng)在排除故障期間運行tcpdump。

      如果要在特定時間啟動tcpdump,則可以使用cronjob。 tcpdump沒有在指定時間后退出的選項。 您可以在一段時間后使用timeout命令停止tcpdump。 例如,要在1分鐘后退出,您可以使用:

      $sudo timeout 60 tcpdump -n -w data.pcap

      總結(jié)

      tcpdump是用于分析和解決網(wǎng)絡(luò)相關(guān)問題的命令行工具。

      本文向您介紹了tcpdump用法和語法的基礎(chǔ)。 有關(guān)更深入的文檔,請訪問tcpdump網(wǎng)站。

      如果您有任何疑問或反饋,請隨時發(fā)表評論。

      更多Linux命令相關(guān)信息見Linux命令大全 專題頁面 http://www.sfodin.cn/topicnews.aspx?tid=16

      贊(2)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號