Cisco Router でのロールバックの使い方

1. 初めに

 検証作業などでコンフィグファイルを変更前の状態に戻したい場合に、投入した設定をすべて削除または戻すコマンドを用意して、実行するのは手間がかかる。その場合、特定地点の設定内容までに戻すことができるのが、ロールバックである。 ロールバックは事前に任意地点の設定ファイルを保存し、保存した設定ファイルを現時点のファイルと置換する。
注意点があるとすれば、コンフィグファイルを保存するということは同じコンフィグファイルが二つ存在することになるため、コンフィグファイルのサイズが格納可能な空き容量が必要となる。しかしながら、コンフィグファイルのサイズが格納できない状態が発生することはあまり考えられないため知識として覚えておくだけで問題ないと考える。
その他の注意点は、以下の内容を確認ください。

コンフィギュレーションの置換とロールバックの制約事項
バイスに、2 つのコンフィギュレーション ファイル(現在の実行コンフィギュレーションと、保存された置換用コンフィギュレーション)を合わせたサイズより大きな空きメモリがない場合、コンフィギュレーション置換操作は実行されません。

ネットワーク デバイスの物理コンポーネント(物理インターフェイスなど)に関連する特定の Cisco コンフィギュレーション コマンドは、実行コンフィギュレーションについて追加または削除することはできません。たとえば、コンフィギュレーション置換操作を行っても、そのインターフェイスがデバイス上に物理的に存在する場合、現在の実行コンフィギュレーションから interface ethernet 0 コマンド行を削除することはできません。同様に、interface ethernet 1 コマンド行は、そのようなインターフェイスがデバイス上に物理的に存在しない場合、実行コンフィギュレーションに追加することはできません。コンフィギュレーション置換操作でこのタイプの変更を試行すると、その特定のコマンド行が失敗したことを示すエラー メッセージが表示されます。

非常にまれなケースですが、ルータをリロードしないと特定の Cisco コンフィギュレーション コマンドを実行コンフィギュレーションから削除できないことがあります。コンフィギュレーション置換操作でこのタイプのコマンドの削除を試行すると、その特定のコマンド行が失敗したことを示すエラー メッセージが表示されます。

出典:コンフィギュレーションの置換とロールバック [Cisco IOS 15.1S]1

2. 使用機器

機器 詳細
Cisco Router 800M IOS 15.9(3)M7

3. 準備

 バックアップを取得するための準備をする。
アーカイブファイルを格納するためのフォルダ(例:archive)を「mkdir」コマンドで作成する。2

#mkdir archive
Create directory filename [archive]?  <--Enterキー
Created dir sdflash:/archive  <--Enterキー

#dir flash:/ 
Directory of sdflash:/

  377  drw-           0  Oct 12 2022 20:43:14 +09:00  archive

1959055360 bytes total (1893502976 bytes free)

4. 設定

 アーカイブ取得に関する設定をする。今回は、先ほど作成したフォルダに最大で3世代分(有効な値は 1 ~ 14 で、デフォルトは 10 です。3 )のアーカイブを取得することができるように設定する。4
アーカイブを小刻みに取得する場合、例として一日一度アーカイブを取得する設計にすると、7世代にするなどの検討は必要である。
アーカイブの取得を自動で実施するような設定も可能ですが、今回は手動でアーカイブを取得するようにする。
「path」コマンドで設定するアーカイブパスはファイル名が重複しないように自動でアーカイブファイル名の最後に連番の数字が付与される。[5. アーカイブ取得]のアーカイブファイル確認でも記述している。

(config)# archive
(config-archive)# path flash:/archive/RT
(config-archive)# maximum 3

5. アーカイブ取得

 「archive config」で現時点のコンフィグファイルのアーカイブを取得する。プロンプトが返されれば問題なくアーカイブが取得できている。

#archive config

アーカイブ取得後の状態を確認する。アーカイブファイルの格納場所とどのアーカイブファイルが直近で取得したものであるかを「<- Most Recent」で示している。
アーカイブは世代から増えるにしたがって、新しくなる。ここでは、アーカイブ1が古く、アーカイブ3が新しい。
アーカイブで4世代目を取得する場合、1世代目のアーカイブが消え、3世代目に新しいアーカイブが追加される。

#show archive
The maximum archive configurations allowed is 3.
There are currently 1 archive configurations saved.
The next archive file will be named flash:/archive/RT-<timestamp>-1
 Archive #  Name
   1        flash:/archive/RT-Nov-14-11-19-00.602-0 <- Most Recent
   2
   3

#dir flash:/archive/
Directory of sdflash:/archive/

  383  -rw-        5580  Nov 14 2023 20:19:00 +09:00  RT-Nov-14-11-19-00.602-0

1959055360 bytes total (1827606528 bytes free)

アーカイブを取得する際、アーカイブファイル名の最後に自動で連番が付与されるためアーカイブファイル名が重複することはない。
[<timestamp>] のフォーマットは、[<month>-<date>-<hour>-<minutes>-<second.micro second>-<timezone>] となります。

The next archive file will be named flash:/archive/RT-<timestamp>-1

6. ロールバック

 実際に「show archive」で確認した戻したいアーカイブを指定し、ロールバックを実施する。ロールバック実施前に、対象アーカイブファイルが想定の内容であることを事前に確認することをお勧めする。
また、以下のオプションは必須ではない。
force:本当にコンフィグファイルをロールバックしても問題ないかの確認を省略することができるオプション。以下の例での「yes」を入力する必要がなくなる。

#show archive config differences flash:/archive/RT-Oct-12-20-51-24.554-1
<出力内容省略>

#configure replace flash:/archive/RT-Oct-12-20-51-24.554-1 [force]
This will apply all necessary additions and deletions 
to replace the current running configuration with the 
contents of the specified configuration file, which is 
assumed to be a complete configuration, not a partial 
configuration. Enter Y if you are sure you want to proceed. ? [no]: yes <--Enter "yes"
Total number of passes: 1 
Rollback Done

7. 最後に

 ロールバックは特定地点の設定内容まで比較的簡単に戻せることができる便利な一面がある。しかしながら、私個人の感想として、実際に運用中の機器に対してロールバックを実施することはできる限り控えるべきと考える。理由は一つで、ロールバックはコンフィグファイルの置換であり、実際にコマンドを実行して設定を戻す機能ではないためである。初めに注意点として記載した通り、「非常にまれなケースですが、ルータをリロードしないと特定の Cisco コンフィギュレーション コマンドを実行コンフィギュレーションから削除できないことがあります。」といった事象が発生する可能性があり、機器で予期しない動作が発生することを防ぐためでもある。
機能としては非常に便利なものですので、検証作業時に使用するなど状況に応じて、うまく活用するべきである。

8. 参考文献