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 虚拟网络中进行有效的数据包嗅探?

相关内容