CentOS Hyper V Guest VM 无法通过 Internet 访问

CentOS Hyper V Guest VM 无法通过 Internet 访问

配置详细信息

我在 HyperV 主机上有一个 CentOS VM,它有两个接口,一个接口通过交换机 (192.168.1.8 /24) GW 192.168.1.254 连接到域网络。另一个接口直接连接到防火墙 (fortigate) (172.20.0.1/29) GW 172.20.0.254。上述接口也在主机上设置为 Hyper-V 虚拟交换机。

网关是在 FW 设置上设置的用于隔离流量的接口。

172.20.0.x /29是ISP分配的公网地址段。

客户虚拟机有两个接口 eth0 (192.168.1.7/24),通过主机上的 192.168.1.8 (虚拟交换机) 连接。eth1(172.168.0.2/29),通过主机上的 172.20.0.1 (虚拟交换机) 连接。

问题是我可以从主机和防火墙 ping 虚拟机上的两个接口。但我无法从互联网 ping eth1(172.20.0.2),但可以从互联网访问主机接口 172.20.0.1。

请注意,CentOS Guest VM 可以 ping 局域网资源,并且可以通过两个接口的源 ping 访问互联网。

当我从 AWS 上的外部源 IP 跟踪到两个地址 172.20.0.1 和 172.20.0.2 的路由时。我可以到达 172.20.0.1(主机接口)。从外部到 172.20.0.2(虚拟机接口)的路由在防火墙前终止。

我的思路现在让我想到需要在 FW 上进行额外的配置,也许在 FW 上添加一条静态路由,将流量直接中继到虚拟机?有什么想法吗?我只是想在开始这个练习之前确定一下。

答案1

这是一个非常不寻常的配置,并且存在一些错误和/或拼写错误。

执行此操作的正常方法是将 Hyper-V 交换机设置为外部交换机。这样做允许 VM 虚拟 NIC 直接与其他网络硬件通信。例如,192.168.1.7 将与 192.168.1.254 通信。对于 192.168.1.8,主机根本不需要网络适配器或 IP 地址。172.20.0.0 子网也是如此。我怀疑您可能将内部虚拟交换机设置为 NAT,并且子网划分不当。

您提到 172.168.0.2/29,我认为是 172.20.0.2/29 的拼写错误。但是 172.20.0.2/29 仅涵盖地址 172.20.0.0-172.20.0.7,而您将网关指定为 172.20.0.254。由于网关不在子网中,因此此接口无法路由到它。这让我认为您访问的 172.20.0.1 不是您的主机,而是防火墙或路由器上的另一个接口。

您提到 172.20.0.0/29 是由 ISP 分配的,但您已标记了前面的路由器、后面的防火墙以及具有相同子网的 VM。路由器和防火墙通常应在内部和外部具有不同的子网。看来您试图在主机和防火墙之间使用与防火墙和路由器之间相同的子网。虽然有这样的防火墙充当透明桥,但更常见的是使用路由段。

总的来说,我不知道你想做什么。使用多个适配器在不同子网上的多宿主机相对少见,而将一台机器放在防火墙后面的外部互联网(我们称之为 DMZ)和内部 LAN 上是一种非常糟糕的安全做法。使用一个适配器和一个 DMZ,或者一个适配器和一个 NAT,然后让防火墙或路由器在 DMZ 和 LAN 子网之间路由,这样做要简单得多。

答案2

您不能在一台机器上有两个默认网关,另一个将变得多余。您可以隔离流量并直接从主机接口路由到互联网。

相关内容