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