vyattaを使ってOSPFを実装してみる

かなり時間が空いてしまったけど前回の続きです。

参考と言うか設定を丸パクリさせて頂いた記事に感謝を。
ameblo.jp

構成図

参考記事そのままです。ルータ4台にスイッチ4台のひし形の構図です。

ルータを用意する。

# docker run -d --name router1 --net=none --privileged -v /lib/modules:/li b/modules kurochan/vyos:1.1.6 /sbin/init
# docker run -d --name router2 --net=none --privileged -v /lib/modules:/li b/modules kurochan/vyos:1.1.6 /sbin/init
# docker run -d --name router3 --net=none --privileged -v /lib/modules:/li b/modules kurochan/vyos:1.1.6 /sbin/init
# docker run -d --name router4 --net=none --privileged -v /lib/modules:/li b/modules kurochan/vyos:1.1.6 /sbin/init

スイッチを用意する

ovs-vsctl add-br switch1
ovs-vsctl add-br switch2
ovs-vsctl add-br switch3
ovs-vsctl add-br switch4

ルータとスイッチを接続する

# ovs-docker add-port switch1 eth0 router1 --ipaddress=10.0.1.1/24
# ovs-docker add-port switch2 eth1 router1 --ipaddress=10.0.2.1/24
# ovs-docker add-port switch1 eth0 router2 --ipaddress=10.0.1.2/24
# ovs-docker add-port switch3 eth1 router2 --ipaddress=10.0.3.1/24
# ovs-docker add-port switch2 eth0 router3 --ipaddress=10.0.2.2/24
# ovs-docker add-port switch4 eth1 router3 --ipaddress=10.0.4.1/24
# ovs-docker add-port switch3 eth0 router4 --ipaddress=10.0.3.2/24
# ovs-docker add-port switch4 eth1 router4 --ipaddress=10.0.4.2/24

ルータ1からルータ2へPing疎通を確認する

# docker exec -it router1 ping -c 2 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_req=1 ttl=64 time=0.394 ms
64 bytes from 10.0.1.2: icmp_req=2 ttl=64 time=0.108 ms

--- 10.0.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.108/0.251/0.394/0.143 ms
#

問題なく疎通できている。

ルータ1からルータ4へPing疎通を確認する

Ping疎通不可です。これはルータ1がルータ4への経路を持っていないからです。

# docker exec -it router1 ping -c 2 10.0.3.2
connect: Network is unreachable
#

OSPFを設定し各ルータのルート情報を伝搬してみる

router1

# docker exec -it router1 /bin/vbash
vbash-4.1# su - vyos
vyos@vyos:~$ configure
[edit]
vyos@vyos# set interfaces loopback lo address 1.1.1.1/32
[edit]
vyos@vyos# set protocols ospf area 0 network 10.0.0.0/16
[edit]
vyos@vyos# set protocols ospf parameters router-id 1.1.1.1
[edit]
vyos@vyos# commit
[edit]
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@vyos#

残りのルータをも上記同様に設定する。
router2

set interfaces loopback lo address 2.2.2.2/32
set protocols ospf area 0 network 10.0.0.0/16
set protocols ospf parameters router-id 2.2.2.2

router3

set interfaces loopback lo address 3.3.3.3/32
set protocols ospf area 0 network 10.0.0.0/16
set protocols ospf parameters router-id 3.3.3.3

router4

set interfaces loopback lo address 4.4.4.4/32
set protocols ospf area 0 network 10.0.0.0/16
set protocols ospf parameters router-id 4.4.4.4

ルータ1でルーティングテーブルを確認してみる。

飛び地のルータ4の【10.0.3.0/24,10.0.4.0/24】をOSPFで学習している事がわかります。

vyos@vyos:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

C>* 1.1.1.1/32 is directly connected, lo
O   10.0.1.0/24 [110/10] is directly connected, eth0, 00:03:00
C>* 10.0.1.0/24 is directly connected, eth0
O   10.0.2.0/24 [110/10] is directly connected, eth1, 00:03:00
C>* 10.0.2.0/24 is directly connected, eth1
O>* 10.0.3.0/24 [110/20] via 10.0.1.2, eth0, 00:01:55
O>* 10.0.4.0/24 [110/20] via 10.0.2.2, eth1, 00:01:20
C>* 127.0.0.0/8 is directly connected, lo
vyos@vyos:~$

ルータ1からルータ4へPing疎通してみよう

無事ルータ4へPing疎通ができました。

# docker exec -it router1 ping -c 2 10.0.3.2
PING 10.0.3.2 (10.0.3.2) 56(84) bytes of data.
64 bytes from 10.0.3.2: icmp_req=1 ttl=63 time=0.269 ms
64 bytes from 10.0.3.2: icmp_req=2 ttl=63 time=0.099 ms

--- 10.0.3.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.099/0.184/0.269/0.085 ms
#

次回VxLANあたりやってみたいですね~