Linux服务器两个网络接口

Linux服务器两个网络接口

我正在配置带有两个网络接口(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 测试了两者。

我是否需要做进一步的调整来提高客户的表现?

相关内容