tcpdump-uw是傳統(tǒng)的抓包工具,pktcap-uw是高級(jí)版的抓包及分析工具,主要用在 ESXi 5.5 以后的版本中。
cpdump-uw主要抓取流經(jīng)VMkernel適配器的報(bào)文。pktcap-uw可以對虛擬交換機(jī)、VMkernel適配器、物理適配器的流都能進(jìn)行抓取。
Capture Points
tcpdump-uw沒有流量的概念,當(dāng)你用tcpdump-uw對vmk0進(jìn)行抓包時(shí),你可以直接看到VMkernel 入向和出向的報(bào)文。pktcap-uw則引入了捕捉點(diǎn)的概念,來決定你在哪兒進(jìn)行抓包。對VMkernel的流量,你有兩個(gè)可以進(jìn)行抓包的地方:
PortOutput:從虛擬交換機(jī)到VMkernel 的流量。
PortInput:從VMkernel 到虛擬交換機(jī)的流量。(默認(rèn))
這里發(fā)起一個(gè)ping操作,用tcpdump-uw可以看到ICMP請求和相應(yīng)報(bào)文。
使用pktcap-uw,不指定捕捉點(diǎn)的話,會(huì)看到從PortInput出來的reply報(bào)文。
通過—capture PortOutput參數(shù)可以抓到ICMP echo request報(bào)文。
Packet Interpretation
這里我們同樣用上面ping的例子來進(jìn)行說明。tcpdump-uw抓的包比較通俗易懂,pktcap-uw的包是十六進(jìn)制的原始數(shù)據(jù)包。當(dāng)然,如果分別通過-w或-o輸出后到某一文件后,兩者的輸出是一樣的。如果想用tcpdump-uw輸入十六進(jìn)制的原始數(shù)據(jù)包,可以在尾部加-xx參數(shù)。
Protocol Knowledge
上面的例子都是采用ICMP報(bào)文來說明兩者的不同。當(dāng)用tcpdump-uw時(shí)可以加icmp參數(shù)來進(jìn)行包過濾,而用pktcap-uw不關(guān)心報(bào)文協(xié)議,只能通過加protocol id來進(jìn)行過濾。protocol id是IPv4報(bào)文頭部的一部分,ICMP的protocol id從1開始。下面可以看到協(xié)議的十六進(jìn)制顯示。
https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers這里列出了所有的協(xié)議號(hào)。當(dāng)然,如果對網(wǎng)絡(luò)協(xié)議不了解的話,也可以將抓包結(jié)果導(dǎo)入到wireshark中,它能通俗易懂地解析所抓到的報(bào)文。
tcpdump-uw Usage
現(xiàn)在學(xué)習(xí)某個(gè)命令一般都有比較友好的說明,所以成本較低,這里也就不詳細(xì)列出了。也不用牢記,畢竟大腦不能當(dāng)硬盤來用,具體到實(shí)際的應(yīng)用時(shí),只需加-h即可,-h搞不定的就去必應(yīng)上百度一下,哈。
tcpdump-uw Examples
1、列出所有可用的VMkernel 適配器
2、tcpdump-uw默認(rèn)抓取的是報(bào)文前68字節(jié)的數(shù)據(jù),要想抓取整個(gè)報(bào)文,可通過-s來指定。如:
3、當(dāng)開啟了巨幀,可以加-s 9014,但由于緩沖限制,tcpdump-uw最多能抓到8138字節(jié),通過追加-B 9的參數(shù)可以允許抓到9014字節(jié)的包。
4、主機(jī)過濾
pktcap-uw Usage & Examples
pktcap-uw較復(fù)雜,也可以通過-h來查看如何使用,這里限于篇幅我只截取了一部分。
1、VMkernel 口抓包
2、IP過濾
3、物理口抓包,具體抓哪個(gè)物理口,可以通過vsphere-client來看。
4、抓任何被丟棄的包,較為實(shí)用。
5、查看所有可抓包的點(diǎn)。需要說明的是有些point是和特定的流量類型(Virtual Machine traffic, VMkernel traffic,..)綁定的,有些是全局性的。