这是关于 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
其他接口也是如此。