Ciscoルータの触り方超入門

## はじめに
STECH / 愛知工業大学 システム工学研究会 共同企画 Advent Calendar 2022 の9日目です。

この記事ではCiscoルータの基本的な操作方法と設定の一連の流れについて説明します。

私は2022年の大学2年の夏季休暇中に初めてルータというものを触ってみました。この記事はそのときのアウトプットとしてルータって何？という人からルータを初めて触ってみるという人を対象者としています。そのため詳しい設定方法については取り扱わず、一部の基本的な操作方法のみ取り扱っています。
人から設定ファイル見てみたらいいよ〜と言われたりするのですが設定ファイル…どうやって見るんだ…そもそもこの黒い箱(ルータ)みたいなのはどうやって扱えばいいんだ…と思うことが多々あるので、そんな人のためになるべく丁寧に上から読んで一緒にコマンドを実行して理解していけるように記事を書く際は意識しました。

## この記事の対象者

- ルータって何？という人
- ルータを初めて触ってみる人

## 今回使用したもの

- MacBook Air (M1, 2020) macOS Big Sur ver11.2.3
- Cisco891Fルータ
- ルータ付属の電源ケーブル
- コンソールケーブル
- ANKER変換アダプタ
- シスコ技術者認定教科書 CCNA 完全合格テキスト&問題集[対応試験]200-301 
https://amzn.asia/d/1N8oyko
(書籍に関してはなくても大丈夫ですが、あるとより理解が深まります。本記事でP.XXを参照と書かれている部分はこの本の該当ページを参照するとより分かりやすいと思います。)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2848296/280c6298-70c0-ac0c-cc2b-e6726228a6b6.jpeg" width=70%>

## ルータとは
私たちは日々インターネットを使用しています。
一般的な家庭とインターネットのネットワークは異なりますが、私たちがインターネット上のサイトを閲覧したり、メールを送信したりする際にはPCが所属するネットワークとは異なるネットワークに通信していることになります。こうした異なるネットワーク間で橋渡しを行うには中継役となる機器が必要であり、その役目をになっているのが**ルータ**ということになります。

## ルータを使う準備をする
まずはCiscoルータを扱う準備をしましょう。
具体的にはCiscoルータとPCをコンソールケーブルで繋ぎます。
電源ケーブルをコンセントに挿し、反対側の端子をPOEと書かれたところに挿します。次にコンソールケーブルのUSB端子をANKER変換アダプタを用いてPCと接続し、反対側の端子を水色のCONSOLEと書かれたところに挿します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2848296/bbf56e63-7f05-4a45-05fa-82c0f23d7f04.jpeg" width=70%>

## screenコマンドを用いてルータの情報をPCに表示
ケーブルで機器を繋いだらルータの電源をつけます。そして、ルータの情報をPCに表示するため、PCでターミナルを起動し以下のコマンドを打ちます。
```
screen /dev/tty.usbserial-AB0LUEJS
```
`screen /dev/tty.`まで打ってtab補完します。するとルータが起動してくるので初期状態になるまでしばらく待ちます。

#### Ciscoルータへのアクセス(P.86参照)
Ciscorルータにアクセスするにはコンソール接続、VTY接続、AUX接続のいずれかでアクセスが可能です。しかし、VTY接続とAUX接続はルータにパスワードが設定されている必要があるため購入直後や初期化時のルータではコンソール接続で設定をします。

## ルータの初期状態(P.92~参照)
Ciscoルータはコマンドラインで操作します。
まだルータには何も設定がされて保存されていないため、以下のように最初にSetupモードを使用するかどうか聞かれます。
```
            --- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
```
しかし、一般には設定はCLIコマンドを使用して行うため、今回は`no`と打ってEnterキーを押します。すると以下のように表示されると思います。
```
            --- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]: no
Press RETURN to get started!
```
これが表示されたあとでEnterキーを押すとユーザEXECモードという最初のモードに移行します。
```
Router>
```
## Cisco IOS のモード(P.95参照)
Ciscoルータを扱う上で大事なことが**さまざまなモードを行き来して設定等を行う**ということです。
このモードを行き来するという概念が大事で正しいコマンドを打っていても、モードが適切でないために設定が上手くできないといったことがあるので、自分が今どのモードにいるかというのは常に分かっておく必要があります。

モードは他にもありますがとりあえず最初は以下の３つのモードを覚えておくと良いと思います。
| モード名| プロンプト | 説明 |
|:-:|:-:|:-:|
| ユーザEXECモード  | ＞ | 機器のステータスを確認できるモード。あまり使わない。 |
| 特権EXECモード | # | 特に制限なく機器の動作やステータスを確認できるモード。現在の設定内容をみたりするときはこのモード。 |
|　グローバルコンフィギュレーションモード　|　(config)# |　機器全体にかかわる設定を行うモード。よく使う。設定をするときは大体このモード。|

## モードを移行してみる
それではモードを移行してみましょう。
ユーザEXECモードで`enable`コマンドを実行してみてください。
```
Router>enable
```
するとプロンプトが`#`に変わり特権EXECモードに入ります。
```
Router#
```
次に特権EXECモードで`configure terminal`コマンドを実行してみてください。
```
Router#configure terminal
```
するとプロンプトが`(config)#`に変わりグローバルコンフィギュレーションモードに入ります。
```
Router(config)#
```
グローバルコンフィギュレーションモードで`exit`コマンドを実行すると特権EXECモードに戻ることができ、さらに特権EXECモードで`disable`コマンドを実行することでユーザEXECモードに戻ることができます。また`end`コマンドを実行するとどのモードからでも特権EXECモードに戻ることができます。
```
Router(config)#exit
Router#disable
Router>
Router>enable
Router#configure terminal
Router(config)#end
Router#
```
モード移行は書籍のP.98を参照すると分かりやすいです。モード移行のコマンド等を忘れたときはよく見てます。

#### モードの間違いやスペルの間違い
入力するモードが間違っていたり、スペルを間違えたりした際は`% Invalid input detected at '^'maker.`というメッセージが表示されます。
```
Router>configure terminal 　　<-コマンドを実行するモードが違う
          ^
% Invalid input detected at '^'maker.
```
```
Router#configure tarminal 　　<-スペルミス
                  ^
% Invalid input detected at '^'maker.
```
## 設定をしてみる

### ホスト名の設定
では実際にCiscoルータに設定をしてみましょう。
Ciscoルータにはホスト名といって機器に名前をつけることができます。ホスト名を設定するにはグローバルコンフィギュレーションモードで`hostname`コマンドを実行します。
```
Router#configure terminal
Router(config)#hostname Neko
Neko(config)#
```
今はホスト名をNekoとしたのでプロンプトの前のホスト名が`Router`から`Neko`に変更されていることが分かります。(以降はホスト名をNekoと設定したものとしています。)

#### 設定の削除
設定を削除するときには、設定コマンドの前に`no`をつけて実行することで設定を削除することができます。(例:Router(config)#no hostname)
ただし、設定した時と同じモードで実行しなければエラーとなってしまうので注意が必要です。

### コンソールパスワードの設定
コンソールパスワードとはコンソールケーブルを用いてコンソール接続した際、ユーザEXECモードに移行するために聞かれるパスワードのことです。

#### ラインコンフィギュレーションモードに移行
上記には示しませんでしたが、コンソールパスワードを設定するには、ラインコンフィギュレーションモードというモードに移行します。ラインコンフィギュレーションモードに移行するにはグローバルコンフィギュレーションモードで`line console 0`コマンドを実行します。
```
Neko(config)#line console 0
Neko(config-line)#
```
ラインコンフィギュレーションモードに移行するとプロンプトは`(config-line)#`に変わります。

#### パスワードを設定する
パスワードを設定するには、ラインコンフィギュレーションモードで`password`コマンドを実行します。
```
Neko(config-line)#password cisco
```
なお、コンソールパスワードに限らず、全てのパスワードは大文字と小文字が区別されます。

#### 認証を有効化する
パスワードは設定したらパスワード認証を有効化しなければなりません。
パスワード認証を有効化するにはラインコンフィギュレーションモードで`login`コマンドを実行します。
```
Neko(config-line)#login
```
`login`コマンドを実行しないと、パスワードを設定したとしてもログイン時にパスワードが問われずにログインできてしまうので注意が必要です。

### イネーブルパスワードの設定
イネーブルパスワードとはユーザEXECモードから特権EXECモードに移行するために聞かれるパスワードのことです。
イネーブルパスワードを設定するにはグローバルコンフィギュレーションモードで`enable password`コマンドを実行します。
```
Neko(config)#enable password test
```
これでコンソールパスワードとイネーブルパスワードの設定ができました。

## 設定を確認してみる 

設定ができたら正しく設定されているか確認してみましょう。
`end`コマンドで特権EXECモードに移行して`exit`コマンドを実行してみてください。ルータのログイン状態になると思います。Enterキーを押してパスワードが聞かれればOKです。これがコンソールパスワードです。
先ほど設定したコンソールパスワード:ciscoを入力します。ログインできたらユーザEXECモードに移行できます。
イネーブルパスワードの設定も確認します。ユーザEXECモードで`enable`コマンドを実行します。するとまたパスワードが聞かれると思います。これがイネーブルパスワードです。イネーブルパスワードはtestを設定したのでイネーブルパスワード:test入力します。特権EXECモードに移行できればOKです。
これで設定したものが正しく設定されているか確認することができました。

```
Password:
Password:cisco
Neko>
Neko>enable
Password:test
Neko#
```
## 設定ファイルを見る
パスワードの場合はパスワードを打ってみて確認すれば良いのですが、通常の設定の確認は設定ファイルを見て設定が追加されているのを確認します。
ルータでは設定を行うと設定ファイルというものにその内容が書き込まれます。主要な設定ファイルとして`startup-config`と`running-config`があります。

設定ファイルを見るには特権EXECモードで`show`コマンドを実行します。以下のコマンドを実行して設定ファイルの`running-config`を見てみます。
```
Neko#show running-config
```
上記のコマンドを実行すると以下のような設定ファイルが表示されます。
```
Neko#show running-config
(省略)
boot-start-maker
boot-end-maker
!
enable password test
!
no aaa new-model
!
(省略)
!
line con 0
password cisco
login
line aux 0
line vty 0 4
!
end
```
設定ファイルを見ると`enable password test`とあり、line con 0 の部分には`password cisco`となっているため設定ファイルにも設定が書き込まれていることが分かります。

## 設定を保存する
:::note warn
**ルータは設定をしたら設定ファイルに設定を保存しなければなりません。設定を保存しないと今まで設定したものが消えて努力が水の泡になってしまいます。**
:::

### 設定保存はコピーランスタで覚える
設定を保存するときは特権EXECモードで`copy`コマンドを実行します。
```
Neko#copy running-config startup-config
```
このコマンドによって`running-config`の内容が`startup-config`にコピーされ設定が保存されます。コピーコマンドの**copy**、running-configの**run**、startup-configの**start**でコピーランスタです。
これでCiscoルータの設定の一連の流れができました。

### running-configとstartup-config(P.99参照)
| ファイル名 | 説明 | 保存場所 |
|:-:|:-:|:-:|
| startup-config | 起動時に読み込まれるファイル  | NVRAM |
| running-config  | 現在の設定内容が書き込まれているファイル  | RAM  |

NVRAMは読み書きか可能で、電源をオフにしても内容は消えない。一方でRAMは読み書きが可能だが、電源をオフにすると内容が消えてしまう。なぜ設定ファイルを別の設定ファイルに保存しなければならないのか。それは設定時に書き込まれるrunning-configは電源を落とすとその内容が消えてしまうので電源を落としても消えないstartup-configに設定を保存する必要があるからです。

## screenコマンドを終了する
作業が終わったらscreenコマンドを終了しましょう。
Ctrl＋A(Ctrlを押しながらAを押す) ー＞ kのキーを押す 
kを押すと`Really kill this window [y/n]`と聞かれるのでyのキーを押して終了する。
あとは電源を切って片付けをします。

## 最後に
この記事ではCiscoルータの基本的な操作方法と設定の一連の流れを説明しました。
ルータを起動してコマンドラインでモードを行き来することにより設定を追加する。追加した設定を設定ファイルの`running-config`から`startup-config`に保存する。というのが設定の一連の流れです。
コピーランスタは忘れずに。