OSPFでの動的ルーティングの設定手順（とルータの基本設定）

#目的
- 二つのネットワークを、OSPFでつなぐ

## ゴール
- 端末Aから、Router1、Router2、経由で、端末BにICMPリクエストを通す...
- なんですど端末Bが用意できなかったので、Router2までの疎通を目指します

#前提
- OS IOS
- Mac HighSieera (端末A)
- Cisco 892 ２台　（Router1,2）

#手順
## OSPFとは
- 概要
 - 動的ルーティングを行うプロトコルで、現在最も主流となっているルーティングの仕組みです。後日、ルーティングの仕組みの知識の部分はベット纏めます。今回は具体的な実装に注力します

- 参考
- > OSPFとは - ネットワークエンジニアとして
> http://www.infraexpert.com/study/ospfz2.html

- > 徹底攻略 Cisco CCENT/CCNA Routing&Seitchng
> インプレス(株式会社ソキウスジャパン・著 2017)

## 構成
- 今回は、以下のような構成でネットワークを構築します
- この中には、二つのネットワークがあります
- 端末A192.168.1.1から、Router2 192.168.2.254にPingが飛ぶことを確認します、それはつまり、
- 192.168.1.0の端末Aと、別のネットワークであるRouter2の属する192.168.2.0の間を、Router1がルーティングできることを確認します
- それはつまり、OSPFが、動的ルーティングによって、ルーティングテーブルを隣のルータと共有できたことを意味します
![スクリーンショット 2018-06-12 20.44.28.png](https://qiita-image-store.s3.amazonaws.com/0/57455/053a966a-c72f-7a17-fab4-1023dadcf25e.png)
- 接続
 - UTPケーブルは、ルーターとPCなので、クロスケーブルです。
 - 記載されていませんが、端末Aは、コンソールへのシリアルインターフェースでの接続が別にあります。本当は２本MacとRouterの間に接続がありますが、ここは、ネットワークだけ書いています。
 - Router1のFEポート（FastEathernetポート）は、０番をMac側 192.168.1.0側
 - 1番をRouter2側 192.168.2.0側　に接続します
 - Router1の１番ポートからでたケーブルが、Router2のFEポート１ 192.168.2.254に接続します




- 以下今回あんまり重要ではないですが一応UMLのソース

```txt:plantuml

@startuml
title ネットワークの構成
skinparam packageStyle node

package 端末A(Mac) as node1 {
class artifact1 as "ip 192.168.1.1"
}

package Router1 as node2 {
     class artifact2 as "FEポート0 ip 192.168.1.254"
     class artifact3 as "FEポート1 ip 192.168.2.1"
}

package Router2 as node3 {
class artifact4 as "FEポート0 ip 192.168.3.254"
class artifact5 as "FEポート1 ip 192.168.2.254"
}

node1 -- node2 : network 192.168.1.0
node2 -- node3 : network 192.168.2.0

hide members
hide circle
@enduml
```
## 機器の設置
- Macは、コンソールへのUSBシリアルインターフェースと、
- Router1と接続するLanのUSBインターフェース二つを繋ぎます
- 文字だけだとちょっと何言っているかわからないかもしれないので、画像で
![スクリーンショット 2018-06-12 20.26.29.png](https://qiita-image-store.s3.amazonaws.com/0/57455/0e36bda5-46a1-7964-890c-f231aebd65da.png)
こういう意味です。
右がLanとつなぐUSB、左がシリアルに繋がります
- Router側は、
 - 上がRouter1、下がRouter2とします
 - まずコンソールがMacのシリアルインターフェースに繋がります
 - FE Lanの0がMacに繋がり、
 - １が下のルータの１に繋がります（上記の配置図を参照） 

__ここで罠があります__

- 以下のようにつなぎたいような気がしますが、これは今回の手順では疎通できません
- ハマりました。

![スクリーンショット 2018-06-12 20.54.54.png](https://qiita-image-store.s3.amazonaws.com/0/57455/eb268ff9-c2ad-e6a2-6548-ec5b43e74205.png)

- いくつものポートがいっぱい並んでいるこちらのポートは、ルータに内蔵されているSwitchのポートです
- IPアドレスを、単純にポートに割り当てることができません。

- こっちに繋いでください。
 ![スクリーンショット 2018-06-12 23.05.48.png](https://qiita-image-store.s3.amazonaws.com/0/57455/6d379208-a2a5-5a96-c04e-4eb6876fa571.png)

- 機器によって、このポート番号名は異なっています
- ___ですので、FE0、１は、自分の設定したポートに読み替えてください___
- この機材の場合、(Cisco800)
 - __FE0をFE8番ポート、__
 - __FE1をGigabitEthernet0__
 に読み替えて設定していきます


## Macに固定IPアドレスを設定する
- システム環境設定→ネットワークを開き
- 左下のプラスボタンを押下しネットワークを追加します
- Apple USB Ethernetアダプタ　を選択しインターフェースを作ります（すでにLANをUSB接続している）

 ![スクリーンショット 2018-06-12 20.18.14.png](https://qiita-image-store.s3.amazonaws.com/0/57455/2809abe3-a3f7-f84b-d6c8-7303f536853f.png)

- そうすると、アダプタが追加されるので、IPv4を手入力に設定し、
 - 端末のIP を設定
 - サブネットマスク 
 - ゲートウェイルータ（ネットワークの出口となるルータ、つまり今回はRouter1）を設定し適用します
![スクリーンショット 2018-06-12 20.21.26.png](https://qiita-image-store.s3.amazonaws.com/0/57455/78f001f5-f91e-fbf5-499f-12d965e285b6.png)


いよいよ、ルータです。まずL2までの疎通を目指します

## Routerの基本設定
### 必要な設定
 - grobal configrationモードに移行し、ホスト名、パスワードを設定します

```
Router>enable
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname Router1
Router1(config)#enable password test
Router1(config)#end

```

- show runコマンドで、設定がされていることを確認します  

```
Router1#show run
Building configuration...

Current configuration : 1314 bytes
!
! Last configuration change at 11:35:12 UTC Tue Jun 12 2018
version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname Router1
!
boot-start-marker
boot-end-marker
!
!
enable password test
!
no aaa new-model
!
```

- パスワードが平文なのはよくないため、ハッシュをかけて暗号化します
- configration terminalモードで、`service password-encryption`コマンドを実行します

```
Router1#conf t
Router1(config)#service password-encryption
Router1(config)#end
Router1#
Jun 12 11:37:14.563: %SYS-5-CONFIG_I: Configured from console by console
Router1#show run
Building configuration...

Current configuration : 1319 bytes
!
! Last configuration change at 11:37:14 UTC Tue Jun 12 2018
version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname Router1
!
boot-start-marker
boot-end-marker
!
!
enable password 7 09584B1A0D
```

- パスワードが暗号化されていることを確認しました

### 次はIPアドレスを設定します
 - インターフェースの設定を行います
 - globalコンフィグレーションモードに移行し、さらにFastEthernetコンフィグレーションモードに移行します
 - この時、設定するFEポート番号を指定します

 ```
 Router1#conf t
 Enter configuration commands, one per line.  End with CNTL/Z.
 Router1(config)#int f 8
 Router1(config-if)#
 ```
 - ipアドレスを設定します

```
Router1(config-if)#ip address 192.168.1.254 255.255.255.0
Router1(config-if)#no shutdown
Router1(config-if)#end
```

- ip addressコマンドに、FE0側(FE8)に設定するIPアドレスとサブネットを設定します
- リンクが落ちてしまわないよう、no shutdownコマンドを実行します
- コンフィグレーションモードを出るため、endを叩きます


- 設定の確認
- `show ip interface brief`　コマンドで、L1、L2でリンクアップできているかどうかを確認します

```

Router1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
BRI0                       unassigned      YES unset  administratively down down
BRI0:1                     unassigned      YES unset  administratively down down
BRI0:2                     unassigned      YES unset  administratively down down
FastEthernet0              unassigned      YES unset  down                  down
FastEthernet1              unassigned      YES unset  down                  down
FastEthernet2              unassigned      YES unset  down                  down
FastEthernet3              unassigned      YES unset  down                  down
FastEthernet4              unassigned      YES unset  down                  down
FastEthernet5              unassigned      YES unset  down                  down
FastEthernet6              unassigned      YES unset  down                  down
FastEthernet7              unassigned      YES unset  down                  down
FastEthernet8              192.168.1.254   YES manual up                    up
```
- 見るべきポイントはFastEthernet8(FE0) のStatus とProtocolです
- StatusがUpになっていなければ、物理的な接続がうまくいっていません。Lanの接触不良等を確認してください
- ProtocolがUpになっていなければ、L2での疎通ができていません。ipの設定が正しく行われているか、`no shutdown`コマンドを忘れていないか、再実施してみてください
- （また、FE1(GigabitEthernet 0)の場合接続先ルータ側がまだ設定ができていない段階ではupになりません、反対側のルータのセットができてから、もう一度確認してみてください)

- 同じようにFE1(GigabitEthernet 0)ポート側もIPアドレスを設定します

```
Router1#conf t
Router1(config)#int GigabitEthernet 0
Router1(config-if)#ip address 192.168.2.1 255.255.255.0
Router1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
BRI0                       unassigned      YES unset  administratively down down
BRI0:1                     unassigned      YES unset  administratively down down
BRI0:2                     unassigned      YES unset  administratively down down
FastEthernet0              unassigned      YES unset  down                  down
FastEthernet1              unassigned      YES unset  down                  down
FastEthernet2              unassigned      YES unset  down                  down
FastEthernet3              unassigned      YES unset  down                  down
FastEthernet4              unassigned      YES unset  down                  down
FastEthernet5              unassigned      YES unset  down                  down
FastEthernet6              unassigned      YES unset  down                  down
FastEthernet7              unassigned      YES unset  down                  down
FastEthernet8              192.168.1.254   YES manual up                    up
GigabitEthernet0           192.168.2.1     YES manual up                    up
Vlan1                      unassigned      YES unset  down                  down
```

- FE1(gigabitFirstetrnet) がupにならない　
 - Router2が、まずRouterとして生きていなければ、繋がらない可能性があります、
 - 同じ設定をRouter2でやって、もう一度briefで確認してみてください
- 同様の設定をRouter2でも行います
 - Router2は、つなぐ端末Bがないため、FE1(この端末で言うFE8)にRouter1と繋がるだけになります
 - つなぐシリアルインターフェースが、一本しかなければ、今まで繋いでいたconsoleケーブルを差し替え、ターミナルで別ウインドウから接続し直してください
 - ルータの電源を落とすと設定は揮発しますが、コンソールを差し替えるだけなら、設定は消えません

### L2の疎通確認
- ここまでの接続がうまくできているか確認します
- show runコマンドで、設定したポートにIPが割り振られているか確認してください

```
interface FastEthernet8
 ip address 192.168.1.254 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0
 ip address 192.168.2.1 255.255.255.0
 duplex auto
 speed auto
```
- ICMP echoリクエストで疎通確認をします
- まず、端末A (MAC)から、pingでルータ１のIPを指定します

```
ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=0.966 ms
64 bytes from 192.168.1.254: icmp_seq=1 ttl=255 time=0.578 ms
64 bytes from 192.168.1.254: icmp_seq=2 ttl=255 time=0.551 ms
64 bytes from 192.168.1.254: icmp_seq=3 ttl=255 time=0.577 ms
```
- 疎通が確認できました、同じようにルータ１、２も確認します

- ルータ1から端末

```
Router1#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms
```

- ルータ１からルータ２

```
Router1#ping 192.168.2.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.254, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
```
- ルータのpingは、Successと表示されます

### では、この状態で端末AからRouter2へPingするとどうなるか？

```
ping 192.168.2.254
PING 192.168.2.254 (192.168.2.254): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
```

- この段階では接続できません

### ここで失敗する場合
- 事象１
 - show ip interface briefで、ステータスがupなのにipがunassignedになっている

```
FastEthernet0              unassigned      YES unset  up                    up
FastEthernet1              unassigned      YES unset  up                    up
``` 
- 事象２
 - ip address .....コマンド直後に以下のメッセージが出ている
 - IP addresses may not be configured on L2 links.
- 原因　
 - ポートがSwitchポートとなっており、直接IPを振ることが出来ない
- 対策
 - VLANをはる
 - 別のルータとしてのポートにつなぐ(それがFE8とGigabitEthernet0、機材によって異なる)

```
FastEthernet8              192.168.1.254   YES manual up                    up
GigabitEthernet0           192.168.2.1     YES manual up                    up
```

> Cisco１８１２ルータでスイッチインターフェースにＩＰアドレスを設定するには１
> http://iptakeset.blog24.fc2.com/blog-entry-24.html
> Ciscoルータの設定について質問です． 現在８
> https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11159328711



## ルーティングテーブルの設定
### OSPFの設定
- Router1にネットワークを設定
 - グローバルコンフィグレーションモードから、ルータ

```
Router1(config)#router ospf 1000
Router1(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router1(config-router)#network 192.168.2.0 0.0.0.255 area 0
```
- Router2にも同様にネットワークを設定

```
Router2(config)#router ospf 1000
Router2(config-router)#network 192.168.2.0 0.0.0.255 area 0
Router2(config-router)#
Jun 12 13:27:34.995: %OSPF-5-ADJCHG: Process 1000, Nbr 192.168.2.1 on FastEthernet8 from LOADING to FULL, Loading Done
```
- 確認


- show ip ospf neighbor　コマンドで、ネイバー関係の確立ができているか確認

```
Router1#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.2.254     1   FULL/BDR        00:00:35    192.168.2.254   GigabitEthernet0
Router1#
```
- 2.254、隣のRouter2とネイバー関係が確率できていることが確認できました

- show ip protocols　コマンドで、ルーティングプロトコルの設定を確認します

```
Router1#show ip protocols
*** IP Routing is NSF aware ***

Routing Protocol is "ospf 1000"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 192.168.2.1
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    192.168.1.0 0.0.0.255 area 0
    192.168.2.0 0.0.0.255 area 0
  Routing Information Sources:
    Gateway         Distance      Last Update
  Distance: (default is 110)
```

- ルーティングテーブルの確認
 - show ip routeコマンドでルーティングテーブルを確認できます

```
Router2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

O     192.168.1.0/24 [110/2] via 192.168.2.1, 00:08:02, FastEthernet8
      192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.2.0/24 is directly connected, FastEthernet8
L        192.168.2.254/32 is directly connected, FastEthernet8
```

- 説明がありますが、最初のOがOSPFで取得されたルーティングの情報を意味していますRouter2のルーティングテーブルに、192.168.1.0のネットワークのルーティングテーブルが受け渡されていることを確認できます

### L3の疎通確認
- 端末Aから、Router2への疎通を確認します
- 異なるネットワーク192.168.2.254へ、192.168.1.1からICMPリクエストを行います

```
ping 192.168.2.254
PING 192.168.2.254 (192.168.2.254): 56 data bytes
64 bytes from 192.168.2.254: icmp_seq=0 ttl=254 time=0.762 ms
64 bytes from 192.168.2.254: icmp_seq=1 ttl=254 time=0.643 ms
64 bytes from 192.168.2.254: icmp_seq=2 ttl=254 time=0.741 ms
64 bytes from 192.168.2.254: icmp_seq=3 ttl=254 time=0.815 ms
```

ちゃんとPINGが届いていることが確認できました。