网络配置用于在 KVM 主机和虚拟机的不同服务之间路由流量

网络配置用于在 KVM 主机和虚拟机的不同服务之间路由流量

我们有 3 台 KVM 主机(CentOS 7),上面运行着几台虚拟机,每台虚拟机都提供不同的服务,如 FTP、HTTP、SSH 等。我们只有一个外部(动态)IP 和一个 noip.com 域。我需要找到一种方法(如 HTTP 服务器的反向代理)将不同服务的不同请求路由到相应的 VM IP/端口。为了实现这种路由,我需要配置/安装什么?谢谢你的帮助。

编辑:我添加了一个图表,希望它可以更好地解释我想要实现的目标。

数据中心图

答案1

如果将虚拟机置于 libvirt NAT 网络后面,则可以相应地转发端口,这样进入物理机 IP 的特定流量将被定向到虚拟机上的端口。

官方文档建议使用 libvirt hook,代码非常简单:https://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections

编辑:否则,使用单个 IP 时,最好的选择是设置 VPN

答案2

SSH 不支持“虚拟主机”。

一些 FTP 守护进程支持虚拟主机,但不幸的是并非所有客户端都遵循 RFC 7151。

HTTP 支持虚拟主机,因此您只需要在主 IP 上使用反向代理(即:nginx、apache 的 mod_proxy 等)

至于您可以使用什么解决方案,除了上面提到的解决方案(VPN)之外,您还可以使用不同的外部端口。

因此,如果您有 VM1、VM2 和 VM3,则可以将端口 2201、2202、2203 重定向到 VM1、VM2、VM3 等上的内部端口 22。

您也可以对 FTP 执行相同操作(2101 -> VM1:21、2102 -> VM2:21 等)

相关内容