7.3. 使用 nmstatectl 配置 MACsec 连接
您可以通过 nmstatectl 工具,以声明的方式将以太网接口配置为使用 MACsec。例如,在 YAML 文件中,您可以描述网络所需的状态,假设其在通过以太网连接的两个主机之间有一个 MACsec 连接。nmstatectl 工具解释 YAML 文件,并在主机之间部署持久和一致的网络配置。
先决条件
- 服务器配置中存在一个物理或虚拟以太网网络接口控制器(NIC)。
-
nmstate软件包已安装。
流程
在您配置 MACsec 的第一个主机上,为预共享密钥创建连接关联密钥(CAK)和连接关联密钥名称(CKN):
创建一个 16 字节的十六进制 CAK:
dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
# dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"' 50b71a8ef0bd5751ea76de6d6c98c03aCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 32 字节的十六进制 CKN:
dd if=/dev/urandom count=32 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
# dd if=/dev/urandom count=32 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"' f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在您要通过 MACsec 连接连接的两个主机上,完成以下步骤:
使用以下设置创建一个 YAML 文件,如
create-macsec-connection.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
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
# nmstatectl apply create-macsec-connection.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以 YAML 格式显示当前状态:
nmstatectl show macsec0
# nmstatectl show macsec0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证流量是否加密:
tcpdump -nn -i enp0s1
# tcpdump -nn -i enp0s1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:显示未加密的流量:
tcpdump -nn -i macsec0
# tcpdump -nn -i macsec0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示 MACsec 统计信息:
ip macsec show
# ip macsec showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 显示每种保护类型的单独的计数器:仅完整性(关闭加密)和加密(打开加密)
ip -s macsec show
# ip -s macsec showCopy to Clipboard Copied! Toggle word wrap Toggle overflow