【VITOTHON】quagga で RIP ルーティング
FreeBSD に jail
を組み込んだアプライアンス VITOTHON[1][2] を使用して RIP の練習をします。まずは3つの RIP ルータを輪になるように繋げます。(nwdiag
だと見づらい図になってしまいました)
簡単に描くと以下のようになります。(それぞれのルータに PC(server0x)が1台ずつ繋がっている状態です)
RIP ルータを輪に繋げる
rip01# conf t
rip01(config)# router rip
rip01(config-router)# version 2 // rip2 にします
rip01(config-router)# network 192.168.100.0/24 // rip01 - host 間ネットワーク(rip01 のみ必要です)
rip01(config-router)# network 10.0.1.0/24 // rip01 - rip02 間ネットワーク
rip01(config-router)# network 10.0.3.0/24 // rip01 - rip03 間ネットワーク
rip01(config-router)# network 1.0.0.0/24 // rip01 - server01 間ネットワーク
rip01(config-router)# end
rip01# write mem
// 確認
rip01# sh ru
Building configuration...
...
router rip
version 2
network 1.0.0.0/24
network 10.0.1.0/24
network 10.0.3.0/24
network 192.168.100.0/24
!
上記の rip01
を参考に、残りの rip02
, rip03
を設定してください。全ての設定が終わった後に、rip01
でルーティングテーブルを確認します。
rip01# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, P - PIM, A - Babel, N - NHRP,
> - selected route, * - FIB route
C>* 1.0.0.0/24 is directly connected, epair5b
R>* 2.0.0.0/24 [120/2] via 10.0.1.2, epair2a, 00:37:36
R>* 3.0.0.0/24 [120/2] via 10.0.3.1, epair4b, 00:37:35
C>* 10.0.1.0/24 is directly connected, epair2a
R>* 10.0.2.0/24 [120/2] via 10.0.1.2, epair2a, 00:37:36
C>* 10.0.3.0/24 is directly connected, epair4b
C>* 127.0.0.0/24 is directly connected, lo0
C>* 192.168.100.0/24 is directly connected, epair1a
// 上から 6 個までが表示されていれば OK
server01
から server02
に対して ping を送って疎通確認をします。
[root@vitothon /jails/bin/test]# jexec server01 /bin/sh
# netstat -nr // まず default route が設定されているか確認してください
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 1.0.0.254 UGS epair5a
1.0.0.0/24 link#2 U epair5a
1.0.0.1 link#2 UHS lo0
127.0.0.1 link#1 UH lo0
# ping 10.0.2.1
PING 10.0.2.1 (10.0.2.1): 56 data bytes
64 bytes from 10.0.2.1: icmp_seq=0 ttl=63 time=0.070 ms
64 bytes from 10.0.2.1: icmp_seq=1 ttl=63 time=0.073 ms
^C
無事に疎通できました。
経路広告
下の図のようにルータを1台(rip04
)追加した場合を考えてみます。rip04
は rip03
とは直接接続していますが、rip01
, rip02
とは直接接続していません。そのため、何もしなければ rip04
は直接接続していない rip01
や rip02
の情報を取得できません。そこで必要になることが経路広告です。各自ルータが自身の知っている経路情報を広告することでネットワーク全体に経路情報を伝えることができます。
RIP で直接接続している情報を経路広告する場合は以下のように行います。
rip03(config-router)# redistribute connected
ただし、quagga では、直接接続された経路情報はデフォルトで広告されるようです[3]。
スプリットホライズン
スプリットホライズンの概要については、他の記事[4]を参考にしてください。quagga では、インターフェース単位でスプリットホライズンの設定をすることができます。(quagga では、デフォルトでスプリットホライズンが有効になっています。)
rip03# conf t
rip03(config)# interface epair5b
rip03(config-if)# ip rip split-horizon
(quagga では、ポイズンリバース[5] はサポートしてないっぽいです。)
Discussion