Damon Hill Asked: 2017-01-27 01:32:21 +0800 CST2017-01-27 01:32:21 +0800 CST 2017-01-27 01:32:21 +0800 CST 用于在 KVM 主机和 VM 的不同服务之间路由流量的网络配置 772 我们有 3 台 KVM 主机(CentOS 7),上面运行着多个虚拟机,每台都提供不同的服务,如 FTP、HTTP、SSH 等。我们只有一个带有 noip.com 域的外部(动态)IP。我需要找到一种方法(如 HTTP 服务器的反向代理)将不同服务的不同请求路由到相应的 VM IP/端口。为了实现此路由,我需要配置/安装什么?谢谢您的帮助。 编辑:我正在添加一个图表,希望它可以更好地解释我想要实现的目标。 networking kvm-virtualization 2 个回答 Voted Best Answer dyasny 2017-01-27T08:32:11+08:002017-01-27T08:32:11+08:00 如果将虚拟机置于 libvirt NAT 网络中,则可以相应地转发端口,因此进入物理机 IP 的特定流量将被定向到虚拟机上的端口。 官方文档推荐使用 libvirt hook,代码非常简单:https ://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections 编辑:否则,最好使用单个 IP 设置 VPN Znuff 2017-02-05T20:20:24+08:002017-02-05T20:20:24+08:00 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 等)
如果将虚拟机置于 libvirt NAT 网络中,则可以相应地转发端口,因此进入物理机 IP 的特定流量将被定向到虚拟机上的端口。
官方文档推荐使用 libvirt hook,代码非常简单:https ://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
编辑:否则,最好使用单个 IP 设置 VPN
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 等)