Cisco IOS ROMmon パスワードリカバリ IOS復旧 TFTP

通常、CiscoスイッチはIOSイメージを読み込み正常に起動します。しかし、IOSファイルの破損やBOOT変数の誤設定などにより、ROMmonモードで起動することがあります。ROMmonモードはブートローダ環境で最低限のコマンドしか使えませんが、IOS復旧やパスワードリカバリを行う重要な手段です。

本記事では、ROMmonモードに入る原因・基本コマンド・パスワードリカバリの正確な手順・TFTPを使ったIOS再インストール手順まで、実務目線で解説します。

👷 現場での体験談

引き継いだスイッチのパスワードが台帳と一致せず、ログインできない状態になったことがありました。コンソールケーブルでつないでもパスワードを聞かれるだけ。そのままでは何もできません。

ROMmonモードでのパスワードリカバリを初めて実施したとき、confreg設定後の再起動後にcopy startup-config running-configを入力しないまま設定を変更してしまい、既存の設定を丸ごと上書きしてしまうミスをしました。順番を間違えると既存設定が消える可能性があるため、手順書を事前に用意してから作業することを強くおすすめします。

ROMmon復旧手順図
ROMmon復旧フロー:TFTP/Xmodem/Boot変数修正の3つの復旧方法

ROMmonモードとは

ROMmon(ROM Monitor)は、Cisco機器のROMに書き込まれた最低限のブートローダ環境です。IOSが正常に読み込めない場合や、意図的に操作した場合に起動します。

図1:Cisco機器の起動フロー
電源ON → POST(ハードウェア自己診断)
BOOT変数を参照してフラッシュのIOSを読み込む
IOS読み込み成功↓
✅ 通常起動
Switch#
IOS読み込み失敗↓
❌ ROMmonモードで起動
rommon 1 >
💾
ファイル操作が可能
dirコマンドでフラッシュメモリの内容を確認できる
📡
TFTPでIOS取得
tftpdnldコマンドでTFTPサーバからIOSイメージをダウンロードできる
🔑
パスワードリカバリ
confreg設定でstartup-configを無視して起動し、パスワードをリセットできる

ROMmonモードに入る主な原因

原因詳細対処の方向性
IOSイメージの破損・削除フラッシュ内のIOSファイルが壊れているか存在しないTFTPでIOS再インストール
BOOT変数の未設定・誤設定起動するIOSファイルを参照できないROMmonでBOOT変数を修正して再起動
パスワードリカバリモードの起動意図的にBreakキー操作でROMmonに入ったパスワードリカバリ手順を実施
フラッシュメモリの障害フラッシュメモリ自体が壊れているハードウェア交換が必要な場合もある
図2:ROMmonモードになる原因の内訳(現場経験ベース)

ROMmonの基本コマンド

ROMmonモードでは通常のIOS CLIコマンドは使えません。まず以下の基本コマンドで現状を把握することが重要です。

rommon 1 > dir flash:      ← フラッシュの内容確認(IOSファイルの有無を確認)
rommon 2 > set             ← 環境変数の確認(BOOT変数やIP設定)
rommon 3 > ?               ← 使えるコマンド一覧の表示
コマンド用途使うシーン
dir flash:フラッシュメモリの内容表示IOSファイルの有無・ファイル名確認
set環境変数の一覧表示BOOT変数やIP設定の確認
boot flash:ファイル名指定ファイルでIOSを起動IOSダウンロード後の起動確認
tftpdnldTFTPサーバからIOSをダウンロードIOS再インストール時
confreg 0x2142startup-configを無視して起動パスワードリカバリ時
reset機器を再起動confreg設定後の再起動

パスワードリカバリ手順(詳細)

パスワードがわからなくなってログインできない場合に実施します。コンソールケーブルでの接続が必須です。

🚨 作業前の必須確認 パスワードリカバリは物理的にアクセスできる人間が行える操作です。セキュリティ管理者の承認を得たうえで実施し、作業記録を残してください。また機器を再起動するため、業務影響のない時間帯に実施することを推奨します。
1
ROMmonモードで起動する

電源ON直後(POST中)にBreakキー(またはCtrl+C)を押し続けてROMmonモードに入ります。ターミナルソフトのBreakキー送信機能を使います。タイミングが合わなければ通常起動するため、何度か試みてください。

2
confreg設定を変更してstartup-configを無視させる
rommon 1 > confreg 0x2142

レジスタ値0x2142を設定することで、次の起動時にstartup-configを読み込まずに起動します(空の設定で起動)。

3
resetで再起動する
rommon 2 > reset

再起動後、startup-configを無視して起動するためパスワードなしでenableモードに入れます。

4
既存の設定をrunning-configに読み込む(重要)
Switch> enable
Switch# copy startup-config running-config
⚠ このステップは絶対に省略しないこと。このコマンドを実行しないままパスワードを変更すると、既存の設定(VLAN・ポリシー・ルーティング等)が失われます。必ずstartup-configをrunning-configにコピーしてから次の手順に進んでください。
5
パスワードを変更する
Switch# configure terminal
Switch(config)# enable secret [新しいパスワード]

! VTYラインのパスワードも変更する場合
Switch(config)# line vty 0 4
Switch(config-line)# password [新しいパスワード]
Switch(config-line)# login local   ← ローカル認証の場合
Switch(config-line)# exit
6
confreg値を元に戻して保存する
Switch(config)# config-register 0x2102   ← 通常のconfreg値に戻す
Switch(config)# end
Switch# write memory   ← または copy running-config startup-config

0x2102は通常のconfigレジスタ値です。これを設定しないと次の再起動でもstartup-configを無視した状態になります。

7
再起動して確認する
Switch# reload

! 再起動後、新しいパスワードでログインできるか確認
Switch# show running-config | include enable
Switch# show boot

IOS再インストール手順(TFTP経由)

IOSファイルが破損・削除されている場合、TFTPサーバ経由でIOSをダウンロードして再インストールします。

事前準備

🖥️
TFTPサーバを用意
Windows PCにSolarWinds TFTPやtftpd64などをインストール
📦
IOSイメージを配置
Cisco CCOから正規IOSを入手し、TFTPルートディレクトリに配置
🔌
ネットワーク接続を確認
TFTPサーバとスイッチのManagementポート(またはポート)を同一セグメントで接続

ROMmonでの環境変数設定とダウンロード

! スイッチ自身のIPアドレスを設定
rommon 1 > IP_ADDRESS=192.168.1.10

! サブネットマスクを設定
rommon 2 > IP_SUBNET_MASK=255.255.255.0

! デフォルトゲートウェイを設定(TFTPサーバと別セグメントの場合)
rommon 3 > DEFAULT_GATEWAY=192.168.1.1

! TFTPサーバのIPアドレスを設定
rommon 4 > TFTP_SERVER=192.168.1.100

! ダウンロードするIOSファイル名を設定
rommon 5 > TFTP_FILE=c2960-lanbasek9-mz.150-2.SE8.bin

! ダウンロード開始
rommon 6 > tftpdnld
⚠ TFTPダウンロード時の注意点
  • ファイル名は完全一致が必要:大文字小文字・拡張子(.bin)まで正確に入力する
  • TFTPサーバのファイアウォールを確認:UDP 69番ポートが許可されているか確認する
  • フラッシュの空き容量を確認dir flash:で空き容量がIOSファイルサイズより大きいか確認する

ダウンロード後の起動と設定

! ダウンロードしたIOSで起動
rommon 7 > boot flash:c2960-lanbasek9-mz.150-2.SE8.bin

! 起動後、BOOT変数を設定して次回から自動で起動させる
Switch# configure terminal
Switch(config)# boot system flash:c2960-lanbasek9-mz.150-2.SE8.bin
Switch(config)# end
Switch# write memory

起動後の確認コマンド

! IOSバージョンと起動状態の確認
Switch# show version

! ブート変数の確認(BOOT変数が正しく設定されているか)
Switch# show boot

! 現在の設定確認
Switch# show running-config

! フラッシュの内容確認(IOSが正しく保存されているか)
Switch# show flash:
確認ポイント確認コマンド確認内容
IOSバージョンshow version意図したIOSバージョンで起動しているか
ブート変数show bootBOOT変数が正しいIOSファイルを指しているか
configレジスタshow version(末尾に表示)0x2102になっているか(パスワードリカバリ後は必ず確認)
フラッシュ容量show flash:IOSファイルが正しく保存されているか・空き容量は十分か

運用上の注意点と予防策

💾
IOSを事前バックアップ
定期的にIOSをTFTPサーバにバックアップしておく。障害時にすぐ再インストールできる
⚙️
BOOT変数を正しく設定
IOSアップグレード後は必ずBOOT変数を更新し、新しいIOSを指定する
🔒
パスワードリカバリは管理下で
セキュリティ管理者の承認・立ち会いのもとで実施し、作業記録を残す
📋
手順書を事前に用意
本番障害中に手順を考えると焦りでミスが増える。平常時に手順を確認しておく

まとめ

ROMmonモードはトラブル時の復旧に不可欠な機能です。パスワードリカバリやIOS再インストール手順を事前に理解しておくことで、障害発生時にも迅速な対応が可能になります。

  • ROMmonはIOS読み込み失敗時やBreakキー操作で入る最低限のブートローダ環境
  • パスワードリカバリで最も重要な手順:confreg→reset→copy startup-config running-config→パスワード変更→confreg戻し→保存の順番を守る
  • copy startup-config running-configを省略すると既存設定が失われる
  • IOS再インストールはTFTP経由で実施。ファイル名は完全一致が必要
  • 起動後はconfreg値(0x2102)・BOOT変数・IOSバージョンを必ず確認する
  • IOSのTFTPバックアップと手順書の事前準備が復旧作業の成否を左右する

障害は突然やってきます。平常時に手順を確認し、TFTPサーバとIOSバックアップを準備しておきましょう。