在 CentOS 7 中,KVM 主机可供外界访问,用于服务器目的

在 CentOS 7 中,KVM 主机可供外界访问,用于服务器目的

今天我遇到了一个问题,我只是想向大家问一个问题

我刚刚在我的系统中安装了 kvm,并且我已经设法在系统中安装并运行了一个节点,现在我想要的是我想在节点中托管一个服务器

我可以通过公共 IP(eth0)访问 KVM 主机服务器,唯一的接口

我有一个公共 IP 可以提供给节点,但我不知道该怎么做

每次我在 eth0 和新的 br0 接口之间建立桥接连接时,它都会失败,并且我会失去连接

那么我怎样才能从外部世界访问我的 kvm 节点?我对 KVM 还很陌生,请帮我了解如何链接网络的步骤

答案1

不要桥接您的eth0。保留其 IP 地址和配置。相反,将您的主机设为路由器适用于您的虚拟机。

我们假设您的主机上的网络正常运行并且能够访问互联网。

您必须创建一个“纯虚拟”桥,该桥最初不会分配任何成员。我们称该桥为br0

ip link add name br0 type bridge
ip link set br0 up

尽管如此,我推测该桥一定有一些来自 IANA 私有空间的“内部”地址。假设如下192.168.95.1/24

ip address add 192.168.95.1/24 dev br0

现在,在你的盒子上配置一个伪装 NAT,并启用 IP 转发:

sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.95.0/24 -j MASQUERADE

您的所有虚拟机的 vNIC 都必须放入网桥中br0。您将为它们提供192.168.95.2÷254范围中的 IP 地址,并指定192.168.95.1为默认网关。为了简单起见,您可以使用任何公共 DNS 服务,例如 Google 的8.8.8.88.8.4.4。如果您愿意,您可以为您的虚拟机设置 DHCP 和 DNS 服务器,例如,使用dnsmasq(专门为此类情况设计)。

本质上,您正在创建一个简单的“NAT”路由器,它将具有一个eth0作为 WAN 端的接口和一个br0作为 LAN 端的接口。

答案2

如果您希望节点与主机共享公共 IP 地址(即 NAT),则@Nikita 的答案适用。

但是,如果希望节点使用单独的 IP 地址访问与主机相同的子网,那么就需要桥接真实接口eth0,并通过桥接器将主机和节点都连接到网络。

如果您只有一个网络接口,远程进行这样的更改是有风险的。如果服务器托管在数据中心,通常会有远程协助服务来帮助您进行这样的更改。

1. 桥接物理端口

编辑当前配置(/etc/sysconfig/network-scripts/ifcfg-eth0)以删除任何 IP 地址配置并添加:

BRIDGE=br0

2. 分配

为您的虚拟桥创建一个新的配置(/etc/sysconfig/network-scripts/ifcfg-br0)。

DEVICE=br0
TYPE=Bridge
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
DELAY=0

3. 应用更改

对于这样的更改,重新启动主机是应用更改最可靠的方法。

一旦重新启动,你就应该看到你的桥brctl show

远程更改

此类网络更改最好亲自进行。如果配置出现错误,则需要亲自访问才能修复。

过去,我编写了一个监视脚本来帮助我远程进行有风险的网络更改。启用后,它会轮询上游服务器以检测网络连接,如果网络不可用,它会恢复到上一次良好的网络配置。

相关内容