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

Xia*_*lin 31 networking kvm ubuntu 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
Run Code Online (Sandbox Code Playgroud)

我用过:(我从命令行中删除了“--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
Run Code Online (Sandbox Code Playgroud)

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

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

[注意:我在不知道 VM 的 IP 地址的情况下设法登录了 VM。使用“ Xming + SSH with X Graphic Forwarding ”但是没有分配给我的VM的DHCP ip地址,除了上述问题,我还有另一个问题:如何在我的VM上启用DCHP,以便当我使用Xming通过“ virt viewer”我至少可以看到我的 IP 地址在那里。]

小智 32

尝试这个:

virsh net-list
virsh net-dhcp-leases <net-name>   <--- net-name from above command
Run Code Online (Sandbox Code Playgroud)

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

virsh net-dhcp-leases <net-name> --mac <mac-address>
Run Code Online (Sandbox Code Playgroud)

MAC 地址可以从 dumpxml 命令中找到。请参阅是否有办法确定哪个虚拟接口属于 kvm 主机中的虚拟机?

  • 这是正确答案。无需任何黑客攻击即可工作。非常感谢。 (6认同)

小智 22

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

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

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

  • 如果链接失效,请转到 xyz 网页以获取答案,请发布“完整答案” (2认同)

dan*_*uer 11

我想这是一个老问题,但是virsh如果您使用 nat 或桥接专用网络,当前版本会使这变得容易得多。我有一个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
Run Code Online (Sandbox Code Playgroud)

我还有另一个虚拟机 ( eggs),它桥接到常规网络(连接到管理程序主机上的桥接设备)。Libvirt 不会为其分配地址;它从我的网络的 DHCP 服务器获取地址,在我的情况下,它也会更新动态 DNS。当domifadd此 VM没有输出时,这是一种可能的可能性。因此,您基本上必须像在任何其他机器上一样找到地址——在 arp 表中找到它可能是最简单的——这意味着ip neighbour现在,asarp已被弃用,不再存在于某些发行版中。幸运的是,对于我们这些不使用 extrae vouwels 拼写事物的人来说,您还可以使用较短的版本,例如ip neighip 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
Run Code Online (Sandbox Code Playgroud)


Ant*_*rba 5

vms 列表:

virsh list
Run Code Online (Sandbox Code Playgroud)

从名称获取 vm MAC

virsh domiflist debian8
Run Code Online (Sandbox Code Playgroud)

使用 grep 扫描您的 vm 子网(MAC 必须大写)

nmap -sP 10.0.0.0/24 | grep 52:54:00:FD:1F:92 -B 3 
Run Code Online (Sandbox Code Playgroud)

结果

Nmap scan report for 10.0.0.173
Host is up (0.0012s latency).
MAC Address: 52:54:00:FD:1F:92 (QEMU Virtual NIC)
Run Code Online (Sandbox Code Playgroud)


Alx*_*lxs 5

要查看 VM/s 的 IP 地址,只需运行:

$ arp -n

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