为 KVM 客户机提供路由桥接网络,并为共享主机提供 eth1 别名接口,每个虚拟主机都有专用 IP

为 KVM 客户机提供路由桥接网络,并为共享主机提供 eth1 别名接口,每个虚拟主机都有专用 IP

这是关于 serverfault 的第一个问题,有点新手,欢迎所有反馈。

我有一台运行 Debian GNU/Linux 8.4 (jessie) 的专用服务器,它分配有一个公共 IP 和多个额外的公共 IP。服务器有两个 NIC,eth0 和 eth1,服务器主公共 IP 路由到 eth1。除了 1 个 IP(我想将其分配给 KVM 客户机)外,所有其他公共 IP 都分配给别名接口(eth1:0、eth1:1、eth1:2 等),但我想在路由网络配置中将其分配给 KVM 客户机(数据中心不允许多个 MAC 地址连接到交换机端口,因此我别无选择,只能使用路由而不是桥接)。

我已经设置了接口别名,并且可以将相应的公共 IP 分配给 Apache 2.4 下的不同虚拟主机(通过使用 ISPConfig 3 Web 托管控制面板)。虚拟主机在此配置下工作正常。但是,当我尝试添加路由网络桥 (vmbr0) 并通过它路由 KVM 来宾流量时,我失去了连接,必须重新启动服务器。重新启动后,服务器工作了一段时间(几分钟),然后再次失去连接。我似乎无法弄清楚出了什么问题。

注:我已遵循 Hetzner 指南 [https://wiki.hetzner.de/index.php/Netzkonfiguration_Debian/en#Routed_.28brouter.29] 在另一个主机系统上,KVM 客户机工作正常。唯一的区别是,在这种情况下,我还需要有别名接口。

我已经创建了桥接接口:

brctl addbr vmbr0

在重新启动网络之前

/etc/init.d/networking restart

主机系统的网络配置:

auto lo
        iface lo inet loopback

auto eth0
        iface eth0 inet manual

auto eth1
        iface eth1 inet static
        address AAA.AAA.AAA.AAA
        netmask 255.255.255.0
        gateway AAA.AAA.AAA.1
        pointopoint AAA.AAA.AAA.1

auto eth1:1
        iface eth1:1 inet static
        address BBB.BBB.BBB.BBB
        netmask 255.255.255.255

auto eth1:2
        iface eth1:2 inet static
        address CCC.CCC.CCC.CCC
        netmask 255.255.255.255

auto eth1:3
        iface eth1:3 inet static
        address DDD.DDD.DDD.DDD
        netmask 255.255.255.255

auto eth1:4
        iface eth1:4 inet static
        address EEE.EEE.EEE.EEE
        netmask 255.255.255.255

auto eth1:5
        iface eth1:5 inet static
        address FFF.FFF.FFF.FFF
        netmask 255.255.255.255

auto eth1:6
        iface eth1:6 inet static
        address GGG.GGG.GGG.GGG
        netmask 255.255.255.255

auto eth1:7
        iface eth1:7 inet static
        address HHH.HHH.HHH.HHH
        netmask 255.255.255.255

auto eth1:8
        iface eth1:8 inet static
        address III.III.III.III
        netmask 255.255.255.255

auto eth1:9
        iface eth1:9 inet static
        address JJJ.JJJ.JJJ.JJJ
        netmask 255.255.255.255

auto eth1:10
        iface eth1:10 inet static
        address KKK.KKK.KKK.KKK
        netmask 255.255.255.255

# KVM VM routed (bridge) interface for single IPs
auto vmbr0
iface vmbr0 inet static
       address         AAA.AAA.AAA.AAA
       netmask         255.255.255.0
       bridge_ports    none
       bridge_stp      off
       bridge_fd       0

#      up ip route add ip1_goes_here/32 dev vmbr0
#      up ip route add ip2_goes_here/32 dev vmbr0
#      up ip route add ip3_goes_here/32 dev vmbr0

我还没有创建 KVM 客户机。也许出于某种原因,在启动 vmbr0 桥之前,我应该有一个正在运行的 VM 并将流量路由到它?如果我能做到这一点,我将添加额外的 KVM 客户机,并为它们分配额外的公共 IP。

最后要补充的是,这台服务器已经在运行一些网站,所以如果我需要做的事情能够完成并且停机时间最少那就太好了!

谢谢!

答案1

如果你使用桥接器,则必须使用一个物理接口。因此你的代码/etc/network/interfaces应该如下所示:

auto lo vmbr0

iface vmbr0 inet static
       address         AAA.AAA.AAA.AAA
       netmask         255.255.255.0
       bridge_ports    none
       bridge_stp      off
       bridge_fd       0
       bridge_ports    eth1
       bridge_maxwait  5

iface vmbr0:1 inet static
       address BB.BB.BB.BB
       netmask 255.255.255.255

其他接口也是如此。

相关内容