
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 teams
dafür zu verwenden, aber das ist nicht wirklich erforderlich. Für Ubuntu/Debian-Systeme können Sie einfach /etc/network/interfaces
etwas 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 tcpdump
auf jeden Teil zugreifen, den Sie debuggen müssen. In diesem Beispiel bond0
handelt es sich um den Rohdatenverkehr mit VLAN-Tags über zwei Verbindungen, enp1s0f0
und enp1s0f1
die Rohports übertragen LACP/802.3ad-Datenverkehr, und bond0.395
es handelt sich um das logische Netzwerk ohne VLAN-Tags. Die richtige VLAN-Nummer hängt natürlich von Ihrer Upstream-Konfiguration ab, dies 395
ist nur ein Beispiel.
Sehenhttps://wiki.debian.org/Bondingfür Details.