VyOS の基本的なルーティング設定
[最終更新] (2019/06/03 00:37:42)
最近の投稿
注目の記事

概要

こちらのページでは、特定の 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 ルーティング

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 ルーティング

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

BGP ルーティング

この続きが気になる方は

VyOS の基本的なルーティング設定

残り文字数は全体の約 29 %
tybot
100 円
関連ページ
    概要 AWS VPC と GCP VPC を IPsec-VPN で接続するための設定例を記載します。 Build HA VPN connections between Google Cloud and AWS AWS VPC の作成 VPC 10.2.0.0/16 ap-northeast-1b Subnet