Łączność rozproszonej infrastruktury za pomocą VXLAN i MacSec
Do połączenia maszyn wirtualnych w różnych centrach danych bez korzystania z publicznego internetu stosuje się tunel VXLAN z szyfrowaniem MacSec. Zapewnia to łączność L2 z minimalnymi nakładami. W przykładzie wykorzystano dwóch dostawców: DC1 (IP 192.0.2.135 na eth0) z bazą danych i backupami, DC2 (IP 198.51.100.75 na ens1) z witryną WWW i backupami.
Na każdym węźle tworzony jest interfejs VXLAN z VNI 1 i portem UDP 4789. Adresy MAC są ustawiane ręcznie dla przewidywalności.
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
Po przypisaniu IP (np. 10.255.255.1/2) sprawdza się łączność za pomocą ping i SSH. W tcpdump widoczny jest ruch VXLAN z enkapsulowanymi pakietami ICMP/TCP.
Szyfrowanie ruchu za pomocą MacSec
Podstawowy VXLAN nie zapewnia poufności. MacSec (802.1AE) dodawany jest na wierzchu VXLAN dla szyfrowania L2 z wiązaniem do adresu MAC. Nakłady są niskie, ruch jest nieczytelny nawet w tcpdump.
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
W tcpdump pakiety wyświetlają się jako zaszyfrowane ramki 802.1AE z PN i SCI. Wewnętrzny ruch (ICMP, TCP) jest ukryty.
Zalety MacSec nad TLS:
- Działa na poziomie L2.
- Minimalne nakłady.
- Wiązanie do MAC bez dodatkowego protokołu.
Skalowanie na trzeci węzeł
Do dodania domowej laboratorium (DC3, IP 203.0.113.52 na enp3s0 z monitoringiem i backupami) używa się tego samego VNI. Dodawane są wpisy FDB oraz klucze RX/TX MacSec.
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
Na DC1 i DC2 dodaje się:
- FDB dla 203.0.113.52.
- Adres RX de:ad:be:ef:00:03 z kluczem 03.
Co jest ważne
- Łączność L2: VXLAN zapewnia transparentną sieć między dostawcami bez NAT.
- Szyfrowanie: MacSec chroni ruch na poziomie kanału, tcpdump nie ujawnia payloadu.
- Skalowalność: Nowy węzeł podłącza się przez dodanie FDB i kluczy, bez przebudowy tuneli.
- Zasoby: Niski nakład CPU/RAM w porównaniu z IPsec czy WireGuard.
- Kompatybilność: Działa na Linuksie z jądrem 4.7+ (VXLAN) i 4.6+ (MacSec).
— Editorial Team
Brak komentarzy.