VMware를 사용한 Tcpre 재생

VMware를 사용한 Tcpre 재생

이것은 테스트베드 설정 질문에 더 가깝습니다.

VMware를 사용하여 VM의 Linux 커널에 있는 일부 네트워킹 코드를 디버깅하고 싶습니다. 내 VM에는 두 개의 네트워크 인터페이스가 있습니다. 내가 원하는 것은 호스트에서 캡처 파일을 재생하고 VM에서 패킷을 수신하는 것입니다. 내 문제는 VM에서 재생된 패킷을 볼 수 없다는 것입니다.

  1. 호스트에서 VMware와 tcpreplay를 sudo로 실행하고 있습니다. 따라서 장치 파일에 액세스하는 데 문제가 없어야 한다고 생각합니다.
  2. VMware 워크스테이션 7.0을 실행 중입니다.

ㅏ. 처음에는 자신만의 가상 네트워크 이름을 생성할 수 있는 옵션을 제공하는 사용자 지정 네트워킹으로 시작했습니다. 두 인터페이스에 대해 각각 /dev/vmnet3 및 /dev/vmnet4를 작성했습니다. 그러나 게스트를 부팅한 후 호스트에 생성된 이러한 인터페이스나 장치 파일(/dev에 있음)이 전혀 표시되지 않았습니다.

비. 그런 다음 '호스트 전용'을 시도했지만 어떤 브리지/장치 파일이 인터페이스와 연결되어 있는지 표시되지 않습니다.

씨. 마지막으로 브리지 네트워킹 모드를 시도했습니다.

호스트에 vmnet1, vmnet8 및 vboxnet0이 표시됩니다. 위의 세 가지 경우 모두에 대해 각 인터페이스에서 캡처 파일을 tcpreplay했습니다. "tcpdump -i any"를 사용하여 VM에서 패킷을 캡처하려고 했습니다. 그러나 패킷이 표시되지 않습니다.

어떤 아이디어/포인터가 있습니까?

답변1

최근에는 VMware Workstation에서 이 작업을 시도하지 않았지만 일반적으로 이는 다음 중 하나의 결과입니다.

  1. 캡처하려는 VM이 ​​NIC를 무차별 모드로 설정하지 않으므로 해당 VM으로 향하지 않는 패킷을 볼 수 없습니다. VM에서 루트로 tcpdump를 실행하거나 VM의 MAC 주소를 전송 중인 패킷의 대상으로 사용하도록 tcpreplay를 변경하여 이 문제를 해결할 수 있습니다(tcpreplay에는 tcprewrite가 함께 제공되므로 이러한 종류의 변경이 쉬워집니다). 또는 재생되는 패킷의 대상 MAC 주소를 브로드캐스트 주소인 ff:ff:ff:ff:ff:ff로 만들 수 있습니다(경고: 매우 위험합니다. 수행 중인 작업을 실제로 이해하지 않는 한 물리적 연결을 해제하는 것이 좋습니다). 이 작업을 수행하기 전에 네트워크에 연결하세요).

  2. 호스트는 VM이 ​​인터페이스를 무차별 모드로 설정하는 것을 허용하지 않습니다. VMware Workstation에서 이를 어떻게 조정해야 할지 잘 모르겠지만 ESX[i]에는 vSwitch에 "Promiscuous Mode 허용" 옵션이 있습니다. 1에서 언급한 대로 tcpreplay 스트림의 대상 MAC 주소를 변경하여 이 문제를 해결할 수도 있습니다.

  3. 무차별 모드가 작동할 수 있도록 호스트의 vmnet에 대한 권한이 올바르지 않습니다(Linux를 호스트 OS로 사용한다고 가정). 이에 대한 VMware KB 기사가 많이 있으며 이를 해결하는 것은 기껏해야 일관성이 없습니다. /dev/vmnetX 인터페이스를 777로 chmodding하여 이를 수행할 수 있지만 다른 답변 중 하나가 먼저 문제를 해결하지 못하는 경우 재생 트래픽을 VM의 MAC로 보내는 것이 더 나을 것입니다.

행운을 빌어요,

--제드

답변2

재생 중인 캡처의 대상 MAC 주소가 VM 내부 인터페이스의 MAC이 아니고 해당 MAC이 있는 동일한 VLAN에 호스트가 있는 경우 가상 스위치가 프레임을 전달하기 때문에 트래픽이 표시되지 않습니다. 해당 MAC과 연결된 포트입니다.

브리지 포워드 테이블을 나열하고 대상 Mac을 검색해 보세요.

관련 정보