Ciscoルータ設定作業めも
Ciscoルータをもつ友人宅で勉強会を行ってきました。Ciscoルータへ直接設定を行うのは某インターンで経験したりしていたのですが、結構忘れていたので復習の意味を込めてめもを残しておきます。
作業環境
用意した製品・道具類
・Ciscoルータ 1812-J
・LANケーブル
・コンソールケーブル(D-Sub)
・D-Sub⇔USBシリアル変換ケーブル
・エンドホスト用ノートPC2台
・コンソール用ノートPC1台(Windows、Tera Termインストール済み)
Ciscoルータ 1812-Jについて
仕様書上、このルータは以下のポートを持っていました。
・WANポート(fa0,fa1)
・LANスイッチポート(fa2~fa9)
ここで、faはFast Ethernetの略称です。
ルータ(及びL3スイッチ内臓ルータ)の構成は以下のように考えています。図ではVLANを分けて描きましたが、今回は全てのLANスイッチポートがVLAN1に属しています。SVIはVLAN(内部スイッチ)と内部ルータのインタフェースです。Ciscoの説明にあったWANポートが所謂ルーテッドポート、LANスイッチポートが所謂スイッチポートに当たる物と捉えています。また、今回はVLANの設定は省略して次回にまわそうと考えているので、スイッチポートは使用せず、エンドホスト側も、直接ポートにIPアドレスを振れるルーテッドポートを使用しました(詳細はネットワーク構成へ)。
ネットワーク構成
ルーティングを確認するため、最低限のネットワークとして以下のようなトポロジを考えました。エンドホストはそれぞれE1,E2であり、ルータはそれぞれR1,R2です。上述したように、便宜上今回はLAN側もルーテッドポートを使用しています(図中の※印インタフェース)。
作業内容
基本的なコマンドや仕様の把握と、静的ルート設定、簡単な動的ルート設定を行いました。
ルータ設定のための接続
Cisco機器への接続方法は主にコンソール接続、VTY接続があります。以下のにその手法を記述します。物理的な接続を行った後はTera Term等を用いてIOSへアクセスします。
コンソール接続
ルータの初期設定がすむまではコンソール接続しかできません。従って今回はコンソール接続を行います。コンソール接続では、設定したいルータのコンソールポートとPCをコンソールケーブルを介して接続します。今回コンソール用端末側にD-Subポートがなかったため、D-Sub⇔USB変換ケーブルを介して接続しました。
VTY(仮想端末)接続
初期設定が済んでから使用可能な接続方法で、ネットワークを介してtelnetやsshでリモートログインして設定を行います。Cisco機器とコンソール用端末がネットワークを介して接続されていれば物理的な接続は完了です。ちなみにエンドホストからCisco機器へのtelnet接続だけでなく、Cisco機器からCisco機器へのtelnet接続も可能です。
Cisco IOSとモード切り替え
Cisco製品上では、おおよそCisco IOSというCLIベースのOSが動作しており、このソフトウェアを介して機器への設定を行います。またIOS操作時は、いくつかのモードを切り替えながら設定を行っていきます。セキュリティの観点からアクセスレベルが設けてあり、主に以下のモードがあります。※ルータ名はRouterにしています。
モード | 概要 |
ユーザモード (ユーザEXEC) |
接続時の最初の状態。機器の一部の情報を見ることが出来ます。 端末での表示は以下のようにホスト名を”>”で区切るようになっています。 |
特権モード (特権EXEC) |
ユーザモードからenableコマンドで権限者のみが移行できるモード。機器の全ての情報の参照やデバッグ、ツール(pingやtracerouteなど)の実行ができます。disableコマンドでユーザモードに戻れます。 端末ではホスト名に続き"#"が続きます。 |
グローバルコンフィギュレーションモード |
特権モードからconfigure terminalコマンドで移行できるモードです。機器全体に関わる様々な設定(機器名やパスワードの設定など)が出来ます。exitコマンドで特権モードへ戻れます。端末では以下のように表示されます。 |
特定コンフィギュレーションモード |
グローバルコンフィギュレーションから移行できるモードです。機器の特定の箇所に設定を行うためのモードです。特定コンフィギュレーションモードは、厳密にはインタフェースコンフィギュレーションモードやルータコンフィギュレーションモードなど、特定の箇所に応じたモードが存在します。exitでグローバルコンフィギュレーションモードに戻れます。 例えばインタフェースコンフィギュレーションモード時は以下のように表示されます。 |
コマンドの補完と省略
各種コマンドは、コマンドが一意に判別できる文字列まで入力し終えたら、[tab]キーで補完することができます。また、補完可能な文字列だけでそのコマンドの実行も出来ます。例えば、enableコマンドはenでも実行可能ですしconfigure terminalコマンドは、conf tでも実行可能です。
I/F(ルーテッドポート)へのIPアドレス割り当て
まず、グローバルコンフィギュレーションモードにおいて、設定を行いたいインタフェースを指定してインタフェースコンフィギュレーションモードへ移行します。移行のためのコマンドは、interface [規格] [インタフェースの番号]となります。例えば、今回の場合、R2のFast Ethernetの1番目のポートに設定を行いたいため、以下のように入力します。fastethernetはfaと省略することも可能です。
※ちなみに、インタフェース番号の表記としてn/0/nというものがあります。これはスタック可能なボックス型スイッチにおいて適用されるもので、最初の数字がスタック位置、次の番号は0固定、最後の番号がインタフェースの位置となります。
次にインタフェースにIPアドレスを割り当てます。今回は192.168.3.254/24を割り当てたいので、ip addressコマンドを用いて以下のように行いました。今回用いたip addressコマンドの形式はip address [IPアドレス] [サブネットマスク]となっています。
最後に、I/Fを有効にするために、no shutdownコマンドでたちあげます。スイッチングポートはデフォルトでupですが、ルーテッドポートはデフォルトでdownなのでたちあげます。
これでI/FへのIPアドレス割り当てと有効化が完了しました。今回は各ルータにおいて4つのI/Fに設定が必要なので同様に行いました。
ルータからのツール実行
ルータに実装されているツールを特権モードから実行できます。例えばpingをエンドホストへ向けて送ってみた結果を以下に示します。
"!"と表示されているのはecho replyが帰ってきてpingが成立したものです。ここでは5回中5回のpingに成功しています。逆にecho requestを送ったもののタイムアウト時間までにecho replyが帰ってこなければ".(ピリオド)"が表示されるようです。
※ちなみにコマンドの強制中止は[Ctrl]+[Shift]+[6]で行えるようです。
また、pingだけ打つと拡張pingとなり様々なオプションを指定できます。
tracerouteも実行可能。(1ホップしかないのでトレースの意味薄いですが実行できるという意味で掲載)
Interfaceの状態について
Interfaceの情報を表示すると、[インタフェース名] is upなど記載があります。これはInterfaceが搬送波を検出できる状態にあるか(レイヤ1接続が有効か)どうかを表しています。upの場合できる、downの場合できない、administratively downの場合設定上できなくなっていることを表します。
ラインプロトコルについて
Cisco機は定期的にキープアライブ信号のやり取りをしているようで、隣接ノードまで信号が届かなくなったり、届くようになったりするとその旨が端末上に表示されます。すなわち、論理的な接続の有効性がLine protocl is (up/down)の表記でわかるようになっています。論理的な接続が切れる原因はリンクの問題、ノードの問題に区別されます。
例えば意図的に隣接ノードの電源を落とすと下記のようなメッセージが表示されます。
再び立ち上げると下記のようなメッセージが表示され論理的な接続が回復したことがわかります。
※ちなみに
隣接ノードのMac bookをスリープモードにすると以下のようにLine protocolのdownとupが瞬時に表示されました。以下がその様子です。
これはスリープ中も通信ができるようにするために論理的な接続を有効にしているようで、恐らくMacのPower Nap機能によるものかと推測しました。ちなみにpingは通りませんでしたので、一部の通信のみ有効なのでしょうか...。
ホスト名の変更
今までルータにデフォルト名(Router)を用いていましたが、2台あってややこしいのでホスト名を変更します。ホスト名変更はグローバルコンフィギュレーションモードでhostname [ホスト名]を実行することで可能です。
各I/Fの情報表示
各I/Fに対するIPアドレスの割り当て状況や接続性をリスト表示するには例えばshow ip interface briefコマンドがあります。
BRIはISDN用のI/Fです。
DuplexやVLANなどのステータスを確認したい場合はshow interface statusで行えます。
また、各I/Fごとの詳細を見たい場合はshow interfaceで確認できます(実行結果略)。
スイッチポートへのIPアドレス割り当て
スイッチポートはルーテッドポートと異なりL2相当の役割を果たすためIPアドレスをそのまま割り当てることは出来ません。以下は割り当てを試みた場合のエラーメッセージ。
しかしスイッチポートにVLANを割り当て、VLANにIPアドレスを割り振ることで疑似的にスイッチポートがIPアドレスを持つように振る舞わせることができるはずなので、次回実際に行おうと思います。
設定した内容の保存
設定の内容は、不揮発性RAM(NVRAM)に書き込まなければ次回の起動時にも反映されません。従って設定を保存するには、copyコマンドを使ってNVRAMへ設定の書き込みを行います。
running-configはメモリ上にあり、startup-configはNVRAMにあります。copyコマンドは第一引数の内容を第二引数へコピーするものです。copy run startという省略形や、write memory、wrでも同じことが実行されるようです。
静的ルーティング
エンドホスト、ルータ共にI/Fに静的IPアドレスの割り当てを行いました。各エンド間で通信を行うためには、各ノードのルーティング設定を行う必要があります。今回はまず静的ルートを記述します。R2でグローバルコンフィギュレーションモードに入った後、静的ルートを以下のように記述します。
ip route [宛先ネットワークアドレス][宛先サブネット][隣接ノードのIPアドレス]という記述で静的ルートを追加できます。
機器のルーティングテーブルはshow ip routeコマンドで見ることが出来ます。
うまく反映されたようです。ちなみにSは静的ルート、Cは直接機器に設定してある接続を意味しています。他にもRIPで動的に割り当てられたならばR、OSPFならばOなどと記載されます。
この設定をR1にも行います。また、各エンドホストのデフォルトルートをそれぞれのルータに設定します。
その後、うまく静的ルートが働いているかを確認するためにE2からE1へpingを飛ばしてみました。
ちゃんと静的ルートでエンド間の通信ができました。traceroute実行結果も以下のように意図したものとなりました。
※ルートの消し方
動的ルーティングも試したいので、設定した静的ルートを手動で消します。
静的ルート追加時のコマンドにnoをつければ可能です。以下は実際に消えたことの確認です。
動的ルーティング(OSPF)
リンクステート型ルーティングプロトコルであるOSPFで動的にルートを生成したいと思います。R1では以下のようなコマンドを打ちました(友人がワイルドカードマスクをサブネットマスクと勘違いして入力したらしいので次回があれば修正して実験しなおしたものに画像を差し替え予定です。今回のトポロジが幸いし挙動としては変わりません)。
router ospf [process id]で適当なプロセスを走らせます(1つのルータで複数のOSPFを走らせることができますが非推奨です)。
network [ネットワーク/IPアドレス] [ワイルドカードマスク] area [エリアID]で該当するI/Fにエリアを割り当てます。OSPFではリンクステートをエリアごとに集約します。また、原則としてバックボーンエリア(area 0)が必要ですので、今回これを割り当てています。ワイルドカードマスクは、一回のnetworkコマンドで複数のI/Fにエリアを割り当てるために指定するもので、2進数で”0”の部分は合致するかどうか検証し”1”の部分は検証しないと判断されます。従って上記のように192.168.1.0も192.168.2.0もどちらもエリア0に所属させたい場合network 192.168.0.0 0.0.255.255の方が効率的かつワイルドカードマスクの観点で正確と思われます。
R2でも同様の設定を行いルーティングテーブルを見てみる。
ちゃんとOSPFによりルートが追加されています。pingでの通信疎通テストは省略。
イベントの表示
試しにOSPFによるイベントを表示してみます。debugコマンドで指定したイベントを表示することができるようになります。
OSPFのHelloパケットのやりとりが観測されました。デバッグを停止するにはno debu allコマンドをつかいます。
終わりに
今回は簡単なCiscoルータの操作を行いました。今後友人宅を訪問する際に、友人が気乗りすればまた追加で実機を操作してそのめもを残すかもしれません。