ESXi에서 패킷 캡처를 얻는 방법

이 기사의 목적


  • VMware ESXi 상의 관리 매니지먼트 통신이나 게스트 OS 에서 네트워크 트러블이 발생했을 때의 조사에 도움이 되는 패킷 캡쳐를 IP 주소에 묶은 정보로부터 취득하는 방법을 소개합니다.
  • VMware사 Blog 신졸SE사원이 주는 vSphere의 빌어 먹을VMware사 Blog 가상 스위치의 방법 를 참조했습니다. VMware 제품 네트워크 주변의 정보를 체계적으로 설명하고 있으므로 꼭 한번 읽어 주십시오.

  • 테스트한 환경


  • vCenter
    VMware vSphere 6.5 U3f
  • ESXi
    VMware ESXi 6.5 P04

  • 이번 데이터를 취득하는 대상 범위에 대해서


  • 커맨드만으로는, 어느 부분의 데이터를 취득하고 있는지 알기 어려우므로 아래에 이번 대상 포트에 대해 기재했습니다.
    아래 그림을 참조하십시오. 출처 (그림 3)



  • vmk0으로 데이터를 얻는 단계


  • 해당 ESXi에 SSH로 로그인하여 VMkernel의 관리 주소가 10.xxx.15.12이므로 만약을 위해 vmk0을 이용하고 있는지 확인합니다.
  • [esxcli network ip interface ipv4 get] 명령을 사용하여 연결된 인터페이스 이름이 vmk0인지 확인할 수 있습니다. (아래 명령 결과 참조)
  • 
    [admin@vcs000:/tmp] esxcli network ip interface ipv4 get
    Name  IPv4 Address    IPv4 Netmask     IPv4 Broadcast  Address Type  Gateway  DHCP DNS
    ----  --------------  ---------------  --------------  ------------  -------  --------
    vmk0  10.xxx.15.12    255.255.255.192  10.xxx.15.63    STATIC        0.0.0.0     false
    vmk2  10.xxx.30.67    255.255.255.192  10.xxx.30.127   STATIC        0.0.0.0     false
    vmk3  10.xxx.22.131   255.255.255.192  10.xxx.22.191   STATIC        0.0.0.0     false
    vmk1  10.xxx.105.195  255.255.255.192  10.xxx.105.255  STATIC        0.0.0.0     false
    [admin@vcs000:/tmp]
    
  • 캡처할 때 지정해야 하는 "PortNum"번호를 확인하기 위해 "net-stats -l"명령을 실행합니다.
  • [admin@vcs000:/tmp] net-stats -l
    PortNum          Type SubType SwitchName       MACAddress         ClientName
    50331650            4       0 DvsPortset-0     ac:1f:6b:c6:46:00  vmnic2
    50331652            3       0 DvsPortset-0     00:50:56:6c:70:87  vmk0
    50331653            3       0 DvsPortset-0     00:50:56:64:9d:d1  vmk1
    50331654            3       0 DvsPortset-0     00:50:56:68:3c:c5  vmk2
    50331655            3       0 DvsPortset-0     00:50:56:6a:22:1a  vmk3
    50331656            4       0 DvsPortset-0     ac:1f:6b:c6:45:fe  vmnic0
    50331658            5       9 DvsPortset-0     00:50:56:84:ee:80  nsxt25-nsxt-ctrlmgr1.eth0
    50331663            5       9 DvsPortset-0     00:50:56:84:44:c6  service-edge01.eth2
    50331664            5       9 DvsPortset-0     00:50:56:84:2e:a6  service-edge01.eth1
    50331665            5       9 DvsPortset-0     00:50:56:84:29:72  service-edge01.eth0
    67108866            4       0 DvsPortset-1     ac:1f:6b:c6:45:ff  vmnic1
    67108868            4       0 DvsPortset-1     ac:1f:6b:c6:46:01  vmnic3
    67108870            5       9 DvsPortset-1     00:50:56:84:e1:b0  service-edge01.eth3
    [admin@vcs000:/tmp]
    

    -> "50331652"가 vmk0의 PortNum으로 묶여 있는지 확인
     
    * 패킷 캡처 시작 (수신 패킷 dir0 측)
    * "pktcap-uw -o/tmp/edge-YYYYDDMM.dir0 --switchport 50331652 --dir 0"명령을 입력합니다.

    : Ctl + C에서 패킷 캡처 중지
    : 파일 세대를 관리 할 수 ​​있도록 YYYYDDMM (날짜)을 지정합니다.
    
    [admin@vcs000:~] pktcap-uw -o /tmp/edge-YYYYDDMM.dir0 --switchport 50331652 --dir 0
    The output file is /tmp/edge-20200916.dir0.
    The switch port id is 0x03000004.
    No server port specifed, select 45432 as the port.
    Local CID 2.
    Listen on port 45432.
    Accept...
    Vsock connection from port 1034 cid 2.
    Dump: 19, broken : 0, drop: 0, file err: 0.
    Dump: 32, broken : 0, drop: 0, file err: 0.
    Dump: 46, broken : 0, drop: 0, file err: 0.
    Dump thread exiting...
    Receive thread exiting...
    Dumped 46 packet to file /tmp/edge-20200916.dir0, dropped 0 packets.
    Done.
    [admin@vcs000:~]
    

    ** 패킷 캡처 시작 (송신 패킷 dir1 측)
    * "pktcap-uw -o/tmp/edge-YYYYDDMM.dir1 --switchport 50331652 --dir 1"명령을 입력합니다.

    : dir0과는 별도의 새로운 SSH 세션을 시작해야합니다.
    [admin@vcs000:~] pktcap-uw -o /tmp/edge-YYYYDDMM.dir1 --switchport 50331652 --dir 1
    The output file is /tmp/edge-20200916.dir1.
    The switch port id is 0x03000004.
    No server port specifed, select 45439 as the port.
    Local CID 2.
    Listen on port 45439.
    Accept...
    Vsock connection from port 1035 cid 2.
    Dump: 20, broken : 0, drop: 0, file err: 0.
    Dump: 32, broken : 0, drop: 0, file err: 0.
    Dump thread exiting...
    Receive thread exiting...
    Dumped 32 packet to file /tmp/edge-20200916.dir1, dropped 0 packets.
    Done.
    [admin@vcs000:~]
    
  • 파일이/tmp 아래에 작성되었는지 확인하십시오.
  • [admin@vcs000:/tmp] ls -l
    total 100
    -r--r--r--    1 root     root         12116 Sep 16 01:58 edge-20200916.dir0
    -r--r--r--    1 root     root          5018 Sep 16 01:58 edge-20200916.dir1
    [admin@vcs000:/tmp]
    
  • 이상으로 데이터 검색이 완료되었습니다.
    위에서 만든 파일을 scp 등으로 전송하고 Wireshark 등의 패킷 캡처 툴에 읽어들여 데이터 해석이 가능합니다.

  • 보충사항



    이번에는 VMKernel (관리 및 vMotion)에서 사용되는 vmk0 데이터 캡처를 얻었습니다. NIC (아래 그림의 예에서는 vmnic2, vmnic3)에서 얻을 수 있다고 생각합니다. (만약 인식이 잘못되었거나 다른 좋은 방법이 있다면 코멘트로 알려 주시면 감사하겠습니다)



    기타 참고문헌



    VMware Docs 패킷 캡처를 위한 pktcap-uw 명령 구문

    좋은 웹페이지 즐겨찾기