在KVM虚拟机中配置公网IP地址

在KVM虚拟机中配置公网IP地址

我有一台运行 CentOS 6.5 的物理服务器,有一个连接到互联网的接口(有一个公共 IP 地址)。在这台服务器中,我通过 libvirt 使用 KVM 创建了两个虚拟机,每个虚拟机都有一个接口。我想为每个虚拟机分配一个公共IP地址并继续使用与物理服务器的连接。

这张图片用黑色表示我拥有的东西,用蓝色表示我想要的东西: 网络拓扑结构

我尝试了各种方法,例如添加brctl带有服务器物理接口和两个虚拟机虚拟接口的 Linux 桥接器,但它不起作用,并且我失去了与物理服务器的连接。

我愿意使用 Linux 桥接器或 libvirt 网络。

如何获取虚拟机和物理服务器中的公共 IP 地址?

答案1

最后我找到了实现问题目标的正确方法。它意味着 Linux 桥接,因为我无法使用 libvirt 网络解决问题。

脚步:

  1. 识别KVM虚拟机接口。接口名称可能以以下开头vnet*

在这个例子中vnet0vnet1

  1. 使用以下命令创建 Linux 桥:

    brctl addbr virbr1

  2. 将物理接口和 KVM VM 接口附加到新桥接器:

警告:如果您通过网络(SSH、Telnet 等)连接到物理服务器,您将失去连接。使用终端或替代方法(如其他具有连接性的接口)。

brctl addif virbr1 vnet0
brctl addif virbr1 vnet1
brctl addif virbr1 eth0
  1. 配置未分配 IP 地址的物理服务器接口:

在 CentOS 6.5 中,编辑/etc/sysconfig/network-scripts/ifcfg-eth0包含以下内容的文件:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
  1. 配置物理服务器网桥具有 IP 地址:

在 CentOS 6.5 中,编辑/etc/sysconfig/network-scripts/ifcfg-virbr1包含以下内容的文件:

DEVICE=virbr1
BOOTPROTO=none
ONBOOT=yes
IPADDR=<physical_server_public_ip_address>
NETMASK=<physical_server_public_ip_netmask>
GATEWAY=<physical_server_gateway_ip_address>
NAME=virbr1
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no
DNS1=<physical_server_primary_dns_server_ip_address>
DNS2=<physical_server_secondary_dns_server_ip_address>
  1. 重启物理服务器网络:

service network restart

注意:您应该恢复物理服务器网络连接(通过接口和网桥)

  1. 配置KVM虚拟机的网络接口:

这取决于虚拟机的操作系统。无论如何,它至少应该包括 IP 地址、网络掩码和默认网关。显然DNS服务器会完成配置。

所有这些配置都是静态的,可以通过 DHCP 分配来替代。在这种情况下,网桥和 KVM VM 接口的 MAC 地址可能会很有用。

相关内容