返回首页

VXLAN MacSec:DC 之间基础设施连接

本文描述了使用 MacSec 配置 VXLAN 隧道,以在不同提供商的数据中心之间创建安全的 L2 网络。提供了 Linux 命令、tcpdump 示例以及扩展到第三个节点的内容。适合中高级专家。

如何使用 VXLAN + MacSec 加密连接数据中心
Advertisement 728x90

# 使用 VXLAN 和 MacSec 连接分布式基础设施

为了在不依赖公共互联网的情况下将数据中心间的虚拟机连接起来,我们使用 VXLAN 隧道并通过 MacSec 加密来保障安全。这种方式提供 L2 层连接,额外开销极小。配置涉及两个提供商:DC1(eth0 接口 IP 192.0.2.135,托管数据库和备份),DC2(ens1 接口 IP 198.51.100.75,运行网站和备份)。

在每个节点上,我们创建 VNI 为 1、UDP 端口 4789 的 VXLAN 接口。MAC 地址手动设置以确保可预测性。

DC1:

Google AdInline article slot
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

分配 IP 地址后(例如 10.255.255.1/2),使用 ping 和 SSH 测试连通性。Tcpdump 显示 VXLAN 流量封装了 ICMP/TCP 数据包。

使用 MacSec 加密流量

纯 VXLAN 不提供保密性。MacSec(802.1AE)在 L2 层叠加加密,与 MAC 地址绑定。开销很低,即使在 tcpdump 中流量也无法读取。

Google AdInline article slot

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

在 tcpdump 中,数据包显示为带 PN 和 SCI 的加密 802.1AE 帧。内部流量(ICMP、TCP)完全隐藏。

Google AdInline article slot

MacSec 相较 TLS 的优势:

  • 在 L2 层工作。
  • 开销极小。
  • 与 MAC 绑定,无需额外协议。

扩展到第三个节点

要添加家庭实验室(DC3,enp3s0 接口 IP 203.0.113.52,运行监控和备份),复用相同的 VNI。添加 FDB 条目和 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

在 DC1 和 DC2 上添加:

  • 针对 203.0.113.52 的 FDB。
  • RX 地址 de:ad:be:ef:00:03 及密钥 03。

关键要点

  • L2 连接: VXLAN 提供跨提供商的无缝网络连接,无需 NAT。
  • 加密: MacSec 在链路层保护流量,tcpdump 无法窥探负载。
  • 可扩展性: 新节点通过添加 FDB 条目和密钥即可加入,无需重建隧道。
  • 高效性: 相较 IPsec 或 WireGuard,CPU/内存开销更低。
  • 兼容性: 支持 Linux 内核 4.7+(VXLAN)和 4.6+(MacSec)。

— Editorial Team

Advertisement 728x90

继续阅读