こちらのページでは、特定の LAN に対して各種サービスを提供するための VyOS 設定を把握しました。本ページでは、複数の LAN をつなぐルータとしての設定方法をまとめます。具体的には、スタティックルーティングおよびダイナミックルーティング (RIP/OSPF/BGP) の設定方法を把握します。
ルーティング設定の検証を行うために VirtualBox で 5 台の VM を用意します。設定方法はこちらです。ホスト OS から vyos-0001
へ SSH 接続する部分を除き、「内部ネットワーク」設定のアダプターを追加します。
ホスト OS の所属するネットワーク
| vyos-0004
| |eth0 .4
| |
|NAT |192.168.4.0/24
| |
| 192.168.1.0/24 |eth2 .2
eth0 | vyos-0001 | eth1 ---- eth0 | vyos-0002
| .1 .2 |eth1 .2
| |
| |192.168.3.0/24
| |
| 192.168.2.0/24 |eth1 .3
| eth2 ---- eth0 | vyos-0003
.1 .3 |eth2 .3
|
|192.168.5.0/24
|
|eth0 .5
vyos-0005
Cisco ルータ向けの設定および Linux 向けの設定に続き、ここでは VyOS におけるスタティックルーティングの設定を行います。設定前における vyos-0001
のルーティングテーブルです。vyos-0004
および vyos-0005
には到達できません。
vyos@vyos-0001:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
S>* 0.0.0.0/0 [210/0] via 10.0.2.2, eth0
C>* 10.0.2.0/24 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth1
C>* 192.168.2.0/24 is directly connected, eth2
ルーティングを静的に設定します。
vyos@vyos-0001# set protocols static route 192.168.4.0/24 next-hop 192.168.1.2
vyos@vyos-0001# set protocols static route 192.168.5.0/24 next-hop 192.168.2.3
vyos@vyos-0001# show protocols
+static {
+ route 192.168.4.0/24 {
+ next-hop 192.168.1.2 {
+ }
+ }
+ route 192.168.5.0/24 {
+ next-hop 192.168.2.3 {
+ }
+ }
+}
vyos@vyos-0001# commit
ルーティングテーブルが更新されました。
vyos@vyos-0001# run show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
S>* 0.0.0.0/0 [210/0] via 10.0.2.2, eth0
C>* 10.0.2.0/24 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth1
C>* 192.168.2.0/24 is directly connected, eth2
S>* 192.168.4.0/24 [1/0] via 192.168.1.2, eth1
S>* 192.168.5.0/24 [1/0] via 192.168.2.3, eth2
パケットの到達はできますが、応答が得られないため、必要に応じて他の VyOS の設定を行います。
vyos-0004
vyos@vyos-0004# set system gateway-address 192.168.4.2
vyos@vyos-0004# commit
vyos-0005
vyos@vyos-0005# set system gateway-address 192.168.5.3
vyos@vyos-0005# commit
vyos-0001 から ping および traceroute が通るようになりました。
vyos@vyos-0001:~$ traceroute 192.168.4.4
traceroute to 192.168.4.4 (192.168.4.4), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.514 ms 0.348 ms 0.290 ms
2 192.168.4.4 (192.168.4.4) 0.687 ms 0.642 ms 1.298 ms
vyos@vyos-0001:~$ traceroute 192.168.5.5
traceroute to 192.168.5.5 (192.168.5.5), 30 hops max, 60 byte packets
1 192.168.2.3 (192.168.2.3) 0.340 ms 0.281 ms 0.232 ms
2 192.168.5.5 (192.168.5.5) 0.372 ms 0.337 ms 0.294 ms
スタティックルーティングによる手動設定では対応できない規模のネットワークではダイナミックルーティングを利用します。
RIP (Routing Information Protocol) の設定がなされたインターフェースから、ホストが知る経路情報を同一ネットワークの他のホストに対して 30 秒毎に UDP 520 番ポートで通知します。ホップ数をメトリックとして利用します。無限ループを回避する目的で最大値の 15 ホップを越える経路のメトリックは無限として処理します。単純なアルゴリズムですが、障害時の復旧が遅く、経路情報を交換するためのオーバーヘッドが大きいため、小規模ネットワーク向けです。
vyos-0001/vyos-0002/vyos-0003 の eth0, eth1, eth2 を RIP で経路情報を交換する対象のネットワークとして設定します。それぞれ eth0/eth2/eth2 は経路情報を交換する対象のネットワークですが、経路情報を交換する相手がいないため、RIP プロトコルはしゃべらないように設定します。
vyos-0001
vyos@vyos-0001# set protocols rip interface eth0
vyos@vyos-0001# set protocols rip interface eth1
vyos@vyos-0001# set protocols rip interface eth2
vyos@vyos-0001# set protocols rip passive-interface eth0
vyos@vyos-0001# show protocols
+rip {
+ interface eth0
+ interface eth1
+ interface eth2
+ passive-interface eth0
+}
vyos@vyos-0001# commit
vyos-0002
vyos@vyos-0002# set protocols rip interface eth0
vyos@vyos-0002# set protocols rip interface eth1
vyos@vyos-0002# set protocols rip interface eth2
vyos@vyos-0002# set protocols rip passive-interface eth2
vyos@vyos-0002# show protocols
+rip {
+ interface eth0
+ interface eth1
+ interface eth2
+ passive-interface eth2
+}
vyos@vyos-0002# commit
vyos-0003
vyos@vyos-0003# set protocols rip interface eth0
vyos@vyos-0003# set protocols rip interface eth1
vyos@vyos-0003# set protocols rip interface eth2
vyos@vyos-0003# set protocols rip passive-interface eth2
vyos@vyos-0003# show protocols
+rip {
+ interface eth0
+ interface eth1
+ interface eth2
+ passive-interface eth2
+}
vyos@vyos-0003# commit
RIP とは関係ありませんが、到達したパケットに応答するための情報を vyos-0004 および vyos-0005 に設定します。
vyos-0004
vyos@vyos-0004# set system gateway-address 192.168.4.2
vyos@vyos-0004# commit
vyos-0005
vyos@vyos-0005# set system gateway-address 192.168.5.3
vyos@vyos-0005# commit
ルーティングテーブルが設定されました。
vyos@vyos-0001# run show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
S>* 0.0.0.0/0 [210/0] via 10.0.2.2, eth0
C>* 10.0.2.0/24 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth1
C>* 192.168.2.0/24 is directly connected, eth2
R>* 192.168.3.0/24 [120/2] via 192.168.1.2, eth1, 00:03:35
R>* 192.168.4.0/24 [120/2] via 192.168.1.2, eth1, 00:03:35
R>* 192.168.5.0/24 [120/2] via 192.168.2.3, eth2, 00:02:05
vyos@vyos-0001# run show ip route rip
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
R>* 192.168.3.0/24 [120/2] via 192.168.1.2, eth1, 00:03:39
R>* 192.168.4.0/24 [120/2] via 192.168.1.2, eth1, 00:03:39
R>* 192.168.5.0/24 [120/2] via 192.168.2.3, eth2, 00:02:09
ping および traceroute が通ることが確認できます。
vyos@vyos-0001# traceroute 192.168.4.4
traceroute to 192.168.4.4 (192.168.4.4), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.298 ms 0.207 ms 0.152 ms
2 192.168.4.4 (192.168.4.4) 1.195 ms 1.161 ms 1.069 ms
vyos@vyos-0001# traceroute 192.168.5.5
traceroute to 192.168.5.5 (192.168.5.5), 30 hops max, 60 byte packets
1 192.168.2.3 (192.168.2.3) 0.375 ms 0.429 ms 0.372 ms
2 192.168.5.5 (192.168.5.5) 0.861 ms 0.806 ms 0.756 ms
OSPF (Open Shortest Path First) は大規模ネットワークにも耐えるルーティングプロトコルです。経路にコストが設定でき、ダイクストラ法を利用した最短経路の計算がなされます。障害時に迂回したり、同コストの経路を利用した負荷分散がなされます。
vyos-0001 の eth1, eth2 および vyos-0002/vyos-0003 の eth0, eth1, eth2 を OSPF で経路情報を交換する対象のネットワークとして設定します。それぞれ eth0/eth2/eth2 は経路情報を交換する相手がいないため、OSPF プロトコルはしゃべらないように設定します。
vyos-0001
vyos@vyos-0001# set protocols ospf area 0 network 192.168.1.0/24
vyos@vyos-0001# set protocols ospf area 0 network 192.168.2.0/24
vyos@vyos-0001# set protocols ospf passive-interface eth0
vyos@vyos-0001# show protocols
+ospf {
+ area 0 {
+ network 192.168.1.0/24
+ network 192.168.2.0/24
+ }
+ passive-interface eth0
+}
vyos@vyos-0001# commit
vyos-0002
vyos@vyos-0002# set protocols ospf area 0 network 192.168.1.0/24
vyos@vyos-0002# set protocols ospf area 0 network 192.168.3.0/24
vyos@vyos-0002# set protocols ospf area 0 network 192.168.4.0/24
vyos@vyos-0002# set protocols ospf passive-interface eth2
vyos@vyos-0002# show protocols
+ospf {
+ area 0 {
+ network 192.168.1.0/24
+ network 192.168.3.0/24
+ network 192.168.4.0/24
+ }
+ passive-interface eth2
+}
[edit]
vyos@vyos-0002# commit
vyos-0003
vyos@vyos-0003# set protocols ospf area 0 network 192.168.2.0/24
vyos@vyos-0003# set protocols ospf area 0 network 192.168.3.0/24
vyos@vyos-0003# set protocols ospf area 0 network 192.168.5.0/24
vyos@vyos-0003# set protocols ospf passive-interface eth2
vyos@vyos-0003# show protocols
+ospf {
+ area 0 {
+ network 192.168.2.0/24
+ network 192.168.3.0/24
+ network 192.168.5.0/24
+ }
+ passive-interface eth2
+}
[edit]
vyos@vyos-0003# commit
OSPF における近隣ルータの情報が設定されたことを確認します。
vyos@vyos-0001# run show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
192.168.4.2 1 Full/Backup 30.129s 192.168.1.2 eth1:192.168.1.1 0 0 0
192.168.5.3 1 Full/Backup 36.725s 192.168.2.3 eth2:192.168.2.1 0 0 0
必須ではありませんが vyos-0001 から見たときのコストを設定してみます。
vyos@vyos-0001# set interfaces ethernet eth1 ip ospf cost 200
vyos@vyos-0001# set interfaces ethernet eth2 ip ospf cost 500
vyos@vyos-0001# show interfaces
ethernet eth0 {
address dhcp
duplex auto
hw-id 08:00:27:ef:a2:8b
smp_affinity auto
speed auto
}
ethernet eth1 {
address 192.168.1.1/24
duplex auto
hw-id 08:00:27:40:90:62
+ ip {
+ ospf {
+ cost 200
+ }
+ }
smp_affinity auto
speed auto
}
ethernet eth2 {
address 192.168.2.1/24
duplex auto
hw-id 08:00:27:5f:a9:68
+ ip {
+ ospf {
+ cost 500
+ }
+ }
smp_affinity auto
speed auto
}
loopback lo {
}
vyos@vyos-0001# commit
ルーティングテーブルが更新されました。vyos-0005 に到達するためにはコスト 500 の経路ではなくコスト 200 の経路が採用されました。
vyos@vyos-0001# run show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
S>* 0.0.0.0/0 [210/0] via 10.0.2.2, eth0
C>* 10.0.2.0/24 is directly connected, eth0
C>* 127.0.0.0/8 is directly connected, lo
O 192.168.1.0/24 [110/200] is directly connected, eth1, 00:03:26
C>* 192.168.1.0/24 is directly connected, eth1
O 192.168.2.0/24 [110/220] via 192.168.1.2, 00:03:26
C>* 192.168.2.0/24 is directly connected, eth2
O>* 192.168.3.0/24 [110/210] via 192.168.1.2, eth1, 00:03:26
O>* 192.168.4.0/24 [110/210] via 192.168.1.2, eth1, 00:03:26
O>* 192.168.5.0/24 [110/220] via 192.168.1.2, eth1, 00:03:26
vyos@vyos-0001# run show ip route ospf
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
O 192.168.1.0/24 [110/200] is directly connected, eth1, 00:03:41
O 192.168.2.0/24 [110/220] via 192.168.1.2, 00:03:41
O>* 192.168.3.0/24 [110/210] via 192.168.1.2, eth1, 00:03:41
O>* 192.168.4.0/24 [110/210] via 192.168.1.2, eth1, 00:03:41
O>* 192.168.5.0/24 [110/220] via 192.168.1.2, eth1, 00:03:41
OSPF とは関係ありませんが、到達したパケットに応答するための情報を vyos-0004 および vyos-0005 に設定します。
vyos-0004
vyos@vyos-0004# set system gateway-address 192.168.4.2
vyos@vyos-0004# commit
vyos-0005
vyos@vyos-0005# set system gateway-address 192.168.5.3
vyos@vyos-0005# commit
ping および traceroute が通ることが確認できます。
vyos@vyos-0001# traceroute 192.168.4.4
traceroute to 192.168.4.4 (192.168.4.4), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.393 ms 0.304 ms 0.249 ms
2 192.168.4.4 (192.168.4.4) 0.718 ms 0.593 ms 0.485 ms
vyos@vyos-0001# traceroute 192.168.5.5
traceroute to 192.168.5.5 (192.168.5.5), 30 hops max, 60 byte packets
1 192.168.1.2 (192.168.1.2) 0.260 ms 0.164 ms 0.101 ms
2 192.168.3.3 (192.168.3.3) 0.630 ms 0.591 ms 0.547 ms
3 192.168.5.5 (192.168.5.5) 1.212 ms 1.178 ms 1.128 ms