我正在配置带有两个网络接口(enp3s0f0 和 enp3s0f1)的本地服务器。我希望将两个接口放在同一个子网(192.168.178.*)上,并使用不同的 IP 地址(192.168.178.4|192.168.178.5),(两个设备上是否可以有相同的地址映射?)以存档以下内容:
- 服务器应该可以通过两个 1GBit 接口访问,运行 2 个地址但使用同一个域。这样,我认为我可以拆分 DNS-RR 连接并提供 2GBit 功能。
- 服务器配置为 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)
这是实现网络性能最大化的正确方法吗?或者有没有更聪明的方法来解决这个问题?
答案1
一般来说这是可能的,但是你现在在 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 缓存,并且交换机也可能有错误的 arp 表。所以请耐心等待。
更好的方法是像@christian667 已经提到的那样配置绑定。在 Linux 上,您可以配置例如平衡白蛋白不需要交换机支持。
如果你的交换机支持绑定,请使用它。
建立联系将使你和他人的生活更加轻松。
答案2
好的,我想我会采用绑定方式。我认为我们的交换机不支持绑定,所以我尝试采用 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/interface,这是正确的还是我遗漏了什么?
# 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 测试了两者。
我是否需要做进一步的调整来提高客户的表现?