Runbook: MACsec が UP しない / MKA セッション確立失敗¶
実行前提
MACsec 設定変更(config macsec port add/del / profile 変更 / key 更新)は対象 port のトラフィックを暗号化境界の再ネゴ中に断続させる。事前に対向と鍵更新タイミングを合意し、変更前の MACSEC_PROFILE キー値とポート割当を控えること。ロールバックは退避値を sonic-db-cli で hset し直すか config reload で復旧。鍵漏洩の懸念がある場合は退避ファイルの取り扱いに注意。
症状¶
show macsec <port>でsecure-channelが表示されないshow macsecのEgress SA/Ingress SAが0のまま- 対向との link は UP しているが、暗号化フレームが流れず通信不能
想定原因(優先度順)¶
- CAK / CKN 不一致: 対向と pre-shared key の hex 表現が一致していない
- MACsec profile が port に紐付いていない:
config macsec port add <port> <profile>未実行 - cipher_suite 不一致:
GCM-AES-128vsGCM-AES-256の食い違い - MKA priority / key_server 不適切: 双方とも server_priority=0 等で衝突
- 時刻同期ズレで replay window エラー
切り分け手順¶
flowchart TD
A[MACsec MKA が established にならない] --> B{両端 CAK/CKN 一致?}
B -- No --> B1[MACSEC_PROFILE の CAK/CKN を再投入]
B -- Yes --> C{cipher suite 一致?}
C -- No --> C1[cipher_suite を揃える]
C -- Yes --> D{wpa_supplicant ログ EAPOL 通信?}
D -- No --> D1[L2 forwarding / etype 0x888E を確認]
D -- Yes --> E[macsecmgrd / SAI MACSEC 設定を確認]
確認コマンド¶
1. profile / port 状態¶
sonic-db-cli CONFIG_DB hgetall "MACSEC_PROFILE|<profile>"
sonic-db-cli CONFIG_DB hgetall "PORT|Ethernet0" | grep -i macsec
show macsec Ethernet0
2. APPL_DB / STATE_DB¶
sonic-db-cli APPL_DB hgetall "MACSEC_PORT_TABLE:Ethernet0"
sonic-db-cli STATE_DB keys "MACSEC_SA_TABLE|*"
sonic-db-cli STATE_DB hgetall "MACSEC_PORT_TABLE|Ethernet0"
3. MKA daemon (wpa_supplicant) ログ¶
docker exec macsec ps aux | grep wpa_supplicant
docker logs macsec 2>&1 | grep -iE "mka|kay" | tail -200
docker exec macsec cat /etc/wpa_supplicant/wpa_supplicant_<port>.conf
4. 対向との CAK / CKN 突合¶
cknは hex 文字列、cakは cipher_suite と長さが整合する必要がある- 両側で同一値(先頭 / 末尾 / 文字数)を再確認
5. orchagent¶
対処方法¶
- key 修正: profile を一旦 detach → key 再投入 → re-attach(ロールバック: 旧 key 値を控えて同手順で戻す)
- profile 紐付け:
sudo config macsec port add Ethernet0 <profile> - cipher 統一:
sudo config macsec profile add <profile> --cipher_suite GCM-AES-XPN-256 ... - 時刻同期: NTP 復旧後に MKA 再確立を待つ
確認¶
対処後の正常化を以下で裏取りする。
- 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
- 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
- 副作用なし: 関連サブシステム (syslog /
show interfaces counters errors/show ip bgp summary等) に新規 error が出ていないこと - 永続化:
sudo config save -y済みでconfig_db.jsonに変更が反映されていること (恒久対処の場合)
短時間で再発する場合は「想定原因」リストの次候補に進む。
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ master — macsecorch.cpp ↩
-
sonic-net/wpa_supplicant @ master — ieee802_1x_kay.c ↩