我正在尝试建立一个非常简单的网络拓扑,包括两个 Ubuntu 16.04 作为两个主机,如下所示:
VM1 <--> VM2
两个虚拟机都连接到 VirtualBox 主机专用网络,具有静态 IP 地址(10.0.0.1 和 10.0.0.2)。这里的任务是 VM2 向 VM1 发送一个带有欺骗性 IP 地址(例如 10.0.0.3)的数据包并获取返回的数据包。发送欺骗性数据包很容易,但我不知道如何获取返回的数据包,因为它将被发送到欺骗性地址。
我正在考虑让另一台虚拟机充当中间的路由器:
VM1 <--> 路由器 <--> VM2
但不确定如何将所有传出的流量从 VM1 重新路由到 VM2?
非常感激任何提示,包括针对原始问题的提示,因为我卡了几天,但令人惊讶的是没有相关问题。
答案1
我相信您知道,您所做的事情违反了网络惯例。为了获得所需的行为,您需要进行更多欺骗。问题可能出在地址解析协议 (ARP) 中。您有 IP 地址和 MAC 地址,ARP 会在两者之间进行转换。更多详细信息请参阅 defalt 的回答。您需要将 ARP 响应伪装成“谁有 10.0.0.3”,这样 2 就会认为 1 的 MAC 是 3 的 MAC。然后您将在 1 处收到数据包。我没有检查过,但如果您在 1 的接口上配置 2 个 IP 地址会发生什么?这可能是最简单的方法。