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

时间:2020-01-09 14:16:28  来源:igfitidea点击:

如何从Linux主机本身查找Linux KVM guest虚拟机的IP地址?
我想使用ssh进入KVM guest虚拟机。
如何在CentOS Linux 7.x/8.x服务器上找到KVM虚拟机客户机的IP地址?
有多种方法可以从主机获取KVM guest虚拟机的IP地址。
如果使用的是virbr0(默认桥),请使用virsh命令。
如果您正在通过诸如br0之类的桥接网络使用专用的DHCPD,从而可以访问物理LAN,那么也可以使用arp命令的组合或检查DHCP服务器日志。

查找Linux KVM来宾虚拟机的IP地址的步骤

  • 打开终端应用程序或使用ssh登录以托管服务器
  • 获取网络列表:virsh net-list
  • 执行命令:virsh net-dhcp-leases networkNameHere

让我们详细了解步骤。

方法1使用virsh在KVM中查找VM的IP地址

执行以下命令以列出网络:

# virsh net-list
# virsh net-info default
# virsh net-dhcp-leases default

这是我的centos-8-cloud VM的另一个会话:

$ virsh net-dhcp-leases default
Expiry Time           MAC address         Protocol   IP address          Hostname         Client ID or DUID
----------------------------------------------------------------------------------------------------------------
2020-08-23 18:53:39   52:54:00:33:0c:ee   ipv4       192.168.122.32/24   centos-8-cloud   01:52:54:00:33:0c:ee

您可以输入ssh命令以IP地址192.168.122.124登录到名为theitroad-openbsd的OpenBSD VM:

$ ssh [email protected]

对于CentOS 8 VM:

$ ssh 192.168.122.32
$ ssh [email protected]

方法2使用domifaddr获取Linux KVM guest虚拟机的IP地址

查找一个名为freebsd11.1的运行域的网络接口地址:

$ virsh list
$ virsh domifaddr freebsd11.1

结合virsh和bash shell while循环,如下所示:

virsh list --name | while read n 
do 
  [[ ! -z $n ]] && virsh domifaddr $n
done

方法3:使用arp命令获取KVM来宾IP地址

使用virsh命令找出域的mac地址:

$ virsh list
$ virsh dumpxml VM_NAME | grep "mac address" | awk -F\' '{ print }'
$ arp -an | grep 52:54:00:ce:8a:c4

简而言之,使用以下virsh命令中的任何一个来获取IP地址

$ virsh list
$ virsh domifaddr rhel7

向Libvirt NSS模块打个招呼

当涉及到管理来宾并其中执行命令时,登录来宾操作系统并执行该工作很方便。
在这种情况下,用户习惯于使用ssh。
理想情况下,

ssh user@ip-Address-Here

但是,取决于虚拟网络配置,可能并非总是可能。
例如,当使用libvirt NATed网络时,其dnsmasq(由libvirt产生)将IP地址分配给域。
但是默认情况下,在涉及主机名转换时,不咨询dnsmasq进程。
用户可通过配置其libvirt网络以分配静态IP地址并保持/etc/hosts文件同步来解决此问题。
但这给用户带来不必要的负担。
这就是NSS模块的来历。
使用yum命令/dnf命令/apt命令/apt-get命令安装它:

$ sudo yum install libvirt-nss ## RHEL/CentOS/Fedora ##
$ sudo apt install libnss-libvirt ## Debian/Ubuntu ##

确保/etc/nsswitch.conf更新如下。
使用grep命令验证它:

$ grep -w 'hosts:' /etc/nsswitch.conf
files libvirt libvirt_guest dns mymachines

现在列出vm,并尝试使用ping命令或ssh命令通过ibvirt NSS模块解析这些VM:

$ virsh list
$ ping vm-name-here
$ ssh user@vm-name-here

使用CLI查找KVM虚拟机/来宾的IP地址