例如,我在主机上有一个 VMware Workstation,host
还有一个在 VMware 下运行的虚拟机zeddicus
。基本上,我理解在普通网络中,您将计算机插入网络(或 wifi),由 DHCP 分配一个 IP 地址(假设没有静态 IP),然后您就可以开始了。但是,这在具有 DHCP 的虚拟机上如何工作?当您运行虚拟机时,所有流量都通过路由host
,比如说 10.0.0.10……但是使用桥接连接时,zeddicus
如果您运行 ipconfig/ifconfig,则会有另一个 DHCP 地址(10.0.0.11)。通过外部网络查看时,它如何工作?所有流量(我一定是遗漏了什么)都通过 10.0.0.10 路由到zeddicus
10.0.0.11,还是网络接口以某种方式在网络上注册为具有两个不同的地址?我猜这也适用于 MAC 地址,因为一个接口应该只有一个地址,但虚拟机有自己的地址。
基本上,我不明白在主机上运行的虚拟机如何可以在网络上拥有与物理网络上的主机不同的 IP 地址,因为似乎所有流量都会通过主机路由。
答案1
在谈论数据包通过设备时,使用术语“路由”是很自然的,但在网络中,路由意味着一个特定的东西 - 它意味着数据包从一个第 3 层网络移动到另一个。桥接是数据包在第 2 层移动,并且在桥接之前和之后实际上是相同的。
使用网桥(除非采取控制措施阻止某些流量),到达网桥一端的任何数据包都将从另一端发出。这样一来,两端的设备就位于同一网络上。
这意味着广播流量(例如 DHCP)将顺利地穿过桥接器,包括传出请求(源自 VM 虚拟 MAC)和将发送到虚拟 MAC 的回复。由于 VM 主机接口充当桥接器,它将把网络上的所有数据包传递到桥接器上的所有设备。它的行为方式与桥接的两个物理接口完全相同。
答案2
您会注意到 VMWare 安装了虚拟网络接口 - 前往ncpa.cpl
查看它们。
您还会注意到,如果您查看物理网卡的属性,您会看到一个名为“Vmware Bridge Protocol”的活动协议
我想象通过 Vmware Bridge 协议,发往虚拟机的传入流量在到达主机之前被拦截并转发到虚拟机。类似于通过使用特殊驱动程序对 USB 流量所做的处理。
我敢打赌,这个桥接协议将物理网卡置于混杂模式,使其能够“听到”到达网卡的所有流量。它可能在该接口的 TCP/IP 协议获取流量之前查看所有流量,或者“Vmware 桥接协议”在 IP 标头中有一个不同的“协议号”。