使用 VMware 進行 Tcpreplay

使用 VMware 進行 Tcpreplay

這更像是測試台設定問題。

我想使用VMware在VM中調試Linux核心中的一些網路程式碼。我的虛擬機器有兩個網路介面。我想要做的是在主機中重播捕獲檔案並在虛擬機器中接收資料包。我的問題是我在虛擬機器中看不到重播的資料包。

  1. 我在主機上以 sudo 身分執行 VMware 和 tcpreplay。因此我認為訪問設備文件應該不會有任何問題。
  2. 我正在運行 VMware 工作站 7.0

A。我首先從自訂網路開始,因為它提供了創建您自己的虛擬網路名稱的選項。我分別為兩個介面寫了/dev/vmnet3和/dev/vmnet4。但是,啟動來賓後,我沒有看到在主機上建立的任何這些介面或裝置檔案(在 /dev 中)。

b.然後我嘗試了“僅主機”,但這沒有顯示與介面關聯的橋/設備檔案。

C。最後我嘗試了橋接網路模式。

我在主機上看到 vmnet1、vmnet8 和 vboxnet0。對於上述所有三種情況,我已在每個介面上 tcpreplayed 捕獲檔案。我嘗試使用“tcpdump -i any”捕獲虛擬機器中的資料包。但是,我沒有看到任何數據包。

有什麼想法/指示嗎?

答案1

我最近沒有在 VMware Workstation 中嘗試過此操作,但通常這是由以下原因之一導致的:

  1. 您嘗試擷取的虛擬機器並未將 NIC 置於混雜模式,因此無法看到非發送至該虛擬機器的資料包。您可以透過在虛擬機器中以 root 身分執行 tcpdump 或更改 tcpreplay 以使用虛擬機器的 MAC 位址作為其傳送的封包的目的地來解決此問題(tcpreplay 附帶 tcprewrite,這使得此類變更變得容易)。或者,您可以將正在重播的資料包的目標MAC 位址設定為廣播位址ff:ff:ff:ff:ff:ff (警告:非常危險。除非您真正了解自己在做什麼,否則我建議從實體設備中拔出插頭)執行此操作之前先連接網路)。

  2. 主機不允許虛擬機器將介面置於混雜模式。我不確定如何在 VMware Workstation 中調整此設置,但在 ESX[i] 中,vSwitch 上有一個「允許混雜模式」選項。您也可以透過變更 tcpreplay 流的目標 MAC 位址來解決此問題,如 1 所述。

  3. 主機中 vmnet 的權限不正確,無法允許混雜模式運作(假設您使用 Linux 作為主機作業系統)。有許多關於此問題的 VMware 知識庫文章,並且解決該問題的方法充其量也不一致。您也許可以透過將 /dev/vmnetX 介面變更為 777 來實現此目的,但如果其他答案之一無法先解決該問題,則最好將重播流量傳送至虛擬機器的 MAC。

祝你好運,

--傑德

答案2

如果您正在重播的擷取中的目標 MAC 位址不是 VM 內部介面上的 MAC,且同一 VLAN 中存在具有該 MAC 的主機,您將不會看到任何流量,因為虛擬交換器會在虛擬交換器上轉送封包。與該MAC 關聯的連接埠。

嘗試列出網橋轉發表並蒐索您的目標 MAC。

相關內容