Cisco C841M J の初期設定 IPv4でインターネットに接続するまで

## 初期化

中古で買った場合や、ユーザー名パスワードを設定しなかった場合初期化が必要です。
[Cisco Start ドキュメント - 設定を初期化する](https://community.cisco.com/t5/cisco-start-%e3%83%89%e3%82%ad%e3%83%a5%e3%83%a1%e3%83%b3%e3%83%88/%e8%a8%ad%e5%ae%9a%e3%82%92%e5%88%9d%e6%9c%9f%e5%8c%96%e3%81%99%e3%82%8b/ta-p/3292230/jump-to/first-unread-message)
に従い初期化しましょう。
1. 初期設定ファイルをダウンロードします。上記リンク先にダウンロードリンクがあります
2. USBフラッシュメモリにそれを保存します。それ以外には何も無いようにします
3. ルーターのUSBポートに接続します
4. ルーターのリセットボタンを楊枝などの細いもので5秒長押しします。USBフラッシュメモリがアクセス中点滅するようなタイプだったりするとわかりやすいです

## 環境説明

私の環境の場合NuroでONUのルーター機能をOFFにできないため、二重ルーター環境を構築します
下記に示すような環境を設定します

```
WAN
|----- ONU
|192.168.1.1/32
|
|192.168.1.0/24
|
|192.168.1.2/32
|----- C841MJ <---これを設定する
|192.168.100.1/32
|
|192.168.100.0/24
|
|PC等
```

PCをC841MJのLANポート0に、ONUからC841MJのLANポート4に接続したとして進めます

## ログイン

初期IPアドレスは 10.10.10.1 です。
ブラウザに入力するか、telnetで接続します。
初期User/Passwordは`cisco`/`cisco`です。

ブラウザでログインした場合、次のようにダイアログが表示されユーザーとパスワードの設定をします。
![2020-03-29 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/423a2483-d22d-5f4e-6ef1-0ca55533d5c8.png)

telnetでログインした場合、次のようにwarningが表示されます

![2020-03-31 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100313/889bdb4a-2213-856c-bf81-9697cebfe435.png)

```
configure terminal
(config)username <myuser> privilege 15 secret 0 <mypassword>
```
を入力してユーザーを設定します。

`privilege` の次の `15` という数字はそのユーザーの特権レベルを指定します。
0 ~ 15 があり、15が所謂 root のようなものです。
`secret` の次の `0` と言う指定は その次に続く文字列がクリアテキストのパスワードであることを指定しています。
MD5やSHA256で暗号化したシークレットを保存させることも出来ます。
詳しくは公式リファレンスを参照ください。
参考: [Cisco IOS セキュリティ コマンド リファレンス：コマンド S から Z、Cisco IOS XE Release 3SE（Catalyst 3850 スイッチ）](https://www.cisco.com/c/ja_jp/td/docs/sw/campuslanswt-access/cat3850swt/cr/003/sec-s1-xe-3se-3850-cr-book/sec-s1-xe-3se-3850-cr-book_chapter_0110.html)

ブラウザでもtelnetでもこのまま設定しないで閉じた場合、次のログインに cisco/cisco は使え無くなるので注意しましょう。
その場合、上記の初期化を行う必要があります。
特に telnet で接続した場合、そのまま放置しているとタイムアウトして切断されると次のログインに cisco/cisco は使えなくなり初期化が必要になります。
繰り返し初期化する場合は、初期設定ファイルには初期設定コマンドが書いてあるだけなのでこのあたりの設定まで、書き換えておくのも良いかもしれません。

ここまでで一旦ログアウトして、設定したアカウントでログイン出来ることを確認しておくと良いでしょう。

## 基本的な設定

```
configure teminal
(config)hostname C841MJ
(config)banner motd $
  #####   #####  #         #   #     #       # 
 #     # #     # #    #   ##   ##   ##       # 
 #       #     # #    #  # #   # # # #       # 
 #        #####  #    #    #   #  #  #       # 
 #       #     # #######   #   #     # #     # 
 #     # #     #      #    #   #     # #     # 
  #####   #####       #  ##### #     #  #####

$
(config)no banner login
(config)no banner exec
(config)line console 0
(config-line)logging synchronous
```

## 設定の保存

参考: [はじめての Cisco C841M ルータ： 初期設定](https://qiita.com/clerk67/items/2078594af373c25cf89f#%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)

```
# 現在の設定を起動時の設定にする
copy running-config startup-config
# 起動時の設定をUSBフラッシュメモリに保存
copy startup-config usbflash0:customer-config.202012
```

## インターフェース設定

```
configure terminal
(config)no ip domain lookup
(config)vlan 10
(config-vlan)name main
(config-vlan)exit
(config)interface vlan 10
# VLAN自身のIPアドレス このVLANのクライアントからtelnet/ssh接続する先
(config-if)ip address 192.168.100.1 255.255.255.0
(config-if)ip nat inside
(config-if)exit
# ここで今telnet接続しているPCをつないでいるLANポートの設定を変更すると接続が切れます。一旦は空いているポートだけ変更します
(config)interface GigabitEthernet 0/3
(config-if)switchport access vlan 10
Ctrl+Z
show vlan-switch id 10
configure terminal
(config)interface GigabitEthernet 0/4
# WAN側のIPアドレス 上位のルーター(ONU)配下になるように設定
(config-if)ip address 192.168.1.2 255.255.255.0
(config-if)ip nat outside
(config-if)no shutdown
```

## デフォルトゲートウェイの設定

参考: [ネットワークエンジニアとして - Static Routing](https://www.infraexpert.com/study/routing3.html)
> ip route network mask ip-address | interface [ distance ] [ permanent ]

```
(config) ip routing
(config) ip route 0.0.0.0 0.0.0.0 192.168.1.1
```


## NAT の設定

参考: [ネットワークエンジニアとして - PAT](https://www.infraexpert.com/study/natz2.html)
参考: [ネットワークエンジニアとして - Dynamic NAT](https://www.infraexpert.com/study/natz1.html)

```
(config)access-list 10 permit 192.168.100.0 /24
(config)ip nat inside source list 10 interface GigabitEthernet 0/4 overload
(config)interface GigabitEthernet 0/4
(config-if)ip nat outside
(config-if)exit
```

## DNS の設定

```
(config)ip dns server
(config)ip domain lookup
(config)ip name-server 192.168.1.1
```

## DHCP サーバーの設定

参考: [Cisco IOS DHCP サーバ設定](https://www.cisco.com/c/ja_jp/td/docs/ugas/as5200universalaccessservers/as5200universalaccessserv/rcs/001/iad-15-1s/iad-dhcp-svr-cfg.html)
参考: [ネットワークエンジニアとして - DHCP Server](https://www.infraexpert.com/study/dhcpz1.html)

```
show ip dhcp pool
(config)ip dhcp excluded-address 192.168.100.1 192.168.100.10
(config)ip dhcp pool default-pool
# ルーター自身がDHCPクライアントとして受け取った設定をDHCPサーバーの設定として流用します
(dhcp-config)import all
# DHCPで配布するIPアドレスの範囲
(dhcp-config)network 192.168.100.0 /24
# DHCPクライアントに知らせるデフォルトゲートウェイ
(dhcp-config)default-router 192.168.100.1
# DHCPクライアントに知らせるDNSサーバー
(dhcp-config)dns-server 192.168.1.1
# IPアドレスのリース期間 これは7日間 lease 0 2 とすれば2時間
(dhcp-config)lease 7
(dhcp-config)exit
```

## ルーターがインターネットに接続できるか確認

```
# これに失敗するならインターフェース設定を見直す
ping 192.168.1.1
# これに失敗するならデフォルトゲートウェイのルーティング設定を見直す
ping 172.217.25.100
# これに失敗するならDNSの設定を見直す
ping www.google.com

```

## NTP の設定

参考: [Qiita - 【負荷OK】Public NTPサーバの一覧](https://qiita.com/halpas/items/5a451ead0b13f6792595)
先にDNSの設定を済ませておきましょう

```
(config)clock timezone JST 9
(config)ntp server ntp.jst.mfeed.ad.jp
Translating "ntp.jst.mfeed.ad.jp"...domain server (192.168.1.1) [OK]
(config)exit
show clock detail
show ntp config
```

## vty の設定変更

参考: [ネットワークエンジニアとして - ACL](https://www.infraexpert.com/study/aclz8.html)
vtyとはtelnet/ssh接続できる仮想的なポートです
vtyは数字の小さいものから順番に接続されます
NATの設定の項目で作成したACLをvtyにも適用します
今回記述の設定を行うとデフォルト設定で10.10.10.0/25に許可している設定が上書きされます
この設定後、自分で設定した192.168.100.0/24からしか接続できなくなります。
設定が漏れていた場合再接続できなくなる恐れがあるため、直前に `copy running-config startup-config` を行います

```
copy running-config startup-config
show ip access-lists
configure terminal
# vty の0~4ポートにACL 10を適用します
(config)line vty 0 4
(config-line)access-class 10 in
```

## 正常に動作することを確認する

PCをLANポート0から外しLANポート3に接続し直します
192.168.100.0/24のIPアドレスが付与されていることを確認します

* Windows

```
> ipconfig
イーサネット アダプター イーサネット:
   IPv4 アドレス . . . . . . . . . . . .: 192.168.100.2
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.100.1
```

* Mac

```
$ ip address
en:
  inet 192.168.100.2/24 brd 192.168.100.255
```

各所にpingが通ること

```
# C841MJに
ping 192.168.100.1
# ONUに
ping 192.168.1.1
# インターネットに
ping 172.217.25.100
# 名前解決できること
ping www.google.com
```

```
telnet 192.168.100.1
```

ログインできたら、残りのLANポートにも設定適用して良いでしょう

```
configure terminal
(config)interface GigaitEthernet 0/0
(config-if)switchport access vlan 10
(config-if)exit
(config)interface GigaitEthernet 0/1
(config-if)switchport access vlan 10
(config-if)exit
(config)interface GigaitEthernet 0/2
(config-if)switchport access vlan 10
(config-if)end
show running-config interface GigabitEthernet 0/0
show running-config interface GigabitEthernet 0/1
show running-config interface GigabitEthernet 0/2
```

ブラウザの設定画面を使うことがあるならこちらもACLを変更します

```
(config)ip http access-class 10
```

使わないなら無効にしましょう

```
(config)no ip http server
```

# 参考
* [C841M IPv4 / PPPoE インターネット接続設定例](https://community.cisco.com/t5/cisco-start-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/c841m-ipv4-pppoe-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A%E4%BE%8B/ta-p/3162377)
* [Cisco IOS DHCP サーバ設定](https://www.cisco.com/c/ja_jp/td/docs/ugas/as5200universalaccessservers/as5200universalaccessserv/rcs/001/iad-15-1s/iad-dhcp-svr-cfg.html)
* [Cisco Start ドキュメント - 設定を初期化する](https://community.cisco.com/t5/cisco-start-%e3%83%89%e3%82%ad%e3%83%a5%e3%83%a1%e3%83%b3%e3%83%88/%e8%a8%ad%e5%ae%9a%e3%82%92%e5%88%9d%e6%9c%9f%e5%8c%96%e3%81%99%e3%82%8b/ta-p/3292230/jump-to/first-unread-message)
* [Qiita - はじめての Cisco C841M ルータ： 初期設定](https://qiita.com/clerk67/items/2078594af373c25cf89f#%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97)
* [Qiita - 【負荷OK】Public NTPサーバの一覧](https://qiita.com/halpas/items/5a451ead0b13f6792595)
* [ネットワークエンジニアとして - Static Routing](https://www.infraexpert.com/study/routing3.html)
* [ネットワークエンジニアとして - PAT](https://www.infraexpert.com/study/natz2.html)
* [ネットワークエンジニアとして - Dynamic NAT](https://www.infraexpert.com/study/natz1.html)
* [ネットワークエンジニアとして - DHCP Server](https://www.infraexpert.com/study/dhcpz1.html)
* [ネットワークエンジニアとして - ACL](https://www.infraexpert.com/study/aclz8.html)