Verbinden von zwei Schnittstellen innerhalb eines Linux-Netzwerk-Namespace

Verbinden von zwei Schnittstellen innerhalb eines Linux-Netzwerk-Namespace

Ich möchte in der Lage sein, zwei Schnittstellen innerhalb eines Linux-Netzwerk-Namespace zu verbinden/aggregieren.

Die Konfiguration, mit der ich arbeite, ist die folgende:

  • Auf dem Root-Linux-Net-Stack habe ich zwei physische Ethernet-Schnittstellen:
    • eth0
    • eth1
  • Und dann habe ich einen Netzwerk-Namespace mit zwei Schnittstellen:
    • ethX0, das mit physischem eth0 verbunden ist
    • ethX1, das mit physischem eth1 verbunden ist

Ich möchte ethX0 und ethX1 innerhalb des Netzwerk-Namespace verbinden, entweder mit 802.3ad oder Active-Backup.

Aber Bonding unter Linux funktioniert auf der Ebene der physischen Schnittstelle und ich scheine es nicht zum Laufen zu bringen, obwohl ich nicht sehe, warum es (auf Frame-Ebene) nicht möglich sein sollte? Ich kann ein Net-NS erstellenübereine Bindung, aber keine Bindungüberein Netz-NS.

Ich kann die physischen Schnittstellen eth0 und eth1 nicht verbinden, da ich sie für unzählige andere Anwendungen separat ansprechen möchte, sondern nur ethX0 und ethX1 verbinden möchte.

Irgendeine Idee, wie das geht?

Antwort1

Die Antwort, die ich gefunden habe, war, Teams zu verwenden. Tolle neue Linux-API, funktioniert in Netzwerk-Namespaces und das Verhalten kann vom Userland aus gesteuert werden. Tolles Zeug!

Antwort2

Manche Leute scheinen teamsdafür zu verwenden, aber das ist nicht wirklich erforderlich. Für Ubuntu/Debian-Systeme können Sie einfach /etc/network/interfacesetwas wie das Folgende bearbeiten, um stattdessen native Kernel-Unterstützung zu verwenden:

# The loopback network interface
auto lo
iface lo inet loopback

# 2 x 10 Gbps LACP link:
auto bond0
iface bond0 inet manual
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond-slaves enp1s0f0 enp1s0f1

# 10 Gbps port 1:
auto enp1s0f0
iface enp1s0f0 inet manual
bond-master bond0

# 10 Gbps port 2:
auto enp1s0f1
iface enp1s0f1 inet manual
bond-master bond0

# VLAN 395:
auto bond0.395
iface bond0.395 inet static
address 11.22.33.44
netmask 255.255.255.224
gateway 11.22.33.1
dns-nameservers 11.22.33.1 11.22.33.2
dns-search example.com
vlan-raw-device bond0

Dadurch können Sie tcpdumpauf jeden Teil zugreifen, den Sie debuggen müssen. In diesem Beispiel bond0handelt es sich um den Rohdatenverkehr mit VLAN-Tags über zwei Verbindungen, enp1s0f0und enp1s0f1die Rohports übertragen LACP/802.3ad-Datenverkehr, und bond0.395es handelt sich um das logische Netzwerk ohne VLAN-Tags. Die richtige VLAN-Nummer hängt natürlich von Ihrer Upstream-Konfiguration ab, dies 395ist nur ein Beispiel.

Sehenhttps://wiki.debian.org/Bondingfür Details.

verwandte Informationen