原文連接:Tcpdump 示例教程php
本文主要內容翻譯自《Tcpdump Examples》。ios
tcpdump
是一款強大的網絡抓包工具,它使用 libpcap
庫來抓取網絡數據包,這個庫在幾乎在全部的 Linux/Unix 中都有。熟悉 tcpdump 的使用可以幫助你分析調試網絡數據,本文將經過一個個具體的示例來介紹它在不一樣場景下的使用方法。無論你是系統管理員,程序員,雲原生工程師仍是 yaml 工程師,掌握 tcpdump 的使用都能讓你如虎添翼,升職加薪。程序員
tcpdump
的經常使用參數以下:web
$ tcpdump -i eth0 -nn -s0 -v port 80複製代碼
vlan
或其餘特殊接口。若是該系統上只有一個網絡接口,則無需指定。96
字節的內容,要想截取全部的報文內容,可使用 -s number
, number
就是你要截取的報文字節數,若是是 0 的話,表示截取報文所有內容。-v
,-vv
和 -vvv
來顯示更多的詳細信息,一般會顯示更多與特定協議相關的信息。port 80
: 這是一個常見的端口過濾器,表示僅抓取 80
端口上的流量,一般是 HTTP。額外再介紹幾個經常使用參數:shell
-p
選項能夠有效地過濾噪聲。-e
選項能夠顯示源和目的 MAC 地址,以及 VLAN tag 信息。例如:$ tcpdump -n -e -c 5 not ip6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
18:27:53.619865 24:5e:be:0c:17:af > 00:e2:69:23:d3:3b, ethertype IPv4 (0x0800), length 1162: 192.168.100.20.51410 > 180.176.26.193.58695: Flags [.], seq 2045333376:2045334484, ack 3398690514, win 751, length 1108
18:27:53.626490 00:e2:69:23:d3:3b > 24:5e:be:0c:17:af, ethertype IPv4 (0x0800), length 68: 220.173.179.66.36017 > 192.168.100.20.51410: UDP, length 26
18:27:53.626893 24:5e:be:0c:17:af > 00:e2:69:23:d3:3b, ethertype IPv4 (0x0800), length 1444: 192.168.100.20.51410 > 220.173.179.66.36017: UDP, length 1402
18:27:53.628837 00:e2:69:23:d3:3b > 24:5e:be:0c:17:af, ethertype IPv4 (0x0800), length 1324: 46.97.169.182.6881 > 192.168.100.20.59145: Flags [P.], seq 3058450381:3058451651, ack 14349180, win 502, length 1270
18:27:53.629096 24:5e:be:0c:17:af > 00:e2:69:23:d3:3b, ethertype IPv4 (0x0800), length 54: 192.168.100.20.59145 > 192.168.100.1.12345: Flags [.], ack 3058451651, win 6350, length 0
5 packets captured複製代碼
-A
表示使用 ASCII
字符串打印報文的所有數據,這樣可使讀取更加簡單,方便使用 grep
等工具解析輸出內容。-X
表示同時使用十六進制和 ASCII
字符串打印報文的所有數據。這兩個參數不能一塊兒使用。例如:ubuntu
$ tcpdump -A -s0 port 80複製代碼
後面能夠跟上協議名稱來過濾特定協議的流量,以 UDP 爲例,能夠加上參數 udp 或 protocol 17
,這兩個命令意思相同。bash
$ tcpdump -i eth0 udp
$ tcpdump -i eth0 proto 17複製代碼
同理,tcp 與 protocol 6
意思相同。服務器
使用過濾器 host
能夠抓取特定目的地和源 IP 地址的流量。微信
$ tcpdump -i eth0 host 10.10.1.1複製代碼
也可使用 src
或 dst
只抓取源或目的地:cookie
$ tcpdump -i eth0 dst 10.10.1.20複製代碼
使用 tcpdump 截取數據報文的時候,默認會打印到屏幕的默認輸出,你會看到按照順序和格式,不少的數據一行行快速閃過,根原本不及看清楚全部的內容。不過,tcpdump 提供了把截取的數據保存到文件的功能,以便後面使用其餘圖形工具(好比 wireshark,Snort)來分析。
-w
選項用來把數據報文輸出到文件:
$ tcpdump -i eth0 -s0 -w test.pcap複製代碼
若是想實時將抓取到的數據經過管道傳遞給其餘工具來處理,須要使用 -l
選項來開啓行緩衝模式(或使用 -c
選項來開啓數據包緩衝模式)。使用 -l
選項能夠將輸出經過當即發送給其餘命令,其餘命令會當即響應。
$ tcpdump -i eth0 -s0 -l port 80 | grep 'Server:'複製代碼
過濾的真正強大之處在於你能夠隨意組合它們,而鏈接它們的邏輯就是經常使用的 與/AND/&&
、 或/OR/||
和 非/not/!
。
and or &&
or or ||
not or !複製代碼
關於 tcpdump 的過濾器,這裏有必要單獨介紹一下。
機器上的網絡報文數量異常的多,不少時候咱們只關係和具體問題有關的數據報(好比訪問某個網站的數據,或者 icmp 超時的報文等等),而這些數據只佔到很小的一部分。把全部的數據截取下來,從裏面找到想要的信息無疑是一件很費時費力的工做。而 tcpdump 提供了靈活的語法能夠精確地截取關心的數據報,簡化分析的工做量。這些選擇數據包的語句就是過濾器(filter)!
Host 過濾器用來過濾某個主機的數據報文。例如:
$ tcpdump host 1.2.3.4複製代碼
該命令會抓取全部發往主機 1.2.3.4
或者從主機 1.2.3.4
發出的流量。若是想只抓取從該主機發出的流量,可使用下面的命令:
$ tcpdump src host 1.2.3.4複製代碼
Network 過濾器用來過濾某個網段的數據,使用的是 CIDR 模式。可使用四元組(x.x.x.x)、三元組(x.x.x)、二元組(x.x)和一元組(x)。四元組就是指定某個主機,三元組表示子網掩碼爲 255.255.255.0
,二元組表示子網掩碼爲 255.255.0.0
,一元組表示子網掩碼爲 255.0.0.0
。例如,
抓取全部發往網段 192.168.1.x
或從網段 192.168.1.x
發出的流量:
$ tcpdump net 192.168.1複製代碼
抓取全部發往網段 10.x.x.x
或從網段 10.x.x.x
發出的流量:
$ tcpdump net 10複製代碼
和 Host 過濾器同樣,這裏也能夠指定源和目的:
$ tcpdump src net 10複製代碼
也可使用 CIDR 格式:
$ tcpdump src net 172.16.0.0/12複製代碼
Proto 過濾器用來過濾某個協議的數據,關鍵字爲 proto
,可省略。proto 後面能夠跟上協議號或協議名稱,支持 icmp
, igmp
, igrp
, pim
, ah
, esp
, carp
, vrrp
, udp
和 tcp
。由於一般的協議名稱是保留字段,因此在於 proto 指令一塊兒使用時,必須根據 shell 類型使用一個或兩個反斜槓(/)來轉義。Linux 中的 shell 須要使用兩個反斜槓來轉義,MacOS 只須要一個。
例如,抓取 icmp 協議的報文:
$ tcpdump -n proto \\icmp
# 或者
$ tcpdump -n icmp複製代碼
Port 過濾器用來過濾經過某個端口的數據報文,關鍵字爲 port
。例如:
$ tcpdump port 389複製代碼
截取數據只是第一步,第二步就是理解這些數據,下面就解釋一下 tcpdump 命令輸出各部分的意義。
21:27:06.995846 IP (tos 0x0, ttl 64, id 45646, offset 0, flags [DF], proto TCP (6), length 64)
192.168.1.106.56166 > 124.192.132.54.80: Flags [S], cksum 0xa730 (correct), seq 992042666, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 663433143 ecr 0,sackOK,eol], length 0
21:27:07.030487 IP (tos 0x0, ttl 51, id 0, offset 0, flags [DF], proto TCP (6), length 44)
124.192.132.54.80 > 192.168.1.106.56166: Flags [S.], cksum 0xedc0 (correct), seq 2147006684, ack 992042667, win 14600, options [mss 1440], length 0
21:27:07.030527 IP (tos 0x0, ttl 64, id 59119, offset 0, flags [DF], proto TCP (6), length 40)
192.168.1.106.56166 > 124.192.132.54.80: Flags [.], cksum 0x3e72 (correct), ack 2147006685, win 65535, length 0複製代碼
最基本也是最重要的信息就是數據報的源地址/端口和目的地址/端口,上面的例子第一條數據報中,源地址 ip 是 192.168.1.106
,源端口是 56166
,目的地址是 124.192.132.54
,目的端口是 80
。 >
符號表明數據的方向。
此外,上面的三條數據仍是 tcp 協議的三次握手過程,第一條就是 SYN
報文,這個能夠經過 Flags [S]
看出。下面是常見的 TCP 報文的 Flags:
[S]
: SYN(開始鏈接)[.]
: 沒有 Flag[P]
: PSH(推送數據)[F]
: FIN (結束鏈接)[R]
: RST(重置鏈接)而第二條數據的 [S.]
表示 SYN-ACK
,就是 SYN
報文的應答報文。
下面給出一些具體的例子,每一個例子均可以使用多種方法來得到相同的輸出,你使用的方法取決於所需的輸出和網絡上的流量。咱們在排障時,一般只想獲取本身想要的內容,能夠經過過濾器和 ASCII 輸出並結合管道與 grep、cut、awk 等工具來實現此目的。
例如,在抓取 HTTP 請求和響應數據包時,能夠經過刪除標誌 SYN/ACK/FIN
來過濾噪聲,但還有更簡單的方法,那就是經過管道傳遞給 grep
。在達到目的的同時,咱們要選擇最簡單最高效的方法。下面來看例子。
從 HTTP 請求頭中提取 HTTP 用戶代理:
$ tcpdump -nn -A -s1500 -l | grep "User-Agent:"複製代碼
經過 egrep
能夠同時提取用戶代理和主機名(或其餘頭文件):
$ tcpdump -nn -A -s1500 -l | egrep -i 'User-Agent:|Host:'複製代碼
抓取 HTTP GET 流量:
$ tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'複製代碼
也能夠抓取 HTTP POST 請求流量:
$ tcpdump -s 0 -A -vv 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'複製代碼
注意:該方法不能保證抓取到 HTTP POST 有效數據流量,由於一個 POST 請求會被分割爲多個 TCP 數據包。
上述兩個表達式中的十六進制將會與 GET 和 POST 請求的 ASCII
字符串匹配。例如,tcp[((tcp[12:1] & 0xf0) >> 2):4]
首先會肯定咱們感興趣的字節的位置(在 TCP header 以後),而後選擇咱們但願匹配的 4 個字節。
提取 HTTP 請求的主機名和路徑:
$ tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
POST /wp-login.php HTTP/1.1
Host: dev.example.com
GET /wp-login.php HTTP/1.1
Host: dev.example.com
GET /favicon.ico HTTP/1.1
Host: dev.example.com
GET / HTTP/1.1
Host: dev.example.com複製代碼
從 HTTP POST 請求中提取密碼和主機名:
$ tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:25:54.799014 IP 10.10.1.30.39224 > 10.10.1.125.80: Flags [P.], seq 1458768667:1458770008, ack 2440130792, win 704, options [nop,nop,TS val 461552632 ecr 208900561], length 1341: HTTP: POST /wp-login.php HTTP/1.1
.....s..POST /wp-login.php HTTP/1.1
Host: dev.example.com
.....s..log=admin&pwd=notmypassword&wp-submit=Log+In&redirect_to=http%3A%2F%2Fdev.example.com%2Fwp-admin%2F&testcookie=1複製代碼
提取 Set-Cookie
(服務端的 Cookie)和 Cookie
(客戶端的 Cookie):
$ tcpdump -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
Host: dev.example.com
Cookie: wordpress_86be02xxxxxxxxxxxxxxxxxxxc43=admin%7C152xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb3e15c744fdd6; _ga=GA1.2.21343434343421934; _gid=GA1.2.927343434349426; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_86be654654645645645654645653fc43=admin%7C15275102testtesttesttestab7a61e; wp-settings-time-1=1527337439複製代碼
查看網絡上的全部 ICMP 數據包:
$ tcpdump -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:34:21.590380 IP 10.10.1.217 > 10.10.1.30: ICMP echo request, id 27948, seq 1, length 64
11:34:21.590434 IP 10.10.1.30 > 10.10.1.217: ICMP echo reply, id 27948, seq 1, length 64
11:34:27.680307 IP 10.10.1.159 > 10.10.1.1: ICMP 10.10.1.189 udp port 59619 unreachable, length 115複製代碼
經過排除 echo 和 reply 類型的數據包使抓取到的數據包不包括標準的 ping
包:
$ tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:37:04.041037 IP 10.10.1.189 > 10.10.1.20: ICMP 10.10.1.189 udp port 36078 unreachable, length 156複製代碼
能夠提取電子郵件的正文和其餘數據。例如,只提取電子郵件的收件人:
$ tcpdump -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'複製代碼
$ tcpdump dst port 123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
21:02:19.112502 IP test33.ntp > 199.30.140.74.ntp: NTPv4, Client, length 48
21:02:19.113888 IP 216.239.35.0.ntp > test33.ntp: NTPv4, Server, length 48
21:02:20.150347 IP test33.ntp > 216.239.35.0.ntp: NTPv4, Client, length 48
21:02:20.150991 IP 216.239.35.0.ntp > test33.ntp: NTPv4, Server, length 48複製代碼
經過 SNMP 服務,滲透測試人員能夠獲取大量的設備和系統信息。在這些信息中,系統信息最爲關鍵,如操做系統版本、內核版本等。使用 SNMP 協議快速掃描程序 onesixtyone
,能夠看到目標系統的信息:
$ onesixtyone 10.10.1.10 public
Scanning 1 hosts, 1 communities
10.10.1.10 [public] Linux test33 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64複製代碼
能夠經過 tcpdump 抓取 GetRequest
和 GetResponse
:
$ tcpdump -n -s0 port 161 and udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:39:13.725522 IP 10.10.1.159.36826 > 10.10.1.20.161: GetRequest(28) .1.3.6.1.2.1.1.1.0
23:39:13.728789 IP 10.10.1.20.161 > 10.10.1.159.36826: GetResponse(109) .1.3.6.1.2.1.1.1.0="Linux testmachine 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64"複製代碼
當抓取大量數據並寫入文件時,能夠自動切割爲多個大小相同的文件。例如,下面的命令表示每 3600 秒建立一個新文件 capture-(hour).pcap
,每一個文件大小不超過 200*1000000
字節:
$ tcpdump -w /tmp/capture-%H.pcap -G 3600 -C 200複製代碼
這些文件的命名爲 capture-{1-24}.pcap
,24 小時以後,以前的文件就會被覆蓋。
能夠經過過濾器 ip6
來抓取 IPv6 流量,同時能夠指定協議如 TCP:
$ tcpdump -nn ip6 proto 6複製代碼
從以前保存的文件中讀取 IPv6 UDP 數據報文:
$ tcpdump -nr ipv6-test.pcap ip6 proto 17複製代碼
在下面的例子中,你會發現抓取到的報文的源和目的一直不變,且帶有標誌位 [S]
和 [R]
,它們與一系列看似隨機的目標端口進行匹配。當發送 SYN
以後,若是目標主機的端口沒有打開,就會返回一個 RESET
。這是 Nmap
等端口掃描工具的標準作法。
$ tcpdump -nn
21:46:19.693601 IP 10.10.1.10.60460 > 10.10.1.199.5432: Flags [S], seq 116466344, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
21:46:19.693626 IP 10.10.1.10.35470 > 10.10.1.199.513: Flags [S], seq 3400074709, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
21:46:19.693762 IP 10.10.1.10.44244 > 10.10.1.199.389: Flags [S], seq 2214070267, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.693772 IP 10.10.1.199.389 > 10.10.1.10.44244: Flags [R.], seq 0, ack 2214070268, win 0, length 0
21:46:19.693783 IP 10.10.1.10.35172 > 10.10.1.199.1433: Flags [S], seq 2358257571, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.693826 IP 10.10.1.10.33022 > 10.10.1.199.49153: Flags [S], seq 2406028551, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
21:46:19.695567 IP 10.10.1.10.55130 > 10.10.1.199.49154: Flags [S], seq 3230403372, win 29200, options [mss 1460,sackOK,TS val 3547090334 ecr 0,nop,wscale 7], length 0
21:46:19.695590 IP 10.10.1.199.49154 > 10.10.1.10.55130: Flags [R.], seq 0, ack 3230403373, win 0, length 0
21:46:19.695608 IP 10.10.1.10.33460 > 10.10.1.199.49152: Flags [S], seq 3289070068, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695622 IP 10.10.1.199.49152 > 10.10.1.10.33460: Flags [R.], seq 0, ack 3289070069, win 0, length 0
21:46:19.695637 IP 10.10.1.10.34940 > 10.10.1.199.1029: Flags [S], seq 140319147, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695650 IP 10.10.1.199.1029 > 10.10.1.10.34940: Flags [R.], seq 0, ack 140319148, win 0, length 0
21:46:19.695664 IP 10.10.1.10.45648 > 10.10.1.199.5060: Flags [S], seq 2203629201, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695775 IP 10.10.1.10.49028 > 10.10.1.199.2000: Flags [S], seq 635990431, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
21:46:19.695790 IP 10.10.1.199.2000 > 10.10.1.10.49028: Flags [R.], seq 0, ack 635990432, win 0, length 0複製代碼
本例中 Nmap NSE 測試腳本 http-enum.nse
用來檢測 HTTP 服務的合法 URL。
在執行腳本測試的主機上:
$ nmap -p 80 --script=http-enum.nse targetip複製代碼
在目標主機上:
$ tcpdump -nn port 80 | grep "GET /"
GET /w3perl/ HTTP/1.1
GET /w-agora/ HTTP/1.1
GET /way-board/ HTTP/1.1
GET /web800fo/ HTTP/1.1
GET /webaccess/ HTTP/1.1
GET /webadmin/ HTTP/1.1
GET /webAdmin/ HTTP/1.1複製代碼
向 Google 公共 DNS 發起的出站 DNS
請求和 A 記錄響應能夠經過 tcpdump 抓取到:
$ tcpdump -i wlp58s0 -s0 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:19:06.879799 IP test.53852 > google-public-dns-a.google.com.domain: 26977+ [1au] A? play.google.com. (44)
14:19:07.022618 IP google-public-dns-a.google.com.domain > test.53852: 26977 1/0/1 A 216.58.203.110 (60)複製代碼
抓取 80 端口的 HTTP 有效數據包,排除 TCP 鏈接創建過程的數據包(SYN / FIN / ACK):
$ tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'複製代碼
一般 Wireshark
(或 tshark)比 tcpdump 更容易分析應用層協議。通常的作法是在遠程服務器上先使用 tcpdump
抓取數據並寫入文件,而後再將文件拷貝到本地工做站上用 Wireshark
分析。
還有一種更高效的方法,能夠經過 ssh 鏈接將抓取到的數據實時發送給 Wireshark 進行分析。以 MacOS 系統爲例,能夠經過 brew cask install wireshark
來安裝,而後經過下面的命令來分析:
$ ssh root@remotesystem 'tcpdump -s0 -c 1000 -nn -w - not port 22' | /Applications/Wireshark.app/Contents/MacOS/Wireshark -k -i -複製代碼
例如,若是想分析 DNS 協議,可使用下面的命令:
$ ssh root@remotesystem 'tcpdump -s0 -c 1000 -nn -w - port 53' | /Applications/Wireshark.app/Contents/MacOS/Wireshark -k -i -複製代碼
抓取到的數據:
-c
選項用來限制抓取數據的大小。若是不限制大小,就只能經過 ctrl-c
來中止抓取,這樣一來不只關閉了 tcpdump,也關閉了 wireshark。
找出一段時間內發包最多的 IP,或者從一堆報文中找出發包最多的 IP,可使用下面的命令:
$ tcpdump -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
200 packets captured
261 packets received by filter
0 packets dropped by kernel
108 IP 10.10.211.181
91 IP 10.10.1.30
1 IP 10.10.1.50複製代碼
.
爲分隔符,打印出每行的前四列。即 IP 地址。本例將重點放在標準純文本協議上,過濾出於用戶名和密碼相關的報文:
$ tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '複製代碼
最後一個例子,抓取 DHCP 服務的請求和響應報文,67 爲 DHCP 端口,68 爲客戶機端口。
$ tcpdump -v -n port 67 or 68
tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:37:50.059662 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:xx:xx:xx:d5, length 300, xid 0xc9779c2a, Flags [none]
Client-Ethernet-Address 00:0c:xx:xx:xx:d5
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
Requested-IP Option 50, length 4: 10.10.1.163
Hostname Option 12, length 14: "test-ubuntu"
Parameter-Request Option 55, length 16:
Subnet-Mask, BR, Time-Zone, Default-Gateway
Domain-Name, Domain-Name-Server, Option 119, Hostname
Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
NTP, Classless-Static-Route-Microsoft, Static-Route, Option 252
14:37:50.059667 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:xx:xx:xx:d5, length 300, xid 0xc9779c2a, Flags [none]
Client-Ethernet-Address 00:0c:xx:xx:xx:d5
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
Requested-IP Option 50, length 4: 10.10.1.163
Hostname Option 12, length 14: "test-ubuntu"
Parameter-Request Option 55, length 16:
Subnet-Mask, BR, Time-Zone, Default-Gateway
Domain-Name, Domain-Name-Server, Option 119, Hostname
Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
NTP, Classless-Static-Route-Microsoft, Static-Route, Option 252
14:37:50.060780 IP (tos 0x0, ttl 64, id 53564, offset 0, flags [none], proto UDP (17), length 339)
10.10.1.1.67 > 10.10.1.163.68: BOOTP/DHCP, Reply, length 311, xid 0xc9779c2a, Flags [none]
Your-IP 10.10.1.163
Server-IP 10.10.1.1
Client-Ethernet-Address 00:0c:xx:xx:xx:d5
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: ACK
Server-ID Option 54, length 4: 10.10.1.1
Lease-Time Option 51, length 4: 86400
RN Option 58, length 4: 43200
RB Option 59, length 4: 75600
Subnet-Mask Option 1, length 4: 255.255.255.0
BR Option 28, length 4: 10.10.1.255
Domain-Name-Server Option 6, length 4: 10.10.1.1
Hostname Option 12, length 14: "test-ubuntu"
T252 Option 252, length 1: 10
Default-Gateway Option 3, length 4: 10.10.1.1複製代碼
本文主要介紹了 tcpdump
的基本語法和使用方法,並經過一些示例來展現它強大的過濾功能。將 tcpdump 與 wireshark 進行組合能夠發揮更強大的功效,本文也展現瞭如何優雅順滑地結合 tcpdump 和 wireshark。若是你想了解更多的細節,能夠查看 tcpdump 的 man
手冊。
掃一掃下面的二維碼關注微信公衆號,在公衆號中回覆◉加羣◉便可加入咱們的雲原生交流羣,和孫宏亮、張館長、陽明等大佬一塊兒探討雲原生技術