本页面介绍如何排查 MACsec for Cloud Interconnect 的问题。
当我尝试创建新密钥时,Cloud Interconnect 显示错误
如果您的现有 MACsec 密钥没有开始时间,并且尝试创建新密钥,则 Cloud Interconnect 会显示错误。如需解决该错误,请更新现有密钥的开始时间。
MACsec 在我的 Cloud Interconnect 连接上正常关闭
您已成功在 Cloud Interconnect 连接和本地路由器上启用了 MACsec,但 MACsec 会话显示它在 Cloud Interconnect 连接链路上正常关闭。此问题可能是由于以下某个原因造成:
- 本地路由器上的活动密钥与 Google 的边缘路由器不匹配。
- 您的本地路由器和 Google 的边缘路由器之间存在 MACsec 协议不匹配。
如需解决 MACsec 状态,请执行以下操作:
如需验证您的 Cloud Interconnect 连接是否已启用 MACsec,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Cloud Interconnect 物理连接标签页。
选择要查看的 Cloud Interconnect 连接。
在 MACsec 标签页上,验证 MACsec MACsec是否显示以下其中一项:
已启用,应急开启:链路上已启用 MACsec 加密。如果两端之间未建立 MACsec 加密,则链路无需加密即可运行。
已启用,应急关闭:链路上已启用 MACsec 加密。如果两端之间未建立 MACsec 加密,则链路将失败。
gcloud
gcloud compute interconnects describe INTERCONNECT_CONNECTION_NAME
将
INTERCONNECT_CONNECTION_NAME
替换为您的 Cloud Interconnect 连接的名称。输出类似于以下内容。验证是否已显示
macsecEnabled: true
:adminEnabled: true availableFeatures: - IF_MACSEC circuitInfos: - customerDemarcId: fake-peer-demarc-0 googleCircuitId: LOOP-0 googleDemarcId: fake-local-demarc-0 creationTimestamp: '2021-10-05T03:39:33.888-07:00' customerName: Fake Company description: something important googleReferenceId: '123456789' id: '12345678987654321' interconnectAttachments: - https://www.googleapis.com/compute/v1/projects/my-project1/regions/us-central1/interconnectAttachments/interconnect-123456-987654321-0 interconnectType: IT_PRIVATE kind: compute#interconnect labelFingerprint: 12H17262736_ linkType: LINK_TYPE_ETHERNET_10G_LR location: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnectLocations/cbf-zone2-65012 macsec: failOpen: false preSharedKeys: - name: key1 startTime: 2023-07-01T21:00:01.000Z macsecEnabled: true name: INTERCONNECT_CONNECTION_NAME operationalStatus: OS_ACTIVE provisionedLinkCount: 1 requestedFeatures: - IF_MACSEC requestedLinkCount: 1 selfLink: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME selfLinkWithId: https://www.googleapis.com/compute/v1/projects/my-project1/global/interconnects/12345678987654321 state: ACTIVE
如需检查 Cloud Interconnect 端口状态、MACsec 操作状态和有效密钥名称,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Cloud Interconnect 物理连接标签页。
选择要查看的 Cloud Interconnect 连接。
在链路线路信息中,验证是否所有链路的链路状态都显示
活跃。验证 MACsec 密钥名称是否显示所有链路的密钥名称,以及每个密钥名称是否显示
此链路上的 MACsec 已开启或 此链路上的 MACsec 已关闭。
gcloud
gcloud compute interconnects get-diagnostics INTERCONNECT_CONNECTION_NAME \ --project=PROJECT_NAME
将
PROJECT_NAME
替换为您的 Google Cloud 项目的名称。输出类似于以下内容。验证
links.lacpStatus.state
是否显示ACTIVE
,links.macsec.ckn
是否显示值,links.operationalStatus
是否显示LINK_OPERATIONAL_STATUS_UP
:bundleAggregationType: BUNDLE_AGGREGATION_TYPE_STATIC bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP links: - circuitId: LOOP-0 googleDemarc: fake-local-demarc-0 lacpStatus: googleSystemId: '00:11:22:33:44:55' neighborSystemId: '55:44:33:22:11:00' state: ACTIVE macsec: ckn: 0101010189abcdef...0123456789abcdef operational: false operationalStatus: LINK_OPERATIONAL_STATUS_UP receivingOpticalPower: state: OK value: -2.49 transmittingOpticalPower: state: OK value: -0.88 macAddress: 00:11:22:33:44:55
如果
links.macsec.ckn
未显示任何值,请与 Google Cloud 支持团队联系以获取帮助。如需验证有效密钥的 CAK 和 CKN 值以及密钥的开始时间,请选择以下选项之一:
控制台
在 MACsec 标签页上,前往预共享密钥部分,然后点击有效密钥旁边的查看。如果未显示 CKN 值,请与 Google Cloud 支持团队联系以获取帮助。
在预共享密钥部分中,验证有效密钥列出的开始时间是否与本地路由器上的开始时间匹配。执行下列其中一项操作:
如果值不匹配,请参阅路由器的手册来更新路由器上的值,然后验证是否可以建立 MACsec 会话。
如果值匹配,但 MACsec 会话仍然在链路上关闭,则继续执行下一步。
gcloud
运行
gcloud compute interconnects get-diagnostics
命令以显示有效密钥的 CKN 值。如果您配置了多个密钥,则系统会选择开始时间最新(非将来时间)的密钥作为有效密钥。Google 的边缘路由器会拒绝任何尝试使用旧密钥的新 MACsec 会话。
获取 MACsec 配置,然后记下 CAK 值和密钥的开始时间(与之前显示的 CKN 值相对应):
gcloud compute interconnects macsec get-config INTERCONNECT_CONNECTION_NAME
将
INTERCONNECT_CONNECTION_NAME
替换为您的 Cloud Interconnect 连接的名称。输出类似于以下内容;查找
ckn
:preSharedKeys: - name: key1 ckn: 0101010189abcdef...0123456789abcdef cak: 0123456789abcdef...0123456789abcdef startTime: 2023-07-01T12:12:12Z - name: key2 ckn: 0202020289abcdef...0123456789abcdef cak: 0123456789abcdef...0123456789abcdef startTime: 2023-08-01T12:12:12Z
验证本地路由器上的有效 CKN、CAK 和开始时间是否与 MACsec for Cloud Interconnect 显示的值匹配。执行下列其中一项操作:
如果值不匹配,请参阅路由器的手册来更新路由器上的值,然后验证是否可以建立 MACsec 会话。
如果值匹配,但 MACsec 会话仍然在链路上关闭,则继续执行下一步。
查看指标以确定数据包是否在 Cloud Interconnect 连接的入站流量或出站流量上丢弃。如需了解如何查看指标,请参阅监控连接。
如需确定后续步骤,请执行以下操作:
如果
network/interconnect/link/macsec/received_errors_count
正在递增,则数据包因错误而在入站流量 Cloud Interconnect 连接上发生丢弃。这表示您的本地路由器和 Google 边缘路由器之间存在协议不匹配。检查本地路由器的日志以进行问题排查。如果以下任何计数器正在递增,请与 Google Cloud 支持团队联系以获取进一步帮助:
network/interconnect/link/macsec/received_dropped_packets_count
network/interconnect/link/macsec/send_errors_count
network/interconnect/link/macsec/send_dropped_packets_count
如果以下计数器未递增,则表示数据包在本地路由器的出站流量上发生丢弃。检查本地路由器的日志以进行问题排查。
network/interconnect/receive_errors_count
network/interconnect/received_unicast_packets_count
network/interconnect/link/macsec/received_control_packets_count
network/interconnect/link/macsec/received_data_packets_count
network/interconnect/link/macsec/received_errors_count
network/interconnect/link/macsec/received_dropped_packets_count
MACsec 正在运行且丢失数据包
您已成功启用 MACsec for Cloud Interconnect,并且 MACsec 仍可正常运行,但会遇到数据包丢失的问题。
如果 MACsec 连接正常运行,但 Cloud Interconnect 的链路聚合控制协议 (LACP) 状态为 Detached
,请验证是否已在本地路由器上启用安全信道标识符 (SCI)。如需了解详情,请参阅配置本地路由器。
查看指标以确定数据包是否在 Cloud Interconnect 连接的入站流量或出站流量上丢弃。如需了解如何查看指标,请参阅监控连接。如果 Cloud Interconnect 连接未显示任何数据包错误或丢失,请继续检查 MACsec 路由器:
如果
network/interconnect/link/macsec/received_errors_count
正在递增,则数据包因错误而在入站流量 Cloud Interconnect 连接上发生丢弃。这表示您的本地路由器和 Google 边缘路由器之间存在协议不匹配。检查本地路由器的日志以进行问题排查。如果以下任何计数器正在递增,请与 Google Cloud 支持团队联系以获取进一步帮助:
network/interconnect/link/macsec/received_dropped_packets_count
network/interconnect/link/macsec/send_errors_count
network/interconnect/link/macsec/send_dropped_packets_count
如果以下计数器未递增,则表示数据包在本地路由器的出站流量上发生丢弃。检查本地路由器的日志以进行问题排查。
network/interconnect/receive_errors_count
network/interconnect/received_unicast_packets_count
network/interconnect/link/macsec/received_control_packets_count
network/interconnect/link/macsec/received_data_packets_count
network/interconnect/link/macsec/received_errors_count
network/interconnect/link/macsec/received_dropped_packets_count
排查启用应急开启行为时的 MACsec 问题
如果您启用具有应急开启行为的 MACsec for Cloud Interconnect,那么即使无法成功建立 MACsec 会话,Cloud Interconnect 连接也会继续转发流量。我们强烈建议您避免对生产 Cloud Interconnect 连接使用应急开启行为,以免以明文形式传输数据包。
如需确定配置并声明 MACsec 连接,请执行以下操作:
要验证 Cloud Interconnect 连接的状态,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Cloud Interconnect 物理连接标签页。
选择要查看的 Cloud Interconnect 连接。
在 MACsec 标签页上,验证 MACsec 配置是否显示已启用,应急开启。
gcloud
gcloud compute interconnects describe INTERCONNECT_CONNECTION_NAME
将
INTERCONNECT_CONNECTION_NAME
替换为您的 Cloud Interconnect 连接的名称。输出类似于以下内容;查找设置为
true
的macsec failOpen
和设置为true
的macsecEnabled
:availableFeatures: - IF_MACSEC adminEnabled: true circuitInfos: - customerDemarcId: fake-peer-demarc-0 googleCircuitId: LOOP-0 googleDemarcId: fake-local-demarc-0 creationTimestamp: '2021-10-05T03:39:33.888-07:00' customerName: Fake Customer description: <something> googleReferenceId: '123456789' id: '12345678987654321' interconnectAttachments: - https://www.googleapis.com/compute/prod/projects/my-project1/regions/us-central1/interconnectAttachments/interconnect-123456-123456789-0 interconnectType: IT_PRIVATE kind: compute#interconnect labelFingerprint: 42WmSpB8rSM= linkType: LINK_TYPE_ETHERNET_10G_LR location: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnectLocations/cbf-zone2-65012 macsec: failOpen: true preSharedKeys: - name: key3 startTime: '2023-07-01T21:00:01.000Z' macsecEnabled: true name: INTERCONNECT_CONNECTION_NAME operationalStatus: OS_ACTIVE provisionedLinkCount: 1 requestedFeatures: - IF_MACSEC requestedLinkCount: 1 selfLink: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME selfLinkWithId: https://www.googleapis.com/compute/prod/projects/my-project1/global/interconnects/INTERCONNECT_CONNECTION_NAME/12345678987654321 state: ACTIVE
在此示例中,
macsec.failopen
显示true
,macsecEnabled
显示true
。如需检查 Cloud Interconnect 连接的端口状态、MACsec 操作状态和有效密钥名称,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 Cloud Interconnect 物理连接标签页。
选择要查看的 Cloud Interconnect 连接。
在链路线路信息中,验证是否所有链路的链路状态都显示
活跃。验证 MACsec 密钥名称是否显示所有链路的密钥名称,以及每个密钥名称是否显示
此链路上的 MACsec 已开启或 此链路上的 MACsec 已关闭。
gcloud
gcloud compute interconnects get-diagnostics INTERCONNECT_CONNECTION_NAME \ --project=PROJECT_NAME
将
PROJECT_NAME
替换为您的 Google Cloud 项目的名称。输出类似于以下内容;查找设置为
BUNDLE_OPERATIONAL_STATUS_UP
的bundleOperationalStatus
,设置为ACTIVE
的state
,以及设置为false
的macsec
ckn
operational
:bundleAggregationType: BUNDLE_AGGREGATION_TYPE_LACP bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP links: - circuitId: LOOP-0 googleDemarc: fake-local-demarc-0 lacpStatus: googleSystemId: '00:11:22:33:44:55' neighborSystemId: '55:44:33:22:11:00' state: ACTIVE macsec: ckn: 0101010189abcdef...0123456789abcdef operational: false operationalStatus: LINK_OPERATIONAL_STATUS_UP receivingOpticalPower: state: OK value: -2.49 transmittingOpticalPower: state: OK value: -0.88 macAddress: 00:11:22:33:44:55
在此示例中:
bundleOperationalStatus: BUNDLE_OPERATIONAL_STATUS_UP
表示软件包已正常运行。links.lacpStatus.state: ACTIVE
表示 LACP 成员链路已启动。links.macsec.operational: false
表示 MACsec 已正常关闭。
在这种情况下,由于启用了应急开启行为,因此不会丢弃 LACP 控制数据包。
如果
links.macsec.ckn
未显示任何值,请与 Google Cloud 支持团队联系以获取帮助。gcloud compute interconnects get-diagnostics
命令显示有效密钥的 CKN 值。如果您配置了多个密钥,则系统会选择开始时间最新的密钥作为有效密钥。Google 的边缘路由器会拒绝任何尝试使用旧密钥的新 MACsec 会话。如需获取 MACsec 配置,然后记下 CAK 值和之前显示的 CKN 值对应的密钥的开始时间,请选择以下选项之一:
控制台
在 MACsec 标签页上,前往预共享密钥部分,然后点击有效密钥旁边的查看。如果密钥的 CAK 和 CKN 值未显示,请与 Google Cloud 支持团队联系以获取帮助。
在预共享密钥部分中,验证有效密钥列出的开始时间是否与本地路由器上的开始时间匹配。
gcloud
运行以下命令:
gcloud compute interconnects macsec get-config INTERCONNECT_CONNECTION_NAME
输出类似于以下内容;查找
preSharedKeys
name
ckn
:preSharedKeys: - name: key1 ckn: 0101010189abcdef...0123456789abcdef cak: 0123456789abcdef...0123456789abcdef startTime: 2023-07-01T12:12:12Z - name: key2 ckn: 0202020289abcdef...0123456789abcdef cak: 0123456789abcdef...0123456789abcdef startTime: 2023-08-01T12:12:12Z
验证本地路由器上的有效 CKN、CAK 和开始时间是否与 MACsec for Cloud Interconnect 显示的值匹配。
执行下列其中一项操作:
如果值不匹配,请参阅路由器的手册来更新路由器上的值,然后验证是否可以立即建立 MACsec。
如果值匹配,但 MACsec 会话仍然在链路上关闭,则继续执行下一步。
查看指标以观察 Cloud Interconnect 连接的数据包计数器。如需详细了解如何查看指标,请参阅监控连接。
启用 MACsec 应急开启行为时,以下计数器会递增:
network/interconnect/sent_unicast_packets_count
network/interconnect/received_unicast_packets_count
启用 MACsec 应急开启行为时,以下计数器不会递增:
network/interconnect/link/macsec/received_control_packets_count
network/interconnect/link/macsec/received_data_packets_count
network/interconnect/link/macsec/sent_control_packets_count
network/interconnect/link/macsec/sent_data_packets_count
如需确定后续步骤,请执行以下操作:
如果
network/interconnect/link/macsec/received_errors_count
正在递增,则数据包因错误而在入站流量 Cloud Interconnect 连接上发生丢弃。这表示您的本地路由器和 Google 边缘路由器之间存在协议不匹配。检查本地路由器的日志以进行问题排查。如果以下任何计数器正在递增,请与 Google Cloud 支持团队联系以获取进一步帮助:
network/interconnect/link/macsec/received_dropped_packets_count
network/interconnect/link/macsec/send_errors_count
network/interconnect/link/macsec/send_dropped_packets_count
如果以下计数器未递增,则可能表示数据包在本地路由器的出站流量上发生丢弃。检查本地路由器的日志以进行问题排查。
network/interconnect/receive_errors_count
network/interconnect/received_unicast_packets_count
network/interconnect/link/macsec/received_errors_count
network/interconnect/link/macsec/received_dropped_packets_count