问题:
我打算在一个centos主机服务器(最可能使用KVM)上设置几个虚拟的centos,rhel或ubuntu客机。 每个访客虚拟机正在运行一个webapp +一些其他服务/协议的实例,并且每个访客虚拟机都需要在主机外部的任何打开的端口上可访问,就好像每个虚拟机都是一个单独的DNS。
我在networking技术/configuration(显然)弱,所以我只是试图find这个问题的第一个边缘即。 我需要考虑的主要方法是在这个问题上立足。 networkingconfiguration“伪代码”,如果你愿意。 🙂
例:
我们说我拥有域foo.com。
我有一个物理的CentOS机器名为guests.foo.com。
在这台物理主机上,我有三台虚拟机在运行。 我希望访客虚拟机可以访问1.guests.foo.com,2.guests.foo.com和3.guests.foo.com。 来宾虚拟机运行centos,rhel和ubuntu发行版。
每个虚拟机都需要响应任何(本地打开的)端口,而不仅仅是httpstream量,还包括ssh连接和git:协议操作。
我从哪里开始,最优雅的方法是什么? 大致来说,主持人和客人各自最低限度需要为此做好准备?
注意:
随着我学习更多,我会更新问题文字+评论。
除非每个虚拟机至less有一个公有IP,否则它们不能让它们在“任何”打开的端口上进行响应(这意味着您需要将NAT请求发送到主机系统的公共IP上的特定端口到虚拟机的内部IP)。 比方说,你只有一个公共IP,例如。 2.3.4.5并且在主机上configuration。 现在,您可以将请求到达端口80的请求redirect到1个虚拟机,并请求到达另一个虚拟机的443,并请求将任何其他端口连接到您select的任何虚拟机,但总的来说,您将分配IP上的65530个可用端口,将它们路由到您的虚拟机,以便任何特定的虚拟机不能监听另一个虚拟机监听的端口。
如果你有多个公共IP(每个虚拟机至less有一个),你可以创build虚拟机IP的DNSlogging。
在多IP设置你应该有一个小的公共子网,例如2.3.4.0/28。 该networking包含以下可用IP:
2.3.4.0是networkingIP不可用的,2.3.4.7是networking的广播IP。 现在在这种方法中,通常使用第一个IP(2.3.4.1)作为子网的其余部分的网关。 您的ISP或DataCenter为2.3.4.0/8添加2.3.4.1的路由作为其防火墙/路由器的下一跳。 现在,所有来自互联网对2.3.4.0/8中的任何IP的请求来到具有IP 2.3.4.1的机器。 所以合乎逻辑的做法是在你的主机上有这个IP。
现在你可以采取两种方法:
将VM机器networking接口桥接到具有IP 2.3.4.1的主机接口,并在其桥接接口上为VM提供IP 2.3.4.2,3和4。
在VM上有一个仅主机networking,例如。 192.168.10.0/24,主机虚拟接口上的IP地址为192.168.10.1,虚拟机接口上的地址为192.168.10.2-4。 然后,您可以将来自2.3.4.X的NAT请求转换为192.168.10.X.
在这两种情况下,您将需要的DNSlogging如下所示:
1.guests.foo.com 2.3.4.2 2.guests.foo.com 2.3.4.3 3.guests.foo.com 2.3.4.4等
希望这可以解释一些问题。
主机名可以指向任何地方。 它是您需要的每个虚拟机的唯一的全球IP地址。 (确保你真的拥有了它们,在世界的某些地方可能很难进入)每个虚拟机都需要自己的IP地址,如果你想从Internet访问它们,它们必须是全局地址。
最简单的方法是为虚拟机使用桥接networking。 如何设置这个主要取决于外部因素,比如是否安装虚拟机控制面板,但是这个方法将为您提供在本地机器上搭build桥梁的基本步骤,以便您可以开始testing并变得更加熟悉以及如何一切工作。