[转帖]宿主机中查找虚拟机IP地址方法

宿主机,查找,虚拟机,ip地址,方法 · 浏览次数 : 0

小编点评

**KVM虚拟化中获取虚拟机IP地址的方法** **1. 通过 xml 拿到虚拟机的mac 地址** 通过 xml 文件获取虚拟机mac地址的方法比较复杂,需要编写脚本或工具,并在虚拟机连接到网络之前进行操作。 **2. 通过 arp + mac 获取虚拟机IP地址**  arp -a 命令可以查询网络设备的IP地址,但由于kvm虚拟化的特殊性,网络设备的ip地址可能无法获取到,因此该方法效率较低。 **3. 通过 doifaddr 获取ip地址**  doifaddr 命令可以获取虚拟机IP地址,但该方法需要宿主机的网络必须是本地nat基于本地 dnsmasq dhcp服务获取的IP地址有人提交过关于 doifaddr 获取IP地址的问题,详细参考上述问题。 **4. 通过 KVM 虚拟化工具获取IP地址** KVM虚拟化工具可以提供获取虚拟机IP地址的功能,例如 WebVirtMgr 和 OVirt 等工具。

正文

https://www.cnblogs.com/hukey/p/13914124.html

 

前言

如果没有较好的规划,通过宿主机要来获取虚拟机的IP地址,这个问题在虚拟化中或多或少会遇到,本文以KVM 虚拟化为例来讨论这个问题的解决方法,查阅网络上相关文档,大致一种思路:通过 通过xml 拿到虚拟机的mac 地址,然后再通过 arp -a 来查询虚拟机的IP地址。

通过 mac + arp 获取虚拟机IP地址

第一步获取虚拟机 mac 地址:

[root@mongodb ~]# virsh domiflist 192_168_118_14
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:bb:d2:8a

第二步通过 arp + mac 获取 虚拟机IP地址:

[root@mongodb ~]# time arp -a | egrep 52:54:00:bb:d2:8a
? (192.168.118.14) at 52:54:00:bb:d2:8a [ether] on br0

real	24m52.314s
user	0m0.033s
sys	0m0.063s

这种方法思路是没有问题的,但是通过 arp 获取 IP地址时间较长(上面 24-25分钟)。

doifaddr 获取ip地址

写在前面:通过这种命令获取虚拟机 ip地址是有必要条件的:

  1. 宿主机的网络必须是本地nat
  2. 基于本地 dnsmasq dhcp服务获取的IP地址

有人提交过关于 doifaddr 获取IP地址的问题,详细参考:

 

就上面的问题,我这里做了示例验证:

宿主机使用 libvirt 默认网络,默认为nat网络

[root@localhost ~]#ifconfig virbr0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:47:3f:c1  txqueuelen 1000  (Ethernet)
        RX packets 680  bytes 79131 (77.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1144  bytes 105333 (102.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

创建虚拟机安装 Centos7.x 连接到 nat 网络

[root@localhost ~]#virsh list 
 Id    Name                           State
----------------------------------------------------
 5     centos7.0                      running

虚拟机启动后,dhcp 来获取虚拟机地址

[root@localhost ~]#virsh net-dhcp-leases default
 Expiry Time          MAC address        Protocol  IP address                Hostname        Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
 2020-11-02 14:12:41  52:54:00:da:eb:ee  ipv4      192.168.122.246/24        -               -

[root@localhost ~]#virsh domifaddr centos7.0
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:da:eb:ee    ipv4         192.168.122.246/24

到此,发现满足上面2个条件,是可以通过 domifaddr 这个命令来获取虚拟机IP地址的,接下来连接到虚拟机内,通过修改配置文件修改虚拟机的IP地址,再次使用 domifaddr 命令来查看

IPADDR=192.168.122.200
NETMASK=255.255.255.0
GATEWAY=192.168.122.1

# systemctl restart network

### 再次通过命令查看 ###
[root@localhost ~]#virsh domifaddr centos7.0
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:da:eb:ee    ipv4         192.168.122.246/24

也就是说,上面提到的两个条件缺一不可,缺少其中一条 domifaddr 不显示信息或者显示的不是修改后的ip地址。

总结

在做kvm虚拟化,是需要有一个管理平台来对虚拟机进行管控的,否则很多信息是无法通过命令行的形式来直接获取的。这样的工具有很多,比如轻量级的web 管理平台:WebVirtMgr 或者是 OVirt 。 再不济可以通过虚拟机名来表明虚拟机的IP地址。

与[转帖]宿主机中查找虚拟机IP地址方法相似的内容:

[转帖]宿主机中查找虚拟机IP地址方法

https://www.cnblogs.com/hukey/p/13914124.html 前言 如果没有较好的规划,通过宿主机要来获取虚拟机的IP地址,这个问题在虚拟化中或多或少会遇到,本文以KVM 虚拟化为例来讨论这个问题的解决方法,查阅网络上相关文档,大致一种思路:通过 通过xml 拿到虚拟机

[转帖]VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!

https://zhuanlan.zhihu.com/p/525656364 正文共:1024 字 11 图,预估阅读时间:1 分钟 在上个实验中(VPP使用DPDK纳管主机网卡),我们已经初步实现了通过DPDK纳管主机网卡。 不知道大家注意到没有,我们在查看主机网卡的主线信息时,后面的描述信息是不

[转帖]x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨。 一.网卡调优方法 1、Broadcom的网卡建议关闭GRO功能 ethtool -K eth0 gro off ethtool -K

【转帖】x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨。 一.网卡调优方法 1、Broadcom的网卡建议关闭GRO功能 ethtool -K eth0 gro off ethtool -K

【转帖】x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨。 一.网卡调优方法 1、Broadcom的网卡建议关闭GRO功能 ethtool -K eth0 gro off ethtool -K

【转帖】x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨。 一.网卡调优方法 1、Broadcom的网卡建议关闭GRO功能 ethtool -K eth0 gro off ethtool -K

[转帖]Docker容器动态添加端口

方法1 修改iptables端口映射 docker的端口映射并不是在docker技术中实现的,而是通过宿主机的iptables来实现。通过控制网桥来做端口映射,类似路由器中设置路由端口映射。 比如我们有一个容器的80端口映射到主机的8080端口,先查看iptables到底设置了什么规则:登录后复制

[转帖]ESX/ESXi 主机上的每个插槽中安装了多少内存

https://www.cnblogs.com/reachos/p/11242302.html 要确定在 ESX/ESXi 主机上的每个插槽中安装了多少内存,请执行以下操作: 1. 启动ssh服务 2. 登陆esxi主机查看 使用 SSH 客户端登录主机,以 root 用户身份运行以下命令之一:#

[转帖][问题已处理]-kubernetes中2次不同的oom处理

https://dandelioncloud.cn/article/details/1598699030236577793 起因: 同事反馈 服务挂了,kuboard上查看是服务挂掉了,liveness port 异常,通过查看pod状态,发现服务被重启了。 1 pod里的java进程因为k8s主机

[转帖]docker容器跨主机网络overlay

https://www.cnblogs.com/machangwei-8/p/15757120.html 目录 拉取镜像,运行容器 浏览器上访问Consul 修改host1,host2的docker daemon配置文件 创建网络 验证 在overlay中运行容器 运行 查看一下这两个网卡 查看生成