对于托管一些 LAMP 虚拟机(使用 VirtualBox)的 centos 服务器,我有一个外部 IP。我希望能够使用这个单一主机的外部 IP 来寻址虚拟机。就像从外部将端口转发到特定机器一样:
2.2.2.2 > external IP [WAN]
10.0.0.1 > host IP (tiger) [LAN]
10.0.0.2 > virtual client #1 (zebra)
10.0.0.3 > virtual client #1 (mouse)
因此外部IP通过路由器转发到主机IP(tiger),然后它会查看端口并将其发送给zebra或鼠标。两个虚拟客户端可能(不应该)对 Apache 等使用相同的端口。
最好是在主机上完成路由解决方案,因为我无法访问路由器本身(但如果管理员可以完成,可以要求特定设置)
希望我说清楚了。
答案1
如果您只是想将 2.2.2.2 上的不同端口路由到不同的虚拟机,您可以使用iptables。请参阅CentOS指南了解更多详细信息,包括如何使规则持久化(iptables
仅更改设置,直到下次重新启动为止)。要将端口 13080 上的传入 TCP 请求定向到端口 80 上的 10.0.0.1:
iptables -t nat -A PREROUTING -p tcp --dport 13080 -j DNAT --to 10.0.0.1:80
如果要根据 HTTP 请求中的主机名选择 VM,则需要 HTTP 服务器充当调度程序。您可以使用 Apache,但对于如此快速、简单的任务,nginx很受欢迎。