Linux服务器两个networking接口

我正在configuration一个带有两个networking接口(enp3s0f0和enp3s0f1)的本地服务器。 我喜欢在同一个子网(192.168.178。*)上拥有不同IP地址(192.168.178.4 | 192.168.178.5)的两个接口(可以在两个设备上具有相同的地址映射)来归档以下:

  • 服务器应该可以通过两个1GBit接口运行2个地址但域名相同。 这样,我想我可以拆分连接DNS-RR,并提供2GBit的function。
  • 服务器被configuration为KVM主机,并且应该能够桥接到客户端的两个接口。 这可以让客户也从2GBit连接中受益。

这是我目前的主机的/ etc / network / interfaces

# Loopback device: auto lo iface lo inet loopback # device: br0 auto br0 iface br0 inet static address 192.168.178.4 dns-nameservers 8.8.8.8 netmask 255.255.255.0 gateway 192.168.178.1 bridge_ports enp3s0f0 bridge_stp off bridge_fd 0 bridge_maxwait 0 up route add -host 192.168.178.6 dev br0 # device: br1 auto br1 iface br1 inet static address 192.168.178.5 dns-nameservers 8.8.8.8 netmask 255.255.255.0 gateway 192.168.178.1 bridge_ports enp3s0f1 bridge_stp off bridge_fd 0 bridge_maxwait 0 up route add -host 192.168.178.7 dev br1 

主机现在可以通过两个地址(.4 / .5)到达,但是arp -a显示它们具有相同的mac:

 ? (192.168.178.4) at c:c4:7a:de:e5:55 on en0 ifscope [ethernet] ? (192.168.178.5) at c:c4:7a:de:e5:55 on en0 ifscope [ethernet] 

我的主机ifconfig

 br0 Link encap:Ethernet Hardware Adresse 0c:c4:7a:de:e5:54 inet Adresse:192.168.178.4 Bcast:192.168.178.255 Maske:255.255.255.0 inet6-Adresse: fe80::ec4:7aff:fede:e554/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:19698 Fehler:0 Verloren:380 Überläufe:0 Fenster:0 TX-Pakete:8 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:2717375 (2.7 MB) TX-Bytes:648 (648.0 B) br1 Link encap:Ethernet Hardware Adresse 0c:c4:7a:de:e5:55 inet Adresse:192.168.178.5 Bcast:192.168.178.255 Maske:255.255.255.0 inet6-Adresse: fe80::ec4:7aff:fede:e555/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:21054 Fehler:0 Verloren:380 Überläufe:0 Fenster:0 TX-Pakete:998 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:2814729 (2.8 MB) TX-Bytes:246287 (246.2 KB) enp3s0f0 Link encap:Ethernet Hardware Adresse 0c:c4:7a:de:e5:54 inet6-Adresse: fe80::ec4:7aff:fede:e554/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:28517 Fehler:0 Verloren:38 Überläufe:0 Fenster:0 TX-Pakete:24 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:5224971 (5.2 MB) TX-Bytes:1944 (1.9 KB) enp3s0f1 Link encap:Ethernet Hardware Adresse 0c:c4:7a:de:e5:55 inet6-Adresse: fe80::ec4:7aff:fede:e555/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:30087 Fehler:0 Verloren:38 Überläufe:0 Fenster:0 TX-Pakete:1282 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:5363437 (5.3 MB) TX-Bytes:350457 (350.4 KB) lo Link encap:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine UP LOOPBACK RUNNING MTU:65536 Metrik:1 RX-Pakete:163 Fehler:0 Verloren:0 Überläufe:0 Fenster:0 TX-Pakete:163 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1 RX-Bytes:12176 (12.1 KB) TX-Bytes:12176 (12.1 KB) virbr0 Link encap:Ethernet Hardware Adresse 52:54:00:0b:76:e9 inet Adresse:192.168.122.1 Bcast:192.168.122.255 Maske:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metrik:1 RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0 TX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Träger:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:0 (0.0 B) TX-Bytes:0 (0.0 B) 

这是获得最大networking性能的正确方法吗? 还是有什么更聪明的方法来解决这个问题?

通常情况下,这是可能的,但是你现在正在使用ARP表格的情况被称为ARP通量
您应该能够通过在/etc/sysctl.conf设置参数来解决这个问题,具体取决于您的发行版和发行版。

 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2 

这些设置将只在重新启动后生效,但您可以将这些值echo/proc/sys/net/ipv4/<interface>/[arp_ignore|arp_announce] 。 之后,您还必须清除您的ARP高速caching,交换机也可能有一个错误的ARP表。 所以要有耐心。

更好的方法是configuration一个像@ christian667这样的绑定。 在linux上,你可以configuration例如不需要交换机支持的平衡式ALB
如果您的交换机支持绑定,请使用该绑定。

绑定将使您和其他人更容易。

好的,我想我会走这条路。 我不认为我们的交换机支持绑定,所以我尝试了Linux的方式。 我的/ etc / network / interfaces看起来像这样:

 # Loopback device: auto lo iface lo inet loopback auto bond0 iface bond0 inet static address 192.168.178.5 netmask 255.255.255.0 network 192.168.178.0 broadcast 192.168.178.255 gateway 192.168.178.1 dns-nameservers 8.8.8.8 bond-slaves enp3s0f0 enp3s0f1 bond-mode 0 bond-miimon 100 bond-updelay 200 bond-downdelay 200 

更新:这是我最后的/ etc / network /接口,这是正确的还是我错过了什么?

 # Loopback device: auto lo iface lo inet loopback auto bond0 iface bond0 inet manual # 0 - balance-rr # 6 - balance-alb # 4 - 802.3ad bond-mode 6 bond-miimon 100 bond-updelay 200 bond-downdelay 200 bond-slaves none auto enp3s0f0 iface enp3s0f0 inet manual bond-master bond0 auto enp3s0f1 iface enp3s0f1 inet manual bond-master bond0 auto br0 iface br0 inet static address 192.168.178.5 netmask 255.255.255.0 broadcast 192.168.178.255 gateway 192.168.178.1 dns-nameservers 8.8.8.8 bridge_ports bond0 bridge_stp off bridge_fd 0 bridge_maxwait 0 up route add -host 192.168.178.6 dev br0 up route add -host 192.168.178.7 dev br0 up route add -host 192.168.178.8 dev br0 up route add -host 192.168.178.9 dev br0 up route add -host 192.168.178.10 dev br0 

更新2:我试图达到2 GBit / s的整体性能,最后我使用模式6(自适应负载平衡),我尝试了几种负载平衡模式。 KVM根服务器现在可以达到2 GBit / s(每个办公室1 GBit / s),但KVM客户端只有1 GBit / s。 我用iperf来testing。

我需要进一步调整以提高客户的performance吗?