網站搜尋

查找 KVM 虛擬機的 IP 位址


在 KVM Linux 客戶虛擬機中找到 IP 地址並不困難。如果您可以訪問虛擬機的控制台,您可以輕鬆地使用 ip 命令 確定 KVM 客戶的 IP 地址。然而,也可以在不訪問其控制台的情況下 識別 KVM 虛擬機的 IP 地址。在本教程中,我們將看到幾種不同的方法來 查找 KVM 虛擬機(客戶)的 IP 地址(Linux 系統)。

查找 KVM 虛擬機的 IP 位址

我們可以通過 virsh 命令行介面或任何 KVM 圖形化管理工具,如 Virt-manager,來找到 KVM 客戶機虛擬機的 IP 地址。

首先,我們將看到命令列方式。

A. 使用 virsh 命令查找 KVM 虛擬機的 IP 地址

Virsh 是一個用於建立和管理 KVM 客戶虛擬機的命令行介面。它提供以下兩個命令來查找虛擬機的 IP 地址:

  1. 網路 DHCP 租約,
  2. domifaddr。

1. 網路 DHCP 租約

net-dhcp-leases 命令可檢索指定虛擬網路及/或指定網路介面的 DHCP 租約資訊。

確保你的虛擬機正在運行!

首先,列出 KVM 主機中可用的虛擬網路。要做到這一點,請執行:

$ virsh net-list

範例輸出:

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

列出 KVM 主機中的可用虛擬網路

如您所見,我的 KVM 主機有一個名為 default 的虛擬網路。這是一個由 KVM 預設建立的私人虛擬網路橋。它提供自己的子網路和 DHCP 來配置客戶機的網路,並使用 NAT 訪問主機網路。

讓我們查看 default 虛擬網路的基本資訊:

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

使用 virsh 找出 KVM 虛擬機的 IP 位址

你不必登入虛擬機器。從 KVM 主機的終端,我們可以很容易找到所有正在運行的 KVM 虛擬機器的 IP 地址。

2. domifaddr

從命令列查找 KVM 虛擬機 IP 位址的另一種方法是使用 “domifaddr” 命令查詢來賓作業系統的 IP 位址。

首先,讓我們獲取正在運行的 KVM 客戶機列表:

$ 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

使用 virsh domifaddr 命令查找 KVM 虛擬機的 IP 地址

B. 使用 arp 命令確定 KVM 虛擬機的 IP 地址

ARP,代表 Address Resolution Protocol(位址解析協定),用於查找給定 IPv4 位址的網路鄰居的媒體存取控制位址。

它操作或顯示核心的 IPv4 網路鄰居快取。它可以向表格中新增條目、刪除條目或顯示當前內容。

如果 arp 指令不可用,請安裝 “net-tools” 套件。

在 Debian、Ubuntu 上:

$ sudo apt install net-tools

在 CentOS、RHEL 上:

$ sudo dnf install net-tools

要在 Linux 中使用 arp 命令查找 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

使用 arp 命令查找 KVM 虛擬機的 IP 地址

你有注意到上面指令中的 virbr0 條目嗎?它是我們的 KVM 虛擬網路介面,因此 KVM 虛擬機的 IP 位址是 192.168.122.119 和 192.168.122.20。

如果只有一台或少數幾台虛擬機運行是沒問題的。但如果你有很多台,你怎麼知道哪個 MAC 地址對應到你想要的那台呢?這時,domiflist 和 dumpxml 指令就非常有用。

查找正在運行的虛擬機列表:

$ virsh list

使用以下命令獲取任何正在運行的虛擬機(例如 centos8)的 MAC 地址:

$ 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

使用 arp 命令查找 KVM 虛擬機的 IP 地址

C. 使用 Virt-manager GUI 查看 KVM 虛擬機器的 IP 位址

Virt-manager 是 Virsh 命令列工具的圖形化替代方案。如果你已經在 KVM 主機中安裝了它,找到任何正在運行的 KVM 虛擬機的 IP 位址非常容易!

打開 Virt-manager 應用程式,然後雙擊任何正在運行的虛擬機。接著點擊菜單欄中的 「顯示虛擬硬碟詳細資訊」 圖示。最後從列表中點擊 「NIC :xx:xx:xx」 設備,你將在右側看到 KVM 虛擬機的 IP 位址。

使用 Virt-manager 找出 KVM 虛擬機的 IP 位址

這裡有幾種方法可以在 Linux 中識別 KVM 虛擬機的 IP 位址。希望這對你有幫助。

相關閱讀:

  • 如何從主機找到 Vagrant 機器的 IP 地址

精選圖片由 Brett Sayles 提供,來自 Pexels。