使用 KVM 的多个虚拟机充当 Web 服务器,其中只有 1 个外部 IP 可用

使用 KVM 的多个虚拟机充当 Web 服务器,其中只有 1 个外部 IP 可用

我正在尝试为我的实验室设置一台服务器,我们将在该服务器上运行多个 Web 服务和站点。由于将有几个人设置和管理这些服务,我决定(经过大量的 Google 搜索/阅读)避免冲突等的最佳方法是创建一系列虚拟机。我以前处理过一些虚拟机,但针对的是更简单的场景。

主机操作系统是 CentOS 7,我已经设置的 KVM 客户机使用 Debian。我最初使用桥接接口,但显然这是一个错误的选择,因为我有只有一个外部IP可用。因此,我认为我需要做的是创建一个将主机与客户机连接起来的内部 LAN,如我制作的这张图所示(仍然管理员应该能够通过 ssh 访问每个虚拟机从外面。):

主机 - VM 图表

我的问题是:

我该怎么做创建一个“内部 LAN”,其中每个虚拟机仍然可以使用 SSH 从外部访问,而无需使用桥接接口(对我来说这很容易但不可行)?

答案1

如果对在这样的配置下 ssh 访问虚拟机有疑问。

您有不同的选择(不是按最佳优先顺序排列):

  • 在 KVM 主机上,将不同的 tcp 端口 Dst-nat 到不同的 VM。
  • 通过创建 ssh 隧道或嵌套 ssh,使用专用 VM 作为 SSH“代理”。
  • 使用 VPN 连接到内部 LAN,使用专用 VM 作为 VPN 服务器,使用 KVM 上的 dst-nat vpn 端口(安全)或使用 KVM 作为 VPN 服务器(简单)

如果您考虑网络访问:

  • 使用专用虚拟机作为反向代理

附言: 我理解为什么把不同的站点放在不同的虚拟机上而不是一个共享的虚拟机上。 - 安全性(入侵一个站点不太可能影响其他站点) - 要求(不同的站点可能需要不同的版本甚至不同的操作系统)

添加:

我从另一个角度看待问题——网络设计。

实现您所讨论的目标的唯一方法(使管理员可以直接访问 VM 上的 ssh):

  • 为虚拟机分配外部可路由的 IP。
    • 如果“外部 IP”是公共互联网地址 - 公共 IP 并确保它可以在互联网上路由。
    • 如果“外部 IP”是私有的 - 私有 IP 并使其可路由到您的所有 LAN

相关内容