在 Oracle VM VirtualBox 中嗅探来自不同 VM 的数据包

sniffing packets from different VM's in Oracle VM VirtualBox

有一种情况: 有 2 台虚拟计算机(定义为 A 和 B),每台运行 Ubuntu 16.04。 两者的网络配置:

Adapter1 : Host-only with Promiscuous Allow All
Adapter2:  Nat Network with Promiscuous Allow VM's

两台电脑的mac地址不同

PC A:
仅主机适配器 mac(080027B2EBC7)
NAT 网络适配器 mac(0800273F605C)

PC B:
带 mac(0800272DC6FF)
的主机 onlt 适配器 Nat 网络适配器 mac(080027B8CEC1)

计算机 A:通过终端通过命令发送 ping:

ping google.com

当计算机 A 正在 ping 时,我正在计算机 B 上打开 wireshark。

我在 PC B 上的 Wireshark 上看不到从 PC A 发送的 icmp 数据包。

两台 PC 的 ifconfig:

甲:

    enp0s3    Link encap:Ethernet  HWaddr 08:00:27:b2:eb:c7  
          inet addr:192.168.56.103  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::717a:1d3f:cf7d:a25f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:83 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8788 (8.7 KB)  TX bytes:6807 (6.8 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:3f:60:5c  
          inet addr:10.0.2.4  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::955f:36a:18c3:706f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2689 (2.6 KB)  TX bytes:7197 (7.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:71 errors:0 dropped:0 overruns:0 frame:0
          TX packets:71 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:21609 (21.6 KB)  TX bytes:21609 (21.6 KB)

乙:

   enp0s3    Link encap:Ethernet  HWaddr 08:00:27:2d:c6:ff  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::ca16:a283:da31:e0a2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:97 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:11541 (11.5 KB)  TX bytes:6333 (6.3 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:b8:ce:c1  
          inet addr:10.0.2.7  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::b3c3:7fd:e18c:ccd3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:54 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7449 (7.4 KB)  TX bytes:6511 (6.5 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:95 errors:0 dropped:0 overruns:0 frame:0
          TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 

可能是我对VM Networks的理念理解有误

感谢您的帮助

你没有清楚地表达你的问题,但我假设你想在 VM-B 上查看 ICMP 流量,当你从 VM-A ping google 时,如果是这样,那么你有一个错误:

Host-Only adapter 您可以通过它访问 VM-B 不适用于 outer/external/public(更清晰的)网络。

您可以使用此命令来检查哪个 iface 用于路由:

ip route get $(host google.com | head -n1 | grep -oP '[0-9][0-9\.]+')

如果你想让它路由为 VM-A -> VM-B -> 互联网,那么你必须为此设置默认(或专用)路由