虚拟盒和多个 IP

虚拟盒和多个 IP

我在这里设置了几台虚拟机,全部运行 Linux(大部分是 CentOS,但有一台是 Ubuntu)。我通过 SSH 连接到它们,但必须返回虚拟机服务器检查 IP 地址,这很烦人。此外,由于这里的网络设置,它们在重新启动时通常会获得不同的 IP,而我无法控制。

对于我来说,追踪我的虚拟机正在使用的所有 IP 的最简单方法是什么?

答案1

是否要求您使用桥接模式而不是 NAT 模式?当然,如果您启用了 NAT,那么您可以转发各种不同的端口以进行 ssh 访问,并且 IP(当然还有端口)在重启后将保持不变。

您可以在 VirtualBox 3.1.2 用户手册第 6.3.1 节“使用 NAT 配置端口转发”中找到有关此内容的详细信息。

另一个想法:我不禁注意到我的 IP 地址出现在我的虚拟机的 XML 文件中:

    <GuestProperty
        name="/VirtualBox/GuestInfo/Net/0/V4/IP"
        value="10.0.2.15" timestamp="1261587087753023000"
        flags=""/>

(在 Linux 上,您可以在 ~/.VirtualBox/Machines/MyVMName/MyVMName.xml 中找到它)

因此,特别是如果您使用 vboxmanage 来启动/停止虚拟机,您可以 grep 机器的 xml 并更新“某些内容”——比如网页或文本文件?——这样您就始终知道每个虚拟机的 IP 地址。我猜无论您使用的是 NAT 还是桥接网络,这都会起作用,尽管我个人还没有尝试过……我的虚拟机中有一个静态 IP。我不知道谁/何时/在哪里更新了 XML 文件中的这个值。大概 VBox 在检测到需要重定向到虚拟机的 DHCP 回复时会更新它。

答案2

很多选项取决于您的具体网络配置。大多数简单选项都涉及一些网络修改,但您指出情况并非如此。以下是考虑到这一限制的一些选项:

  • 如果您使用与 Active Directory 集成的 Microsoft DHCP 服务器,那么您可能能够向 Active Directory 注册主机名并继承 DNS 名称。查看http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-dhcp-configuring-client.html 我认为需要设置 DHCP_HOSTNAME。我从来没有真正这样做过,因此在 Microsoft 环境中可能需要采取其他步骤才能实现此目的(可能让所有计算机都加入域等)。
  • 如果您正在寻找纯 Linux 解决方案,您可能需要查看 avahi 守护进程。它使用多播 DNS 在本地网络上推送主机名和服务。假设 avahi 在您的所有机器上运行,您应该能够编辑 /etc/nsswitch.conf,验证 mdns4 或 mdns4_minimal 是否包含在主机行中,并且应该能够直接解析所有服务器的主机名。同样,我没有在生产环境中设置它,因此可能需要其他配置。

这两种方式都很麻烦,所以最好与管理网络的人合作,获取静态 IP 和 DNS 名称,正如 Chopper3 提到的那样。您甚至可以使用静态 DHCP 分配,然后修改主机文件,但这同样需要您的网络团队的合作。

答案3

设置一个 cronjob,使 wget 到一个 .php 文件,该文件告知机器的主机名和 ip,然后就完成了。

答案4

静态 IP 和文本编辑器

相关内容