Cisco Router へのイメージ転送とバージョンアップの手順

※この作業は、Cisco Router へSSH接続ができる状態であることを前提に記載しています。SSH接続ができない場合は、SSH接続の設定を実施してください。

1. IOSイメージファイルをCisco Router へ転送

Cisco Router へファイル転送するには、FTPやTFTPで行うこともできますが、サーバを用意するなどの事前準備が必要であったりと手間がかかることや現時点で稼働している状態に暗号化されない通信でファイル転送を行うことはセキュリティ的に問題があるため、今回はSCPでファイル転送を行います。1
Cisco Router にSCPでファイル転送を行う場合は、事前に privilege が15のユーザ作成と SCPの有効化を設定する必要があります。2
privilege が15のユーザ(ログイン後に特権モードで操作が可能)が必要な理由は、SCPでファイル転送を行うには flash への書き込み権限が必要なためです。
SCPの有効化が必要な理由は、Cisco Router では、SSH接続の設定だけではSCPでファイル転送ができないためです。

(config)#username <UserName> privilege 15 secret <Password>
(config)#ip scp server enable

flash の空き容量を確認します。

#show file systems
File Systems:
       Size(b)       Free(b)      Type  Flags  Prefixes
*   1959055360    1892917248      disk     rw   sdflash: flash:#

※空き容量が不足している場合は、Cisco Router からIOSイメージファイルを退避させます。
WindowsPowerShell を起動後、以下の通りに実行し、SCPでIOSイメージファイルをローカルにダウンロードします。

> scp -o KexAlgorithms=+diffie-hellman-group-exchange-sha1 -o StrictHostKeyChecking=no <UserName>@<IPアドレス>:/<古いIOSイメージファイル.bin> .
(<UserName>@<IPアドレス>) Password: <--privilege が15のユーザのパスワードを入力
<古いIOSイメージファイル.bin>                                                 100%   62MB 900.4KB/s   01:10

Cisco Router で以下の通りに実行し、IOSイメージファイルを削除します。

#delete flash:<古いIOSイメージファイル.bin>
Delete filename [<古いIOSイメージファイル.bin>]? <--Enterキーを押す
Delete sdflash:/<古いIOSイメージファイル.bin>? [confirm] <--Enterキーを押す

空き容量がある場合は、こちらから作業を進めます。
WindowsPowerShell を起動します。
以下の通りに実行すると、Key Exchange Algorithm が対応していないため接続ができないことがあります。3

> scp <新しいIOSイメージファイル.bin> <UserName>@<IPアドレス>:/<新しいIOSイメージファイル.bin>
Unable to negotiate with <IPアドレス> port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
lost connection

Key Exchange Algorithm が対応していないことで接続ができない場合は、「-o」オプションで Key Exchange Algorithm を指定して、SCPコマンドを実行します。また、SSHでの初回ログインは、fingerprint の確認がありますが、同じく「-o」オプションで無視するようにします。

> scp -o KexAlgorithms=+diffie-hellman-group-exchange-sha1 -o StrictHostKeyChecking=no <新しいIOSイメージファイル.bin> <UserName>@<IPアドレス>:/<新しいIOSイメージファイル.bin>
Warning: Permanently added '<IPアドレス>' (RSA) to the list of known hosts.

(<UserName>@<IPアドレス>) Password: <--privilege が15のユーザのパスワードを入力
<新しいIOSイメージファイル.bin>                                                100%   56MB 334.1KB/s   02:52
Connection to <IPアドレス> closed by remote host.

参考程度に、Cisco Router へIOSイメージファイルを転送している時の負荷は簡易的に構築した Prometheus で監視したところ、以下のような状態でした。チューニングが適切でないため、高負荷時にパラメータが取得できていない時間があります。 以下のグラフを見たところ、一分間の平均CPU使用率が高く、IOSイメージファイルを転送しているので、インターフェースのIN方向(機器に対して通信が入ってくる方向)に対する通信が増加しています。 これらの結果を踏まえて、IOSアップデートするタイミングの検討が必要ですね。

画像1.1. 一分間の平均CPU使用率

画像1.2. 対象インターフェースで受信したパケットの総量

画像1.3. 対象インターフェースで送信したパケットの総量

2. 起動するイメージファイルを設定

今回は明示的にコンフィグファイルに起動するイメージファイルを設定します。古いIOSイメージファイルで起動するように設定をしている場合は、削除します。
flash にイメージファイルが一つしかない場合は、コンフィグファイルへの設定は不要です。コンフィグファイルに起動するイメージファイルを設定する必要があるのは、flash に複数のイメージファイルが存在する場合です。4
精神面で不安がある場合は設定をしておくことを個人的におすすめします。
コンフィグファイルの保存ができたら、「reload」コマンドで再起動します。

#conf t
(config)#no boot system flash:<古いIOSイメージファイル.bin>
(config)#boot system flash:<新しいIOSイメージファイル.bin>
(config)#end
#copy running-config startup-config
Destination filename [startup-config]? <--Enterキーを押す
Building configuration...
[OK]
#reload
Proceed with reload? [confirm] <--Enterキーを押す

3. バージョン確認

 再起動後にバージョン確認コマンドを実行し、新しいバージョンに切り替わっていることを確認します

#show ver
Cisco IOS Software, C****** Software (C******-UNIVERSALK9-M), Version <新しいバージョン>, RELEASE SOFTWARE (fc2)

4.参考資料