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

时间:2020-03-21 11:44:27  来源:igfitidea点击:

找到KVM Linux Guest虚拟机的IP地址并不是一项大问题。
如果我们对虚拟机进行了控制台访问,则可以使用"IP"命令轻松查找KVM Guest的IP地址。
但是,也可以识别KVM VM的IP地址,而无需访问其控制台。
在本教程中,我们将看到一些不同的方法可以在Linux中找到KVM虚拟机(Guest)的IP地址。

查找KVM虚拟机的IP地址

我们可以从Virsh命令行界面或者通过像Verv-Manager这样的KVM图形管理工具找到KVM Guest虚拟机的IP地址。

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

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

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

  • NET-DHCP租赁,
  • domifaddr。

1.净DHCP租赁

Net-DHCP-Lease命令用来检索给定虚拟网络和/或者给定网络接口的DHCP租赁信息。

确保VM正在运行!

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

$virsh net-list

示例输出:

Name      State    Autostart   Persistent
-------------------------------------------
 default   active   yes         yes

如我们所见,我的KVM主机有一个名为"默认"的虚拟网络。
这是默认情况下由KVM创建的私有虚拟网络桥。
它提供了自己的子网和DHCP来配置Guest网络,并使用NAT访问主机网络。

让我们查看"默认"虚拟网络的基本信息:

$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
--------------------------------------------------------------------------------------------------------------
 2017-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
 2017-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

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

2. Domifaddr.

来自命令行中查找KVM虚拟机的IP地址的另一种方法是使用"DOMIFADDR"命令查询客户机操作系统的IP地址。

首先,让我们获取运行KVM Guest Machines的列表:

$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

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

ARP代表地址解析协议,用于查找给定IPv4地址的网络邻居的媒体访问控制地址。
它操纵或者显示内核的IPv4网络邻居缓存。
它可以向表添加条目,删除一个或者显示当前内容。

如果无法使用ARP命令,请安装"NET-Tools"包。

在Debian,Ubuntu:

$sudo apt install net-tools

在CentOS,Rhel:

$sudo dnf install net-tools

要使用"ARP"命令在Linux中找到KVM虚拟机的IP地址,只需运行:

$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

我们是否在上面的命令中注意到"virbr0"条目?
它是我们的KVM虚拟网络接口,因此KVM VM的IP地址为192.168.122.119和192.168.122.20。
如果只有一个或者多个VM运行,则可以。
但如果你有很多,你如何知道哪个MAC地址对应于你想要的地址?
这是"domiflist"和"dumpxml"命令派上派上的位置。

查找运行虚拟机列表:

$virsh list

获取任何运行VM的MAC地址,例如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

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

Virt-Manager是virsh命令行实用程序的图形替代方法。
如果我们已经在KVM主机中安装了它,请查找任何运行KVM虚拟机的IP地址令人难以置信的容易!

打开Virt-Manager应用程序,然后双击任何运行的虚拟机。
接下来单击菜单列中的"显示虚拟硬详细信息"图标。
最后从列表中单击"NIC:XX:XX:XX"设备,我们将在右侧看到KVM VM的IP地址。