WinMergeでconfigを比較すると、変更予定行だけでなく、意図しない削除、順序差、空白、動的値も見つけられます。比較前に取得条件と文字codeをそろえ、hostname、timestamp、counterなど毎回変わる行を『無視してよい差分』として明示します。
WinMergeでconfigをどう比較する?
先に答えると、WinMergeでconfigを比較すると、変更予定行だけでなく、意図しない削除、順序差、空白、動的値も見つけられます。比較前に取得条件と文字codeをそろえ、hostname、timestamp、counterなど毎回変わる行を『無視してよい差分』として明示します。
比較前に何をそろえる?
仕組みを構成上の位置と観測点に分けると、用語だけでなく実際のpacket・stateを説明できます。
| 項目 | 仕組み・役割 | 実務での判断 |
|---|---|---|
| planned | 作業票どおりの追加・変更・削除 | 設計値と照合 |
| dynamic | timestamp・uptime・counter | 理由を記録して除外 |
| format | space・改行・順序 | 機器が意味を変えないか確認 |
| unexpected | 予定外差分 | 投入停止・原因確認 |
before.cfg ---- WinMerge ---- after.cfg
| planned diff | unexpected diff
+-- change ticket +-- STOP / investigate
差分をどう分類する?
差分をどう分類する?では、対象と期待値を固定し、状態取得、実通信、変更後確認の順に進めます。commandは例であり、本番投入前に対象OSの公式資料と現行設定を確認してください。
| STEP | 実施内容 | 確認する結果 |
|---|---|---|
| 1 | 同一機器・同一取得command・同一文字codeで保存 | 比較条件を統一 |
| 2 | line filterを必要最小限に設定 | 重要行を隠さない |
| 3 | 差分をplanned/dynamic/unexpectedへ分類 | 一行ずつ理由を付ける |
| 4 | running/startupと実通信を確認 | text一致だけで完了しない |
# 取得例
show running-config
show startup-config
# review用ファイル名
R01_before_20260804_2000.cfg
R01_after_20260804_2030.cfg
- ip access-list extended WEB-IN
+ ip access-list extended WEB-IN
+ permit tcp 192.0.2.0 0.0.0.255 host 203.0.113.10 eq 443
見落としや誤検知をどう減らす?
一つの表示だけで原因を決めず、症状ごとに次の観測点を選びます。正常時の同条件出力が比較基準です。
| 症状・誤り | 主な原因候補 | 次に確認すること |
|---|---|---|
| 差分0だが通信NG | state・route・counter・external dependency | show commandと実通信 |
| 大量差分 | 取得範囲・並び順・template違い | 同条件で再取得 |
| 予定行がない | 未投入・別context | 対象hostname/VRF |
| 予定外削除 | command置換・parent config影響 | rollbackしてreview |
reviewerへ何を渡す?
filterで差分を消し過ぎると、事故につながる変更まで見えなくなります。原本、filter適用版、差分reportを分け、reviewerが除外理由を確認できる状態にします。
- 対象機器・interface・VRF/VLAN
- 取得日時・timezone・software version
- 変更前後の同一command出力
- 期待値・実測値・判定者
- 異常時の停止条件とrollback結果
関連する仕組みを次に確認する
定義だけで終わらせず、隣接する仕組みと障害切り分けへ進みます。
まとめ:差分を意図・動的・予定外へ分類し、実機状態でも確認する
差分を意図・動的・予定外へ分類し、実機状態でも確認することが結論です。構成図、設定・command、正常時と異常時の結果を同じ条件で保存し、第三者が判断を再現できる状態にしてください。
