Conectar infraestructuras distribuidas con VXLAN y MacSec
Para enlazar máquinas virtuales entre centros de datos sin usar internet público, empleamos un túnel VXLAN protegido con cifrado MacSec. Esto proporciona conectividad L2 con un overhead mínimo. La configuración involucra dos proveedores: DC1 (IP 192.0.2.135 en eth0) con bases de datos y copias de seguridad, y DC2 (IP 198.51.100.75 en ens1) que ejecuta el sitio web y copias de seguridad.
En cada nodo, creamos una interfaz VXLAN con VNI 1 y puerto UDP 4789. Las direcciones MAC se configuran manualmente para mayor predictibilidad.
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
Tras asignar IPs (p. ej., 10.255.255.1/2), prueba la conectividad con ping y SSH. Tcpdump muestra el tráfico VXLAN encapsulando paquetes ICMP/TCP.
Cifrar el tráfico con MacSec
El VXLAN simple no ofrece confidencialidad. MacSec (802.1AE) se superpone para cifrado L2 vinculado a direcciones MAC. El overhead es bajo y el tráfico resulta ilegible incluso en 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
En tcpdump, los paquetes aparecen como tramas cifradas 802.1AE con PN y SCI. El tráfico interno (ICMP, TCP) permanece oculto.
Ventajas de MacSec sobre TLS:
- Opera a nivel L2.
- Overhead mínimo.
- Vinculado a MAC sin protocolos adicionales.
Escalar a un tercer nodo
Para añadir un laboratorio casero (DC3, IP 203.0.113.52 en enp3s0 con monitoreo y copias de seguridad), reutiliza el mismo VNI. Agrega entradas FDB y claves MacSec RX/TX.
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
En DC1 y DC2, agrega:
- FDB para 203.0.113.52.
- Dirección RX de:ad:be:ef:00:03 con clave 03.
Lecciones clave
- Conectividad L2: VXLAN ofrece redes fluidas entre proveedores sin NAT.
- Cifrado: MacSec protege el tráfico en la capa de enlace, ocultando cargas de tcpdump.
- Escalabilidad: Nuevos nodos se unen agregando entradas FDB y claves, sin reconstruir túneles.
- Eficiencia: Bajo consumo de CPU/RAM frente a IPsec o WireGuard.
- Compatibilidad: Funciona en kernels Linux 4.7+ (VXLAN) y 4.6+ (MacSec).
— Editorial Team
Aún no hay comentarios.