Ciscoルータの初期設定

# Ciscoルータへのアクセス
機器へアクセスするにはいくつかの方法がある。

### コンソール接続
Ciscoルータを購入または初期化した際、IPアドレスやパスワードが設定されていないため、IPネットワークを介したアクセスは出来ない。コンソールポートを使って接続する必要がある。この時使用する専用のケーブルを**コンソールケーブル（またはロールオーバーケーブル**）といい、機器を購入すると付属してくる。

最近ではDB-9コネクタに対応するCOMポートを備えていないことが多いため、USB変換ケーブルを用いて接続する。USBコンソールポートが搭載されているものもあるが、専用のソフトウェアドライバーのインストールが必要になる。

::: note info
**・コンソールポートとは？？**
ルータやスイッチなどのネットワーク機器にPCを直接つないで管理者がアクセスするためのポート。「CONSOLE」と表示されている。
:::

TeraTermやPuTTｙなどを使用して接続を行う。「シリアル」を選択し、「COMポート番号」を選択する。

~~~ md
##Ciscoのプロンプト
Router>
~~~


### VTY（仮想端末回線）接続
ルータ内に用意される論理ポートで、TelnetやSSHのプロトコルを使用してルータを離れた場所から操作することができる。論理ポートなので物理的にケーブルで接続を行うことはない。
Telnet接続時もTeraTermを使用する。ルータ側にあらかじめIPアドレスやパスワードを設定しておくことが必要。

+ **Telnetによる接続**
離れた機器に接続しリモートからの操作を可能にするが、入力した情報が暗号化されずそのままの状態（平文:クリアテキスト）でリモート接続先に送信される。そのため、通信を盗聴されると、パスワードなどの重要な情報が漏洩する可能性がある。使用する前に、宛先のデバイスで事前設定が必要になる。

+ **SSHによる接続**
Telnetと同様に遠隔操作できるが、入力した情報を暗号化して送信するため、通信を盗聴されても情報漏洩の危険は低い。

### telnetコマンド
**書式:telnet [宛先IPアドレス|ホスト名]**
Telnet接続するためのコマンド

### sshコマンド
**書式:ssh [-l ユーザ名] [-v SSHバージョン] [-p 接続先ポート番号] [宛先IPアドレス|ホスト名]**
SSH接続するためのコマンド

# Ciscoルータの基本の操作

### ルータの起動直後の状態
購入直後や初期化して再起動した場合、コンソール接続でしか接続できない。設定が何も保存されていないため、Setupモード(対話式のモード)を使用するかどうかの選択が表示される。一般的にはSetupモードは使用されない。

~~~ md
--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: 
~~~

すでに設定が行われている場合は、Setupモードを使用するかどうかの選択は表示されない。


## Cisco IOS(Internetwork Operating System)
あらかじめ内蔵されている専用のソフトウェア。いくつかのモードがあり、実行できるコマンドも異なってくる。

| モード | プロンプト | 説明 |
|:-:|:-:|:-:|
| ユーザEXECモード  | >  | 機器の状態を確認したりするモード。確認できる項目が制限されている  |
| 特権EXECモード  | #  | 機器の設定や状態を確認できるモード。設定ファイルの操作やシステムの再起動なども行える  |
| グローバルコンフィギュレーションモード  | (config)#  | 機器全体にかかわる設定を行うモード  |
| インターフェイスコンフィギュレーションモード  | (config-if)#  | インターフェイスに関する設定を行うモード  |
| ラインコンフィギュレーションモード  | (config-line)#  | コンソールやVTYポートに関する設定を行うモード  |
| ルータコンフィギュレーションモード  | (config-router)#  | RIPやOSPFなどのルーティングに関する設定を行うモード  |

![キャプチャ8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3238179/57c6b254-42e4-2cee-3348-01f4a3186684.png)



### ユーザEXECモード（ユーザモード）
ルータにログインして最初に表示されるモード。コマンドの多くは制限されている。特権モードへは**enable**、ユーザモードに戻るには**disableコマンド**を使用する。

~~~ md
##特権モードへの移行
Router>enable
~~~

### 特権EXECモード（特権モード）
制限がなく詳細は情報を確認できるモード。設定の追加や変更を行うにはグローバルコンフィギュレーションモードに移る必要がある。

~~~ md
##ユーザーモードへの移行
Router#disable
~~~

### グローバルコンフィギュレーションモード
機器全体にかかわる設定を行うモードで、機器のホスト名やバナー（ログイン時に表示するメッセージ）などを設定する。
グローバルコンフィギュレーションモードに移行するには、特権EXECモードから**configure terminalコマンド**を実行する
移行後は各種コンフィギュレーションモードへ移ることができる。

~~~ md
##グローバルコンフィギュレーションモードに移行
Router#configure terminal
Router(config)#

##ホスト名の設定
Roter(config)#hostname R1
R1(config)#

##インターフェイスコンフィギュレーションモードに移行
R1(config)#interface fastethernet 0
R1(config-if)#

##ルータコンフィギュレーションモードに移行
R1(config-if)#router rip
R1(config-router)#

##ラインコンフィギュレーションモードに移行
R1(config-router)#line console 0
Ri(config-line)#

~~~

#### exitコマンド
1つだけ階層レベルの浅いモードに戻る。グローバルコンフィギュレーションモードで実行した場合は、特権EXECモードに戻る。
ユーザーモード、特権モードで使用した際はログアウト状態になる。

#### endコマンド
どのコンフィギュレーションモードからでも一回のコマンド実行で特権EXECモードまで戻ることができる
Ctrl＋CまたはCtrl＋Zでも同じ操作になる。

## 設定ファイルと保存場所
Cisco IOSは2つの設定ファイルによってデバイスの設定を管理している。

+ `running-config`ファイル
コマンドによって設定した内容が更新されるファイルで、設定した内容は自動的に保存される。揮発性のRAM(Random access memory)上に存在するため、電源を切ると内容はすべて消去される。
設定したパスワードを確認することができる。

+ `startup-config`ファイル
起動（スタート）時に読み込まれるファイル。不揮発性のNVRAM(Non-Volatile RAM)に保存されるので、電源を切っても内容は消えない。管理者が手動で保存する必要がある。
その際、**copyコマンド**を使用しファイルを移していく。


### showコマンド
**書式：show 確認したい項目**
ルータに設定されている様々な項目を確認することができる。


### copyコマンド
**書式：copy コピー元　コピー先**
その名の通りファイルをコピーするためのコマンド。設定ファイルを保存するために使用する。

~~~ md
Router#copy running-config startup-config
Destination filename [startup-config]? 
Building configuration...
[OK]
Router#show startup-config
Using 642 bytes
!
version 15.1
~~~


## ルータの初期化
初期化は以下の手順により行うことができる。

1. **NVRAM上のstartup-configを消去する**
**書式：erase startup-config**

2. **再起動する**
**書式:reload**

startup-configを消去するには特権EXECモードで行う必要がある。running-configを削除するコマンドは存在しない。

~~~ md
Router#erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
%SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram

Router#reload
Proceed with reload? [confirm]
~~~

## エラーメッセージ

+ **モードの間違いやスペル間違い**
入力するモードが間違っていたり、スペルを間違えたりした場合に表示される。
~~~ md
Router>show startup-config
             ^
% Invalid input detected at '^' marker.
~~~

+ **コマンドが不完全**

~~~ md
Router#copy
% Incomplete command.
~~~

+ **文字が短すぎる**

~~~ md
Router#s
% Ambiguous command: "s"
~~~

## 入力補助機能

### ヘルプ機能
**書式：？**
コマンドやオプションを忘れてしまった場合などに使用する。入力することで一覧を表示してくれる。コマンドの途中からでも実行が可能。
<cr>が表示されている場合、後ろに続くオプションを指定せずにコマンドが実行可能なことを表している。

~~~ md
Router#?
Exec commands:
  <1-99>      Session number to resume
  auto        Exec level Automation
  clear       Reset functions
  clock       Manage the system clock
  configure   Enter configuration mode
  connect     Open a terminal connection
  copy        Copy from one file to another
  debug       Debugging functions (see also 'undebug')
(省略)

##コマンドの途中で実行した場合
Router#con?
configure  connect  

##コマンドに続くオプション一覧を表示する
Router#configure ?
  terminal  Configure from the terminal
  <cr>
~~~

### 省略機能
コマンド入力時、全ての文字を入力しなくても一部の文字を入力することで実行できる。実行する際は、実行可能なコマンドやパラメータが1つに絞り込まれている必要がある。

### 補完機能
コマンドの最初の数文字を入力しTABキーを押下することで、後ろの部分を補完してくれる機能。省略機能と同じでコマンドの候補が1つに絞り込まれている必要があり、絞り込まれていない場合は改行のみになる。

### doコマンド
グローバルコンフィギュレーションモードは設定は可能だが、設定の確認は特権モードで行う必要がありエラーになってしまう。コマンドの前にdoを付けることで、これを解消し実行することができる。

~~~ md
##グローバルコンフィギュレーションモードでshowコマンドを実行した場合
Router(config)#show running-config
                ^
% Invalid input detected at '^' marker.
	
Router(config)#do show running-config
Building configuration...

Current configuration : 602 bytes
!
version 15.1
~~~
:::note warn
doコマンドを入れた状態でTAB補完、ヘルプ機能を使用することはできないので注意
:::


# ルータの基本設定
Ciscoルータの購入直後や初期化時には何も設定がされていないため、いくつかの初期設定が必要になる。

## ホスト名の設定

### hostnameコマンド
**書式：hostname ホスト名**
ホスト名（機器に設定できる名前）を設定できるコマンド。デフォルトではRouterという名前がついている。
コマンド実行時には、グローバルコンフィギュレーションモードで行う必要があり、以下のことに注意しなければならない

+ 63文字以下にする
+ 英語で始まり、英語または数字で終わる
+ 先頭と最後の文字の間には英語、数字、ハイフンのみ使用可能

~~~ md
Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname RT01
RT01(config)#
~~~

### noコマンド
コマンドの前につけることで、入力した設定を削除することができる。ただし、**設定したときと同じモードで実行しなれければならない**。

~~~ md
##特権モードでホスト名を元に戻すとエラーになる
RT01#
RT01#no hostname
        ^
% Invalid input detected at '^' marker.

##グローバルコンフィギュレーションモードでホスト名を元に戻す
RT01#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
RT01(config)#no hostname
Router(config)#
~~~

## 各種パスワードの設定

### コンソールパスワード
コンソールポート（ライン）に対するパスワードのこと。設定するにはラインコンフィギュレーションモードに移行する必要がある。コンソールポートは1つだけしかなく、ライン（ポート）番号は常に**0番**を指定する。

~~~ md
##特権モードへ移行
R1>enable 
##グローバルコンフィギュレーションモードへ移行
R1#configure terminal
##ラインコンフィギュレーションモードに移行
R1(config)#line console 0 
##パスワードを「cisco」に設定
R1(config-line)#password cisco
##パスワード認証の有効
R1(config-line)#login
##設定完了のため特権モードに戻る
R1(config-line)#end 
R1#
~~~


### VTYパスワード
設定手順は基本的にコンソールパスワードと一緒。Telnet接続するホストからライン番号（ポートにつけられた番号）は選べないため、使用するすべてのライン（ポート）に同じパスワードを設定する。

~~~ md
R1#configure terminal
##0~4(合計5つ)のラインコンフィギュレーションモードに移行
R1(config)#line vty 0 4
##パスワードを「ccna」に設定
Ri(config-line)#password ccna
##パスワード認証の有効
R1(config-line)#login
##設定完了のため特権モードに戻る
R1(config-line)#end 
R1#
~~~

::: note warn
**初期状態のTelnet接続時はパスワードはなく、「Password requied, but none set」メッセージが表示され、接続は拒否される**。
:::


### イネーブルパスワード
ユーザモードから特権モードへ移行するときに要求するパスワードで、グローバルコンフィギュレーションモードで設定する。

~~~ md
R1#configure terminal
##パスワードを「Cisco123」に設定
R1(config)#enble password Cisco123
##パスワードを「ccna」に設定し暗号化
R1(config)#enble secret Cisco123
R1(config)#exit
R1#
~~~

### ローカル認証
コンソールパスワードやVTYパスワードを設定した場合、ユーザー名も必要な設定にすることも出来る。
設定後ログインする際、以下のようにユーザ名も求められるようになる。

~~~ md
User Access Verification

Username: 
~~~



#### usernameコマンド
**書式：username ユーザ名 [privilege 特権レベル] password パスワード**
ローカルデータベースにユーザーを作成するコマンドで、グローバルコンフィギュレーションモードで行う必要がある。ユーザの特権レベルを0～15で指定することができ、レベルにより使用できるコマンドが異なってくる。
デフォルトは1で、ユーザモードは1、特権モードは15で設定されている。数字が大きくなればユーザモードより多くのコマンドを実行できる。

| 特権レベル | 説明 |
|:-:|:-:|
| 15  | 特権モードでセッションを開始する。特権モード全コマンドが使用可能  |
| 1  | ユーザモードでセッションを開始する。ユーザモードの全コマンドが使用可能  |
| 0  | ユーザモードでセッションを開始する。ユーザモードの一部のコマンドが使用可能  |

+ パスワードを暗号化して保存する場合
**書式：username ユーザ名 algorithm-type [md5 | sha256 | scrypt] secret [パスワード]**

```markdown:ユーザ名「admin」、MD5を用いてパスワード「Cisco」のローカルユーザを作成
(config)#username admin algorithm-type md5 secret Cisco
```

:::note info
強力な暗号化アルゴリズムとして、**sha256(PBKDF2)とscryptの使用**がCiscoにより推奨されている。
:::


:::note warn
**ユーザアカウント作成時の注意事項**
+ 1つのユーザ名に対して設定できるパスワードは1つのみで、後から入力したパスワードが有効
+ 1つのユーザ名に対して`password`コマンドまたは`secret`コマンドのどちらか一方しか使用できない。**後から入力したコマンドは受付不可**
:::




#### login localコマンド
作成したユーザアカウントのログインを認証するコマンド。ラインコンフィギュレーションモードで行う必要がある。


~~~ md
##hogeというユーザを追加しローカル認証を有効に設定する
Router(config)#username hoge password hoge01
Router(config)#username hoge2 privilege 15 password hogehoge
Router(config)#line console 0
Router(config-line)#login local

##設定内容を確認する
Router#show running-config
Building configuration...

Current configuration : 649 bytes
!
!
(省略)
username hoge password 0 hoge01
username hoge2 privilege 15 password 0 hogehoge
!
(省略)
line con 0
 login local
!
line aux 0
!
line vty 0 4
 login

~~~



## パスワードの暗号化
パスワードを設定する際に暗号化していないため、running-config上で設定したパスワードを確認することができセキュリティ上好ましくない。
それぞれのパスワードを保存する際に暗号化することによって、文字列を判別できないようすることができる

### enable secretコマンド
**書式：enable secret [5 | 8 | 9] [暗号化済みのパスワード]**
イネーブルパスワードを暗号化するためのコマンド。グローバルコンフィギュレーションモードで行う。
enable passwordコマンドと両方で設定した場合、enable secretコマンドを優先される。
オプションを実行することで、設定した暗号化済みのパスワードを他のスイッチやルータに設定することができる。

| オプション | 内容 |
|:-:|:-:|
| 0  | 平文（通常のパスワード設定）  |
| 5  | MD5で暗号化されている  |
| 8  | PBKDF2で暗号化されている  |
| 9  | SCRYPTで暗号化されている  |

### service password encryptionコマンド
**書式：service password encryption**
コンソールパスワード、VTYパスワードをパスワードを暗号化するコマンド。グローバルコンフィギュレーションモードで行う必要がある。usernameコマンドで設定したパスワードを暗号化し、設定済みの物だけでなく今後設定するパスワードも暗号化されて保存される。

::: note warn
イネーブルパスワードも設定することはできるが、暗号化の強度が弱いためenable secretコマンドで設定することが推奨されている。
:::

### 自動ログアウト設定
セキュリティの強度を高める設定の1つ。コンソール接続やVTY接続した際に何も操作しないでおくと、自動的にログアウトする機能がある

#### exec-timeoutコマンド
**書式：exec-timeout 分 秒**
自動ログアウトするまでの時間を設定するコマンド。ラインコンフィギュレーションモードで行う必要がある。秒は省略可能で、自動的に0が指定される。分を0にすると無効にできるが、セキュリティの強度を下げることになる。

~~~ md
##自動ログアウトの時間を5分30秒にする
Router(config-line)#exec-timeout 5 30
~~~