Verteilte Infrastruktur mit VXLAN und MacSec verbinden
Um virtuelle Maschinen über Rechenzentren hinweg ohne öffentliches Internet zu verbinden, nutzen wir einen VXLAN-Tunnel, der mit MacSec-Verschlüsselung gesichert ist. Das ermöglicht L2-Konnektivität mit minimalem Overhead. Der Aufbau umfasst zwei Provider: DC1 (IP 192.0.2.135 auf eth0) mit Datenbanken und Backups sowie DC2 (IP 198.51.100.75 auf ens1) mit Website und Backups.
Auf jedem Knoten erstellen wir eine VXLAN-Schnittstelle mit VNI 1 und UDP-Port 4789. MAC-Adressen werden manuell für Vorhersagbarkeit gesetzt.
DC1:
sudo ip link add vxlan0 type vxlan id 1 dstport 4789 dev eth0
sudo ip link set vxlan0 up
sudo ip link set vxlan0 address de:ad:be:ef:00:01
sudo bridge fdb append to 00:00:00:00:00:00 dst 198.51.100.75 dev vxlan0
DC2:
sudo ip link add vxlan0 type vxlan id 1 dstport 4789 dev ens1
sudo ip link set vxlan0 up
sudo ip link set vxlan0 address de:ad:be:ef:00:02
sudo bridge fdb append to 00:00:00:00:00:00 dst 192.0.2.135 dev vxlan0
Nach der IP-Zuweisung (z. B. 10.255.255.1/2) testen Sie die Konnektivität mit Ping und SSH. Tcpdump zeigt VXLAN-Traffic, der ICMP/TCP-Pakete kapselt.
Traffic mit MacSec verschlüsseln
Reiner VXLAN bietet keine Vertraulichkeit. MacSec (802.1AE) fügt darüber L2-Verschlüsselung hinzu, die an MAC-Adressen gebunden ist. Der Overhead ist gering, und der Traffic ist selbst in Tcpdump unlesbar.
DC1:
sudo ip link add link vxlan0 macsec0 type macsec encrypt on
sudo ip macsec add macsec0 tx sa 0 pn 1 on key 01 0123456789abcdef0123456789abcdef
sudo ip link set macsec0 up
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:02 port 1
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:02 port 1 sa 0 pn 1 on key 02 fedcba9876543210fedcba9876543210
sudo ip address add 192.168.255.1/24 dev macsec0
DC2:
sudo ip link add link vxlan0 macsec0 type macsec encrypt on
sudo ip macsec add macsec0 tx sa 0 pn 1 on key 02 fedcba9876543210fedcba9876543210
sudo ip link set macsec0 up
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:01 port 1
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:01 port 1 sa 0 pn 1 on key 01 0123456789abcdef0123456789abcdef
sudo ip address add 192.168.255.2/24 dev macsec0
In Tcpdump erscheinen Pakete als verschlüsselte 802.1AE-Frames mit PN und SCI. Der innere Traffic (ICMP, TCP) bleibt verborgen.
Vorteile von MacSec gegenüber TLS:
- Arbeitet auf L2-Ebene.
- Minimaler Overhead.
- An MAC gebunden, ohne zusätzliche Protokolle.
Auf einen dritten Knoten skalieren
Um ein Home-Lab (DC3, IP 203.0.113.52 auf enp3s0 mit Monitoring und Backups) hinzuzufügen, dieselbe VNI wiederverwenden. FDB-Einträge und MacSec-RX/TX-Schlüssel ergänzen.
DC3:
sudo ip link add vxlan0 type vxlan id 1 dstport 4789 dev enp3s0
sudo ip link set vxlan0 up
sudo bridge fdb append to 00:00:00:00:00:00 dst 198.51.100.75 dev vxlan0
sudo bridge fdb append to 00:00:00:00:00:00 dst 192.0.2.135 dev vxlan0
sudo ip link add link vxlan0 macsec0 type macsec encrypt on
sudo ip macsec add macsec0 tx sa 0 pn 1 on key 03 abcdef0123456789abcdef0123456789
sudo ip link set macsec0 up
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:01 port 1 sa 0 pn 1 on key 01 0123456789abcdef0123456789abcdef
sudo ip macsec add macsec0 rx address de:ad:be:ef:00:02 port 1 sa 0 pn 1 on key 02 fedcba9876543210fedcba9876543210
sudo ip address add 192.168.255.3/24 dev macsec0
Auf DC1 und DC2 ergänzen:
- FDB für 203.0.113.52.
- RX-Adresse de:ad:be:ef:00:03 mit Schlüssel 03.
Wichtige Erkenntnisse
- L2-Konnektivität: VXLAN sorgt für nahtlose Vernetzung über Provider hinweg ohne NAT.
- Verschlüsselung: MacSec sichert Traffic auf Link-Ebene und hält Nutzdaten vor Tcpdump verborgen.
- Skalierbarkeit: Neue Knoten durch Hinzufügen von FDB-Einträgen und Schlüsseln – keine Tunnel-Neubauten nötig.
- Effizienz: Geringer CPU/RAM-Overhead im Vergleich zu IPsec oder WireGuard.
- Kompatibilität: Funktioniert auf Linux-Kerneln 4.7+ (VXLAN) und 4.6+ (MacSec).
— Editorial Team
Noch keine Kommentare.