MACsec

MACsec 是用于以太网网络的安全协议,使用 GCM-AES-128 加密提供机密性、完整性和真实性。RouterOS 支持 MACsec,采用手动密钥配置和有限的硬件加速,在设备之间建立安全的第 2 层连接时需要预共享密钥。

MACsec

MACsec(媒体访问控制安全)协议是一种应用于以太网网络的标准安全技术,用于确保通过物理介质传输的数据的机密性、完整性和真实性。MACsec 由 IEEE 802.1AE 标准定义。

MACsec 在以太网上使用 GCM-AES-128 加密,保护所有 LAN 流量,包括 DHCP、ARP、LLDP 以及更高层协议。

警告

RouterOS 的 MACsec 实现处于早期阶段;它不支持通过 Dot1x 进行动态密钥管理(需要手动密钥配置),并且硬件加速加密仅在部分产品上逐步推出。

基本配置示例

假设 Host1 的 ether1 连接到 Switch 的 ether1,Host2 的 ether1 连接到 Switch 的 ether2。在此示例中,我们将创建两对 MACsec 接口,并使用网桥在两个终端设备之间建立安全的第 2 层连接。

首先,在 Host1 和 Host2 上配置 MACsec 接口。我们可以只指定以太网接口,RouterOS 将自动生成连接关联密钥(CAK)和连接关联名称(CKN)。使用 print 命令查看这些值:

# Host1
/interface/macsec
add interface=ether1 name=macsec1

[admin@Host1] /interface/macsec/print show-sensitive
Flags: I - inactive, X - disabled, R - running 
 0   name="macsec1" mtu=1468 interface=ether1 status="negotiating" cak=71a7c363794da400dbde595d3926b0e9
     ckn=f2c4660060169391d29d8db8a1f06e5d4b84a128bad06ad43ea2bd4f7d21968f profile=default

# Host2
/interface/macsec
add interface=ether1 name=macsec1

[admin@Host2] /interface/macsec/print show-sensitive
Flags: I - inactive, X - disabled, R - running 
 0   name="macsec1" mtu=1468 interface=ether1 status="negotiating" cak=dc47d94291d19a6bb26a0c393a1af9a4
     ckn=e9bd0811dad1e56f06876aa7715de1855f1aee0baf5982ac8b508d4fc0f162d9 profile=default

在 Switch 设备上,要启用 MACsec,我们需要为相应的以太网接口配置匹配的 CAK 和 CKN 值:

# Switch
/interface/macsec
add comment=Host1 cak=71a7c363794da400dbde595d3926b0e9 ckn=f2c4660060169391d29d8db8a1f06e5d4b84a128bad06ad43ea2bd4f7d21968f interface=ether1 name=macsec1
add comment=Host2 cak=dc47d94291d19a6bb26a0c393a1af9a4 ckn=e9bd0811dad1e56f06876aa7715de1855f1aee0baf5982ac8b508d4fc0f162d9 interface=ether2 name=macsec2

一旦预共享密钥成功交换,MACsec 密钥协议(MKA)即被激活。MKA 负责确保链路上 MACsec 的连续性,并在点对点连接中决定哪一端成为密钥服务器。密钥服务器生成一个安全关联密钥(SAK),仅与链路另一端的设备共享。此 SAK 用于保护通过该链路传输的所有数据流量。密钥服务器会定期生成一个新的随机 SAK,并通过点对点链路共享,以维持 MACsec 功能。

在 RouterOS 中,MACsec 接口可以像任何以太网接口一样配置。它可以用作带有 IP 地址的可路由接口,也可以放入网桥中。在 Host1 和 Host2 上,我们将添加同一网络中的 IP 地址。在 Switch 上,我们将使用网桥。

# Host1
/ip/address
add address=192.168.10.10/24 interface=macsec1

# Host2
/ip/address
add address=192.168.10.20/24 interface=macsec1

# Switch
/interface/bridge
add name=bridge1
/interface/bridge/port
add bridge=bridge1 interface=macsec1
add bridge=bridge1 interface=macsec2

最后,确认 Host1 可以使用 ping 访问 Host2。

 [admin@Host1] > ping 192.168.10.20
  SEQ HOST                                     SIZE TTL TIME       STATUS
    0 192.168.10.20                              56  64 1ms438us  
    1 192.168.10.20                              56  64 818us     
    2 192.168.10.20                              56  64 791us     
    3 192.168.10.20                              56  64 817us     
    4 192.168.10.20                              56  64 783us     
    sent=5 received=5 packet-loss=0% min-rtt=783us avg-rtt=929us max-rtt=1ms438us

属性参考

接口设置

子菜单: /interface/macsec

MACsec 接口的配置设置。

PropertyDescription
cak (string; Default: ) sensitive一个 16 字节的预共享连接关联密钥(CAK)。要启用 MACsec,请在链路两端配置匹配的 CAK 和 CKN。未指定时,RouterOS 将自动生成一个随机值。
ckn(string; Default: )一个 32 字节的连接关联名称(CKN)。要启用 MACsec,请在链路两端配置匹配的 CAK 和 CKN。未指定时,RouterOS 将自动生成一个随机值。
comment (string; Default: )接口的简短描述。
disabled (yes | no; Default: no)更改接口是否被禁用。
interface (name; Default: )创建 MACsec 的以太网接口名称,每个以太网接口仅限一个 MACsec 接口。
mtu (integer; Default: 1468)设置最大传输单元。l2mtu 将根据关联的 interface 自动设置(减去对应 MACsec 封装的 32 字节)。l2mtu 无法更改。
name (string; Default: macsec1)接口名称。
profile (name; Default: default)设置 MACsec 配置文件,用于在点对点连接中确定密钥服务器。
status (read-only: disabled |initializing | invalid | negotiating | open-encrypted)显示当前 MACsec 接口状态。

配置文件设置

子菜单: /interface/macsec/profile

MACsec 配置文件的配置设置。

PropertyDescription
name (string; Default: )配置文件的名称。
server-priority(integer: 0..255; Default: 10)设置在点对点连接中确定密钥服务器的优先级。值越低表示优先级越高。当优先级相同时,MAC 地址最低的接口将充当密钥服务器。