宿主机中查虚拟机IP地址⽅法
前⾔
如果没有较好的规划,通过宿主机要来获取虚拟机的IP地址,这个问题在虚拟化中或多或少会遇到,本⽂以KVM 虚拟化为例来讨论这个问题的解决⽅法,查阅⽹络上相关⽂档,⼤致⼀种思路:通过通过xml 拿到虚拟机的mac 地址,然后再通过 arp -a 来查询虚拟机的IP地址。
通过 mac + arp 获取虚拟机IP地址
iPhone14系列ProMax产量最高第⼀步获取虚拟机 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
无法获取ip地址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地址。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论