ネットワーク機器の運用管理において、機器がどのように起動し、どの設定ファイルを読み込むかを制御する仕組みを理解することは不可欠です。

特にCisco製のルータやスイッチを扱う際、中心的な役割を果たすのが「コンフィギュレーションレジスタ(configレジスタ)」です。

このレジスタ値を適切に設定することで、通常の起動プロセスだけでなく、パスワードを忘れた際のリカバリ作業なども可能になります。

本記事では、コンフィギュレーションレジスタの基礎知識から、主要な設定値の意味、そして具体的な確認・変更手順について詳しく解説します。

コンフィギュレーションレジスタとは

コンフィギュレーションレジスタは、ネットワーク機器の物理的な動作や起動時の挙動を制御するための16ビットの数値です。

この数値は通常、NVRAM(非揮発性メモリ)と呼ばれる領域に保存されています。

機器の電源が投入された際、ハードウェアはまずこのレジスタ値を参照し、どのモードで起動すべきかを判断します。

例えば、OS(Cisco IOSなど)をどこから読み込むか、あるいは設定ファイルを無視して起動するかといった動作がこの数値によって決まります。

ネットワークエンジニアにとっては、トラブルシューティングやメンテナンスの際に操作する頻度が高い非常に重要な設定項目です。

設定値(ビット)が持つ具体的な意味

コンフィギュレーションレジスタは16進数で表現されますが、その実体は16個のビットの集合体です。

それぞれのビットには特定の役割が割り当てられており、それらの組み合わせによって最終的な16進数の値が決定されます。

ブートフィールド(ビット00〜03)

レジスタ値の最も右側の4ビット(0桁目から3桁目)は「ブートフィールド」と呼ばれます。

この部分は、機器が起動する際にどのソースからオペレーティングシステムをロードするかを決定します。

値が「0x0」の場合、機器はROMモニタ(ROMMON)モードで停止し、手動での起動指示を待ちます。

値が「0x1」の場合、ROM内に保存されているサブセットのIOSを自動的にロードしようとします。

値が「0x2」から「0xF」の範囲であれば、NVRAM内の設定に従って標準的な起動プロセスを実行します。

NVRAMの内容を無視する設定(ビット06)

ビット06は、起動時にスタートアップコンフィギュレーション(startup-config)を無視するかどうかを制御します。

通常、このビットは「0」に設定されており、保存されている設定ファイルを読み込んで起動します。

しかし、このビットを「1」に立てる(有効にする)と、設定ファイルが存在しないかのように振る舞い、初期状態で起動します。

この仕組みは、管理者パスワードを忘れてしまった際の「パスワードリカバリ」において極めて重要な役割を果たします。

コンソール通信速度の制御(ビット11〜12)

ビット11とビット12の組み合わせは、コンソールポートのボーレート(通信速度)を決定するために使用されます。

標準的な設定では9600bpsが使用されますが、これらのビットを操作することで異なる速度に変更することが可能です。

不用意に変更してしまうと、標準的な設定ではコンソール接続ができなくなるため注意が必要です。

代表的なレジスタ値の一覧

運用現場で頻繁に使用される代表的な設定値を以下の表にまとめました。

設定値(16進数)主な意味と動作内容
0x2102標準的なデフォルト設定値です。NVRAMの設定を読み込み、通常の起動を行います。
0x2142スタートアップコンフィギュレーションを無視して起動します。パスワードリカバリ用です。
0x2101ROM内のブートイメージから起動するように強制します。
0x0電源投入後、自動起動せずにROMモニタモードで停止します。

通常、安定稼働している機器の多くは 0x2102 に設定されています。

もし 0x2142 のまま運用を続けてしまうと、再起動するたびに設定が消えて(無視されて)初期状態に戻ってしまうため、作業後は必ず元に戻す必要があります。

レジスタ値の確認方法

現在、機器がどのレジスタ値で動作しているか、および次回の起動時にどの値が適用されるかを確認するには、特権EXECモードでコマンドを実行します。

最も一般的な確認方法は show version コマンドを使用することです。

access
Router# show version
(中略)
Configuration register is 0x2102

出力結果の最終行付近に、現在のレジスタ値が表示されます。

もしレジスタ値を変更した直後であれば、「will be 0xXXXX at the next reload」といった形式で、次回起動時の予定値も併記されます。

レジスタ値の変更方法

レジスタ値の変更は、IOSが動作している通常のモードで行う方法と、IOSが起動していないROMモニタモードで行う方法の2通りがあります。

グローバルコンフィギュレーションモードでの変更

通常の運用中に設定値を変更する場合は、以下のコマンドを使用します。

access
Router# configure terminal
Router(config)# config-register 0x2102
Router(config)# exit
Router# copy running-config startup-config

このコマンドを実行しただけでは、現在の動作には影響を与えません。

設定を反映させるためには、機器を再起動(reload)させる必要があります。

ROMモニタ(ROMMON)モードでの変更

IOSが起動できない場合や、パスワードがわからずログインできない場合は、ROMモニタモードから変更を行います。

起動中に「Break」信号を送信することでROMモニタに移行できます。

access
rommon 1 > confreg 0x2142
rommon 2 > reset

ROMモニタでのコマンドは confreg となり、IOS上の config-register とは若干異なる点に留意してください。

活用シーン:パスワードリカバリの手順

コンフィギュレーションレジスタの知識が最も必要とされるのは、パスワードリカバリの場面です。

まず、機器を物理的に再起動し、起動の瞬間にBreak信号を送ってROMモニタモードに入ります。

次に、レジスタ値を 0x2142 に変更し、設定ファイルを読み込まずに起動させます。

これにより、パスワードが設定されていない初期状態でログインすることが可能になります。

ログイン後、以前の設定(startup-config)を動作メモリ(running-config)に手動でコピーします。

このとき、パスワードだけを新しく設定し直し、最後にレジスタ値を 0x2102 に戻して保存します。

この手順により、既存の設定を維持したまま、パスワードだけを初期化することが可能になります。

注意点とリスク管理

コンフィギュレーションレジスタの変更は、機器の根幹に関わる設定であるため、慎重に行う必要があります。

誤った値を設定してしまうと、機器が永久にブート・ループを繰り返したり、想定外のボーレートに切り替わってコンソール制御不能に陥ったりする恐れがあります。

特に、遠隔地にある機器に対してレジスタ値を変更し、再起動をかける作業には細心の注意を払ってください。

万が一、再起動後に通信ができなくなった場合、現地での物理的な作業が必要になるためです。

作業を行う前には、必ず現在の show version の結果をログとして保存しておくことを推奨します。

まとめ

コンフィギュレーションレジスタ(configレジスタ)は、Cisco機器の起動プロセスや設定ファイルの読み込み挙動を決定する重要なパラメータです。

通常時の 0x2102 と、トラブルシューティング時の 0x2142 という2つの代表的な値を覚えるだけでも、運用の幅は大きく広がります。

16進数の各ビットが持つ意味を正しく理解することで、なぜその数値が使われるのかという根本的な仕組みが見えてくるはずです。

コマンド一つで機器の挙動が劇的に変わるため、その影響範囲を十分に考慮しながら、安全なネットワーク管理に役立ててください。