10.3. 使用 nmstatectl 配置 MACsec 连接
您可以使用声明性 Nmstate API 将以太网接口配置为使用 MACsec。nmstate 可确保结果与配置文件匹配或回滚更改。
先决条件
- 服务器配置中存在一个物理或虚拟以太网网络接口控制器(NIC)。
-
nmstate软件包已安装。
流程
在您配置 MACsec 的第一个主机上,为预共享密钥创建连接关联密钥(CAK)和连接关联密钥名称(CKN):
创建一个 16 字节的十六进制 CAK:
# dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"' 50b71a8ef0bd5751ea76de6d6c98c03a创建一个 32 字节的十六进制 CKN:
# dd if=/dev/urandom count=32 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"' f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550
在您要通过 MACsec 连接连接的两个主机上,完成以下步骤:
使用以下设置创建一个 YAML 文件,如
create-macsec-connection.yml:--- routes: config: - destination: 0.0.0.0/0 next-hop-interface: macsec0 next-hop-address: 192.0.2.2 table-id: 254 - destination: 192.0.2.2/32 next-hop-interface: macsec0 next-hop-address: 0.0.0.0 table-id: 254 dns-resolver: config: search: - example.com server: - 192.0.2.200 - 2001:db8:1::ffbb interfaces: - name: macsec0 type: macsec state: up ipv4: enabled: true address: - ip: 192.0.2.1 prefix-length: 32 ipv6: enabled: true address: - ip: 2001:db8:1::1 prefix-length: 64 macsec: encrypt: true base-iface: enp0s1 mka-cak: 50b71a8ef0bd5751ea76de6d6c98c03a mka-ckn: f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550 port: 0 validation: strict send-sci: true-
在
mka-cak和mka-ckn参数中使用上一步中生成的 CAK 和 CKN。在 MACsec-protected 网络的每个主机上,这些值必须相同。 可选:在同一 YAML 配置文件中,您还可以配置以下设置:
-
静态 IPv4 地址 -
192.0.2.1,子网掩码为/32 -
静态 IPv6 地址 -
2001:db8:1::1,子网掩码为/64 -
IPv4 默认网关 -
192.0.2.2 -
IPv4 DNS 服务器 -
192.0.2.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com
-
静态 IPv4 地址 -
将设置应用到系统:
# nmstatectl apply create-macsec-connection.yml
验证
以 YAML 格式显示当前状态:
# nmstatectl show macsec0验证流量是否加密:
# tcpdump -nn -i enp0s1可选:显示未加密的流量:
# tcpdump -nn -i macsec0显示 MACsec 统计信息:
# ip macsec show显示每种保护类型的单独的计数器:仅完整性(关闭加密)和加密(打开加密)
# ip -s macsec show