Oracle 가상 서버의 가상 네트워크 tcpdumping

Oracle 가상 서버의 가상 네트워크 tcpdumping

Oracle Virtual Server 기반 가상 네트워크에서 올바른 무차별 모드를 활성화하는 방법이 있습니까? 카드가 전체 네트워크 트래픽의 일부만 가져오는 것 같습니다.
Oracle Virtual Manager 인프라에서 사용 가능한 모든 네트워크 유형을 시도했습니다.

가능한 가장 간단한 시나리오: 세 호스트의 "로컬" 가상 네트워크, 파일이 한 호스트에서 두 번째 호스트로 전송되고 세 번째 호스트가 네트워크를 tcpdump하려고 합니다. 파일 전송은 성공했지만 세 번째 호스트는 파일 전송 시작부터 하나의 패킷만 수신합니다. 일부 xl 명령을 사용하여 미세 조정해야 한다고 생각합니다. 이는 아마도 모든 Xen 기반 가상화의 일반적인 문제일 것입니다. 다른 네트워크 참가자가 트래픽을 볼 수 있도록 하려면 어떻게 해야 합니까?

모든 네트워크 인터페이스는 다음과 같은 방식으로 생성됩니다.

OVM> create vnic name=capture_network_card network=local on vm id=${id}

여기서 "local"은 가상 네트워크 유형의 이름입니다.

파일 전송 콘솔 로그:

1.2.3.6# scp 1.2.3.4:*p ./
/etc/ssh/ssh_config line 57: Unsupported option "gssapiauthentication"
1.2.3.4's password:
file.pp 100% 126MB 110.5MB/s 00:01

세 번째 호스트의 Tcpdump:

-sh# tcpdump -i eth6

tcpdump: WARNING: eth6: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth6, link-type EN10MB (Ethernet), capture size 65535 bytes
08:42:12.456647 IP 1.2.3.6.37610 > 1.2.3.4.ssh: Flags [S], seq 2743878644, win 29200, options [mss 1460,nop,wscale 10], length 0
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel

OVM "로컬" 네트워크:

OVM> show network name=local
Command: show network name=local
Status: Success
Time: 2019-04-17 11:13:29,434 EDT
Data: 
  Server Local = true
  Server = b0:3c:4c:3a:75:fe:d5:11:88:cc:18:bb:00:30:c5:db  [vmserver2]
  MTU = 1500
  Role 1 = Virtual Machine
  Vnic 1 = 0004fb0000070000591e972d7b9043d0  [local_card_va11]
  Vnic 2 = 0004fb00000700007d493cbb2938f30e  [local_capture_on_3_29]
  Vnic 3 = 0004fb00000700005d89961ae7d76d23  [local_capture_network_card]
  Vnic 4 = 0004fb000007000075309ee8253700e8  [local_card_va9]
  Id = 105e4d86c5  [local]
  Name = local
  Locked = false

현재 여기에는 몇 가지 다른 카드가 있지만 질문과 관련이 없습니다. 다른 호스트/카드를 만들어 보았으나 트래픽 캡처에 성공하지 못했습니다.

추가 조사 결과:

특정 PCAP 파일이 이러한 네트워크에서 재생되는 경우 캡처 카드는 일부 ICMP 및 ARP 패킷만 볼 수 있습니다. 트래픽이 가상 호스트 네트워크 어댑터에 직접 재생되는 경우에만 추가 패킷이 표시됩니다. OVM 및 OVS 콘솔을 통해 서버에서 이 어댑터를 식별했습니다.

[ovm]# exec 'list network'|grep local
  id:105e4d86c5  name:local

그래서105e4d86c5네트워크 ID입니다.

이 네트워크에서 vmserver 인터페이스 검색105e4d86c5

[root@vmserver2 ~]# ip a |grep 105e4d86c5
16: 105e4d86c5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
19: vif1.2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master 105e4d86c5 state UP qlen 32
37: vif3.6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master 105e4d86c5 state DOWN qlen 32
44: vif3.6-emu: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master 105e4d86c5 state UNKNOWN qlen 500

tcpreplay 트래픽을 이 vif* 어댑터에 직접 보내는 경우 해당 가상 호스트는 확실히 이 패킷을 tcpdump할 수 있습니다. 그러나 가상 호스트에서 tcpreplay를 실행하고 서버에서 tcpdump를 실행하면 더 이상 트래픽이 없으며 tcpdump는 "커널에 의해 삭제됨" 패킷에 대해 인쇄합니다.

저는 Xen에 대한 경험이 거의 없지만 VMWare에서는 동일한 구성이 완벽하게 작동합니다.

Oracle Virtual Network에서 효과적인 패킷 스니핑을 수행하는 방법이 있습니까?

관련 정보