VyOS、Si-R、IXでOSFP構築

VyOS・富士通 Si-R G200・NEC IX2105を組み合わせて、簡単なOSPFを構築しました。

# ネットワーク構成
ネットワークは以下の図のように構築します。エリア分割は行いません。
![ネットワーク構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524454/ac3f599a-d537-9c2d-79ff-82e9d7ed6688.png "ネットワーク構成")

# 構築
各ルーターの設定をしていきます。

## VyOS
```:VyOS
set interfaces ethernet eth0 address '10.0.1.1/24'
set interfaces ethernet eth1 address '10.0.2.1/24'
set interfaces loopback lo address '10.2.10.1/32'
set protocols ospf area 0 network '10.0.1.0/24'
set protocols ospf area 0 network '10.0.2.0/24'
set protocols ospf area 0 network '10.2.10.1/32'
```
以下のコマンドでOSPFを使用したいインターフェースを指定します。
注意点としては、上のコンフィグで言うとインターフェースの指定には10.0.0.0/8のように、複数のインターフェースを包括するような設定はできません。
`set protocols ospf area <エリアID> network <X.X.X.X/X>`

## IX2105
```:IX2105
ip router ospf 1
  passive-interface GigaEthernet1.0
  area 0
  network 10.0.0.0/16 area 0
  network Loopback0.0 area 0
!
interface GigaEthernet0.0
  ip address 10.0.2.2/24
  no shutdown
!
interface GigaEthernet1.0
  ip address 10.0.3.1/24
  no shutdown
!
interface Loopback0.0
  ip address 10.3.10.1/32
!
```
以下のコマンドででOSPFの設定モードに入ります。
`ip router ospf <プロセスID>`

以下のコマンドでOSPFを使用するインターフェースを指定します。インターフェースの指定にはIPアドレス・インターフェース名が使えます。IPアドレスで指定する場合は`10.0.0.0/16`のように`GE0.0`と`GE1.0`を一括で指定できます。
`network <X.X.X.X/X | インターフェース名> area <エリアID>`

以下のコマンドでOSPFの経路として広告したいが、OSPFパッケットの送受信はしたくないインターフェースをパッシブインターフェースとして設定します。
`passive-interface <インターフェース名>`

## Si-R
```:Si-R
ether 1 1 vlan untag 1
ether 2 1 vlan untag 2
lan 0 ip address 10.0.1.2/24 3
lan 0 ip ospf use on 0
lan 0 vlan 1
lan 1 ip address 10.0.4.1/24 3
lan 1 ip ospf use on 0
lan 1 ip ospf passive on
lan 1 vlan 2
ospf ip area 0 id 0.0.0.0
loopback ip address 0 10.1.10.1
loopback ip ospf use on 0
```
まず以下のコマンドで使用するエリアIDを定義します。エリアIDは入力時はVyOSやIXのように10進数表記で設定できますが、X.X.X.Xの形式で登録されます。
`ospf ip area <エリア定義番号> id <エリアID>`
以下のコマンドでOSPFを使用するlanを設定します。VyOSやIXとは違い各LAN情報の設定コマンドに含まれています。最後の引数は「エリアID」ではなく上で設定した「エリア定義番号」になります。
`lan <lan定義番号> ip ospf use on <エリア定義番号>`
パッシブインターフェースの設定は以下のコマンドです。
`lan <lan定義番号> ip ospf passive on`

# 動作確認
一通り設定が完了したら動作確認を行っていきます。
## ルーティングテーブル
各ルーターのルーティングテーブルは以下のようになりました。ルートが認識できていることが確認できます。いずれの機種も`show ip route`で表示できます。
```:VyOSルーティングテーブル
O   10.0.1.0/24 [110/1] is directly connected, eth0, weight 1, 02:54:13
C>* 10.0.1.0/24 is directly connected, eth0, 03:53:34
O   10.0.2.0/24 [110/1] is directly connected, eth1, weight 1, 02:54:13
C>* 10.0.2.0/24 is directly connected, eth1, 03:53:35
O>* 10.0.3.0/24 [110/2] via 10.0.2.2, eth1, weight 1, 01:01:40
O>* 10.0.4.0/24 [110/2] via 10.0.1.2, eth0, weight 1, 00:52:34
O>* 10.1.10.1/32 [110/2] via 10.0.1.2, eth0, weight 1, 02:21:09
O   10.2.10.1/32 [110/0] is directly connected, lo, weight 1, 02:20:02
C>* 10.2.10.1/32 is directly connected, lo, 04:05:15
O>* 10.3.10.1/32 [110/2] via 10.0.2.2, eth1, weight 1, 00:59:44
```

```:IXルーティングテーブル
     10.0.0.0/8 is subnetted, 7 subnets
O      10.0.1.0/24 [110/2] via 10.0.2.1, GigaEthernet0.0, 1:03:19
C      10.0.2.0/24 [0/0] is directly connected, GigaEthernet0.0, 4:30:30
C      10.0.3.0/24 [0/0] is directly connected, GigaEthernet1.0, 1:12:30
O      10.0.4.0/24 [110/3] via 10.0.2.1, GigaEthernet0.0, 0:54:09
O      10.1.10.1/32 [110/3] via 10.0.2.1, GigaEthernet0.0, 1:03:19
O      10.2.10.1/32 [110/1] via 10.0.2.1, GigaEthernet0.0, 1:03:19
C      10.3.10.1/32 [0/0] is directly connected, Loopback0.0, 4:08:04
```

```:Si-Rルーティングテーブル
FP  Destination/Mask   Gateway         Distance UpTime    Interface
--- ------------------ --------------- -------- --------- ------------------
*C  10.0.1.0/24        10.0.1.2               0 04:10:55  lan0
*O  10.0.2.0/24        10.0.1.1             110 02:51:06  lan0
*O  10.0.3.0/24        10.0.1.1             110 01:04:59  lan0
*C  10.0.4.0/24        10.0.4.1               0 00:55:53  lan1
*C  10.1.10.1/32       10.1.10.1              0 04:10:55  lo0
*O  10.2.10.1/32       10.0.1.1             110 02:23:16  lan0
*O  10.3.10.1/32       10.0.1.1             110 01:02:58  lan0
```

## 疎通確認
PC1 から PC2への疎通確認を行います。
```:ping
# ping 10.0.4.20
PING 10.0.4.20 (10.0.4.20): 56 data bytes
64 bytes from 10.0.4.20: seq=0 ttl=61 time=3.507 ms
64 bytes from 10.0.4.20: seq=1 ttl=61 time=1.111 ms
64 bytes from 10.0.4.20: seq=2 ttl=61 time=1.236 ms
```
pingが通ることが確認できます。
traceroute
```:traceroute
# traceroute -n 10.0.4.20
traceroute to 10.0.4.20 (10.0.4.20), 30 hops max, 46 byte packets
 1  10.0.3.1  0.542 ms  0.331 ms  0.318 ms
 2  10.0.2.1  0.594 ms  0.347 ms  0.326 ms
 3  10.0.1.2  0.769 ms  0.491 ms  0.493 ms
 4  10.0.4.20  0.872 ms  0.782 ms  0.691 ms
```
OSPFを設定したルーターでルーティングすることができました！