Kvm

從另一個來賓複製後,沒有分配給 kvm 來賓的 IP 地址

  • June 14, 2019

我在 ubuntu 18.04 上的 kvm 上設置了一台客戶機(客戶機也是 ubuntu 18.04)。我能夠通過 ssh 連接到它,當我輸入時我可以看到分配了一個 IP 地址virsh domifaddr vm1我看到以下輸出:

Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
vnet0      52:54:00:64:10:51    ipv4         192.168.122.246/24

但是,當我複製它時

virt-clone --connect qemu:///system --original vm1 --name vm2 --auto-clone

並啟動機器,virsh domifaddr vm2顯示以下輸出:

Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

所以沒有 IP 地址,我什至不知道如何連接到它,儘管來賓本身顯示為“正在執行”:

# virsh list --all
Id    Name                           State
----------------------------------------------------
1     vm1                            running
2     vm2                            running

我已經檢查了兩個來賓的 xml 配置文件 - 唯一的區別是 mac 地址以及附加的機器和磁碟的名稱。我什至添加了這個mac地址並為其分配了靜態IP virsh net-edit default

 1 <network>
 2   <name>default</name>
 3   <uuid>9a270817-c5bc-4571-877a-43b97a5a3e48</uuid>
 4   <forward mode='nat'/>
 5   <bridge name='virbr0' stp='on' delay='0'/>
 6   <mac address='52:54:00:8a:fe:4f'/>
 7   <ip address='192.168.122.1' netmask='255.255.255.0'>
 8     <dhcp>
 9       <range start='192.168.122.2' end='192.168.122.254'/>
10       <host mac='52:54:00:64:10:51' name='vm1' ip='192.168.122.246'/>
11       <host mac='52:54:00:f0:38:6e' name='vm2' ip='192.168.122.247'/>
12     </dhcp>
13   </ip>
14 </network>

然後重新啟動一切。沒有幫助。我還需要做什麼才能獲得分配給複製來賓的 IP 地址?

作為參考,每個訪客的 xml 配置的 interface-network 部分:

vm1

45     <interface type='network'>
46       <mac address='52:54:00:64:10:51'/>
47       <source network='default'/>
48       <model type='virtio'/>
49       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
50     </interface>


vm2

45     <interface type='network'>
46       <mac address='52:54:00:f0:38:6e'/>
47       <source network='default'/>
48       <model type='virtio'/>
49       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
50     </interface>

我還能夠連接到 vm2,virsh console vm2ifconfig給了我:

~$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
       loop  txqueuelen 1000  (Local Loopback)
       RX packets 2184  bytes 191249 (191.2 KB)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 2184  bytes 191249 (191.2 KB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

更新:我還重新生成了機器 ID /etc/machine-id /var/lib/dbus/machine-id,更改了 ssh 密鑰並執行virt-sysprep -d vm2。然後重新啟動一切。那也沒有幫助。

更新 2:ip a在主機上執行會給出:

5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
   link/ether fe:54:00:64:10:51 brd ff:ff:ff:ff:ff:ff
   inet6 fe80::fc54:ff:fe64:1051/64 scope link 
      valid_lft forever preferred_lft forever
6: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000
   link/ether fe:54:00:f0:38:6e brd ff:ff:ff:ff:ff:ff
   inet6 fe80::fc54:ff:fef0:386e/64 scope link 
      valid_lft forever preferred_lft forever

這對應於兩個虛擬機的 MAC 地址。

最終解決問題的是dhclient ens3在客戶機上執行。

現在正在為客人分配靜態IP地址,稍後將更新答案。

更新。 要在 Ubuntu 18.04 上分配靜態 ip,您需要進行編輯/etc/netplan/[file that's there]以使其看起來像這樣:

network:
   version: 2
   ethernets:
       ens3:
           dhcp4: no
           addresses: [192.168.122.245/24]
           gateway4: 192.168.122.1
           nameservers:
             addresses: [8.8.8.8,8.8.4.4]

引用自:https://unix.stackexchange.com/questions/523922