如何查找 KVM 虚拟机的 IP 地址

查找 KVM Linux 来宾虚拟机的 IP 地址并不是什么大问题。 如果您有虚拟机的控制台访问权限,您可以使用以下命令轻松找到 KVM 来宾的 IP 地址 ip 命令。 但是,也可以在不访问其控制台的情况下识别 KVM 虚拟机 IP 地址。 在本教程中,我们将看到几种在 Linux 中查找 KVM 虚拟机(来宾)IP 地址的不同方法。

查找 KVM 虚拟机的 IP 地址

我们可以从以下位置找到 KVM 来宾虚拟机的 IP 地址 虚拟 命令行界面或通过任何 KVM 图形管理工具,如 虚拟管理器.

首先,我们将看到命令行方式。

A. 使用 virsh 命令查找 KVM 虚拟机的 IP 地址

维尔什 是用于创建和管理 KVM 来宾虚拟机的命令行界面。 它提供了以下两个命令来查找虚拟机的 IP 地址:

  1. 净 dhcp 租赁,
  2. domifaddr.

1.net-dhcp-leases

net-dhcp-leases 命令检索给定虚拟网络和/或给定网络接口的 DHCP 租用信息。

确保您的虚拟机正在运行!

首先,列出 KVM 主机中可用的虚拟网络。 为此,请运行:

$ virsh net-list

样本输出:

 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
列出 KVM 主机中可用的虚拟网络

如您所见,我的 KVM 主机有一个名为 default. 这是 KVM 默认创建的私有虚拟网桥。 它提供自己的子网和 DHCP 来配置来宾网络,并使用 NAT 访问主机网络。

让我们看看基本信息 default 虚拟网络:

$ virsh net-info default

样本输出:

Name:           default
UUID:           ce25d978-e455-47a6-b545-51d01bcb9e6f
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

由于 KVM 有自己的 DHCP,我们可以使用以下命令找出已分配给每个 KVM 虚拟机的 IP 地址:

$ virsh net-dhcp-leases default

样本输出:

Expiry Time           MAC address         Protocol   IP address           Hostname      Client ID or DUID
---------------------------------------------------------------------------------------------------------------
 2020-07-25 18:51:53   52:54:00:42:b6:5a   ipv4       192.168.122.119/24   centos8       01:52:54:00:42:b6:5a
 2020-07-25 18:54:04   52:54:00:61:2a:88   ipv4       192.168.122.20/24    centos8uefi   01:52:54:00:61:2a:88
使用 virsh 查找 KVM 虚拟机的 IP 地址

您不必登录到虚拟机。 从 KVM 主机的终端,我们可以很容易地找到所有正在运行的 KVM 虚拟机的 IP 地址。

2.domifaddr

从命令行查找 KVM 虚拟机 IP 地址的另一种方法是使用 “domifaddr” 命令。

首先,让我们获取正在运行的 KVM 来宾机器的列表:

$ virsh list

样本输出:

Id   Name           State
------------------------------
 1    centos8        running
 2    centos8-uefi   running

正如您在输出中看到的,有两个 KVM 来宾正在运行! 要查找名为“centos8”的 KVM 虚拟机的 IP 地址,请运行:

$ virsh domifaddr centos8

样本输出:

Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:42:b6:5a    ipv4         192.168.122.119/24
使用 virsh domifaddr 命令查找 KVM 虚拟机的 IP 地址使用 virsh domifaddr 命令查找 KVM 虚拟机的 IP 地址

B. 使用arp命令查找KVM虚拟机的IP地址

ARP, 代表 一种地址 R解决方案 rotocol,用于查找给定 IPv4 地址的网络邻居的媒体访问控制地址。

它操纵或显示内核的 IPv4 网络邻居缓存。 它可以向表格中添加条目、删除条目或显示当前内容。

如果 arp 命令不可用,请安装 “网络工具” 包裹。

在 Debian、Ubuntu 上:

$ sudo apt install net-tools

在 CentOS、RHEL 上:

$ sudo dnf install net-tools

在 Linux 中使用以下命令查找 KVM 虚拟机的 IP 地址 arp 命令,只需运行:

$ arp -n

样本输出:

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.122.20           ether   52:54:00:61:2a:88   C                     virbr0
192.168.225.34           ether   7c:d3:0a:0c:6b:9a   C                     wlp9s0
192.168.225.1            ether   12:b0:25:2b:ec:19   C                     wlp9s0
192.168.122.119          ether   52:54:00:42:b6:5a   C                     virbr0
使用 arp 命令查找 KVM 虚拟机 ip 地址使用 arp 命令查找 KVM 虚拟机 ip 地址

你有没有注意到 virbr0 上述命令中的条目? 它是我们的 KVM 虚拟网络接口,因此 KVM 虚拟机的 IP 地址是 192.168.122.119 和 192.168.122.20。

如果只有一个或几个 VM 正在运行,则可以。 但是如果你有很多,你怎么知道哪个MAC地址对应你想要的? 这里是 domiflistdumpxml 命令派上用场。

查找正在运行的虚拟机列表:

$ virsh list

获取任何正在运行的 VM 的 MAC 地址,例如 example centos8,使用命令:

$ virsh domiflist centos8

样本输出:

 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 vnet0       network   default   virtio   52:54:00:42:b6:5a

最后找到上述mac地址关联的IP地址:

$ arp -n | grep 52:54:00:42:b6:5a

或者,

$ arp -an | grep 52:54:00:42:b6:5a

样本输出:

? (192.168.122.119) at 52:54:00:42:b6:5a [ether] on virbr0
使用 arp 命令查找 KVM 虚拟机的 IP 地址使用 arp 命令查找 KVM 虚拟机的 IP 地址

C. 使用 Virt-manager GUI 查找 KVM 虚拟机的 IP 地址

虚拟管理器 是 Virsh 命令行实用程序的图形替代方案。 如果您已经在 KVM 主机中安装了它,那么查找任何正在运行的 KVM 虚拟机的 IP 地址非常容易!

打开 Virt-manager 应用程序并双击任何正在运行的虚拟机。 接下来点击 “显示虚拟硬细节” 菜单栏中的图标。 最后点击 “网卡:xx:xx:xx” 设备,您将在右侧看到 KVM 虚拟机的 IP 地址。

使用 Virt-manager 查找 KVM 虚拟机的 IP 地址使用 Virt-manager 查找 KVM 虚拟机的 IP 地址

希望这可以帮助。

相关阅读:

  • 如何从主机中查找 Vagrant 机器 IP 地址

特色图片由 布雷特·赛尔斯像素.