如何找到可以通过 SSH 连接的 KVM 虚拟机的 IP 地址?

如何找到可以通过 SSH 连接的 KVM 虚拟机的 IP 地址?

我已遵循本指南(Ubuntu 11.10 上使用 KVM 进行虚拟化)在我的 Ubuntu 11.10 服务器上设置我的 KVM(虚拟机软件)。但是,我在创建 VM 时没有设置 VM 的 IP 地址,而是使用:

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --ip=192.168.0.101 --gw=192.168.0.1 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

我使用:(我从命令行删除了“--ip=192.168.0.101 --gw=192.168.0.1”)

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

我已按照指南的指示设置了网桥,并且新虚拟机的接口已连接到网桥。

我假设 KVM 将通过 DHCP 分配我的虚拟机,但我没有有关新虚拟机 IP 地址的信息,在哪里可以找到虚拟机的 IP 地址和新虚拟机的 SSH?谢谢。

[注:我在不知道虚拟机 IP 地址的情况下成功登录了虚拟机。使用 ”Xming + SSH 与 X 图形转发但是没有为我的虚拟机分配 DHCP IP 地址,除了上述问题,我还有另一个问题:如何在我的虚拟机上启用 DCHP,以便当我使用 Xming 通过“virt 查看器”登录时,我至少可以看到我的虚拟机IP地址在那里。]

答案1

尝试这个:

virsh net-list
virsh net-dhcp-leases <net-name>   <--- net-name from above command

如果您知道 MAC 地址,也可以使用以下表格:

virsh net-dhcp-leases <net-name> --mac <mac-address>

MAC地址可以通过dumpxml命令找到。看有没有办法确定kvm主机中哪个虚拟接口属于虚拟机?

答案2

您可以运行arp -n查看您的虚拟机选择的 IP。这样,您就不必登录来宾虚拟机并输入ifconfig

下面的博客提供了更多详细信息,并包含一个自动查找虚拟机地址的 perl 脚本。

提示:查找虚拟机的 IP 地址

答案3

我想这是一个老问题,但如果您使用 nat 或桥接专用网络,当前版本会使virsh这变得容易得多。我有steak一个在(路由)专用网络(又名“NAT”)上命名的虚拟机。只需两个命令即可查找内置机制分配的 IP:

$ sudo virsh list
 Id    Name                           State
----------------------------------------------------
 21    steak                          running

$ sudo virsh domifaddr steak
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      76:0c:28:ab:0e:ee    ipv4         10.14.1.1/24

我还有另一个虚拟机 ( eggs),它桥接到常规网络(连接到虚拟机管理程序主机上的桥接设备)。 Libvirt 不会为其分配地址;它从我的网络的 DHCP 服务器获取地址,在我的情况下,该服务器还会更新动态 DNS。当domifadd该虚拟机没有输出时,这是一种可能的可能性。因此,您基本上必须像查找任何其他机器一样查找地址 - 在 arp 表中查找它可能是最简单的 - 这意味着ip neighbour现在,asarp已弃用并且不再出现在某些发行版上。幸运的是,对于我们这些不会用额外元音拼写事物的人来说,您还可以使用较短的版本,例如ip neighand ip n(或ip neighbor)。 ;) 下面,我用来domiflist查找 MAC 地址(请注意,它连接到br0“源”列中),然后在 arp 表中找到它。

$ sudo virsh domifaddr eggs
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

$ sudo virsh domiflist eggs
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:2c:ac:ee

$ ip neigh | grep -i 52:54:00:2c:ac:ee
192.168.0.226 dev br0 lladdr 52:54:00:2c:ac:ee REACHABLE
$ host eggs
eggs.home.domain.com has address 192.168.0.226

答案4

要查看您的虚拟机的 IP 地址,只需运行:

$ arp -n

如果您的系统上未安装 arp,只需安装该net-tools软件包。

相关内容