嗅探 NAT 后面的 VirtualBox 机器

嗅探 NAT 后面的 VirtualBox 机器

我有一台 VirtualBox 机器,它有一个连接到 VB 的 NAT 模式的接口。我想做的是嗅闻来自/到任何机器的所有流量位于 NAT 后面。 (我认为我不需要同时嗅探更多机器)。

其背景是软件测试。更具体地说,我想在更大的范围内看到机器到底发出/发出了什么,而不需要过滤掉主机已经产生的所有噪音。

我曾经在使用 VMWare 的 Windows 7 上执行此操作,其中流量通过主机上的单独虚拟接口传输,因此嗅探来自 NAT 后面的(所有)计算机的流量就像仅嗅探该接口一样简单。

现在我尝试使用 VirtualBox 在 Debian 上实现相同的设置,但我发现 VirtualBox 似乎并没有以这种方式分离流量:在 Debian Wireshark 上仅提供eth0nflogloany(在所有其他设备上捕获的伪设备)。当我嗅探时eth0,我无法轻易区分来自主人的东西和来自客人的东西。

VirtualBox 可以做到这一点吗?或者有更好(更简单)的设置吗?

两台机器都运行 Debian 7.0 Wheezy。

注意:我(也许天真地)认为可能的解决方案是:一种区分已翻译的传出数据包的方法。 (是否有NAT真的不留下痕迹?)现在我突然意识到,这至少对于传入数据包...

答案1

为此,您必须在 Linux 下创建一个桥接接口:

sudo brctl addbr br0

这将创建一个 virtualbox 可以附加的桥接口。

然后你必须配置你的虚拟机,以便它使用这个接口:

在 virtualbox 上配置桥接网络

您现在可以嗅探br0“虚拟机”网络上发生的情况。

您可能需要配置br0接口以及 NAT:

# Assign IP address 192.168.42.2 (netmask 255.255.255.0) to br0 
ip addr add 192.168.42.2/24 dev br0
# Tell your host that it should masquerade (NAT) all virtual machines
iptables -A POSTROUTING -o <lan_interface> -j MASQUERADE

请记住,网络中没有运行 DHCP 服务器br0,因此您必须手动配置(IP 地址和默认网关)所有虚拟机。

编辑:brctl修复了命令中的语法错误
编辑2:添加了配置桥接口的信息

相关内容