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