答案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 等)