本ページでは、複数の 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
スタティックルーティング
ここでは 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 ルーティング
Border Gateway Protocol の設定例を記載します。BGP というと超大規模なネットワークで用いられる複雑なプロトコルというイメージがありそうですが、ポリシー設定などを行わず OSPF や RIP と同様に経路情報を交換するためだけであれば、設定は単純であることが分かります。
vyos-0001/vyos-0002/vyos-0003 は、BGP におけるネットワーク機器の集合体 AS (Autonomous System) への接続窓口となるルータです。各 AS には AS 番号が付与されます。IP と同様にグローバル AS 番号、プライベート AS 番号という概念があります。ここでは 64512 から 65534 までの範囲のプライベート AS 番号から、それぞれ 65001/65002/65003 を vyos-0001/vyos-0002/vyos-0003 がルータとなる AS に割り当てて実験します。vyos-0002/vyos-0003 の eth0 側のネットワークを BGP で経路情報を交換する対象のネットワークとして設定します。
vyos-0001
vyos@vyos-0001# set protocols bgp 65001 neighbor 192.168.1.2 password mypass12
vyos@vyos-0001# set protocols bgp 65001 neighbor 192.168.1.2 remote-as 65002
vyos@vyos-0001# set protocols bgp 65001 neighbor 192.168.2.3 password mypass13
vyos@vyos-0001# set protocols bgp 65001 neighbor 192.168.2.3 remote-as 65003
vyos@vyos-0001# commit
vyos@vyos-0001# save
vyos-0002
vyos@vyos-0002# set protocols bgp 65002 neighbor 192.168.1.1 password mypass12
vyos@vyos-0002# set protocols bgp 65002 neighbor 192.168.1.1 remote-as 65001
vyos@vyos-0002# set protocols bgp 65002 neighbor 192.168.3.3 password mypass23
vyos@vyos-0002# set protocols bgp 65002 neighbor 192.168.3.3 remote-as 65003
vyos@vyos-0002# set protocols bgp 65002 network 192.168.4.0/24
vyos@vyos-0002# commit
vyos@vyos-0002# save
vyos-0003
vyos@vyos-0003# set protocols bgp 65003 neighbor 192.168.2.1 password mypass13
vyos@vyos-0003# set protocols bgp 65003 neighbor 192.168.2.1 remote-as 65001
vyos@vyos-0003# set protocols bgp 65003 neighbor 192.168.3.2 password mypass23
vyos@vyos-0003# set protocols bgp 65003 neighbor 192.168.3.2 remote-as 65002
vyos@vyos-0003# set protocols bgp 65003 network 192.168.5.0/24
vyos@vyos-0003# commit
vyos@vyos-0003# save
vyos-0004
vyos@vyos-0004# set system gateway-address 192.168.4.2
vyos@vyos-0004# commit
vyos@vyos-0004# save
vyos-0005
vyos@vyos-0005# set system gateway-address 192.168.5.3
vyos@vyos-0005# commit
vyos@vyos-0005# save
BGP のセッション状態を確認します。近隣の BGP ルータとの通信が確立できています。
vyos@vyos-0001:~$ show ip bgp summary
BGP router identifier 192.168.2.1, local AS number 65001
IPv4 Unicast - max multipaths: ebgp 1 ibgp 1
RIB entries 3, using 288 bytes of memory
Peers 2, using 9120 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.1.2 4 65002 193 194 0 0 0 03:10:31 2
192.168.2.3 4 65003 187 190 0 0 0 03:04:18 2
BGP ルータが保有している経路情報の一覧を確認します。192.168.4.0/24
および 192.168.5.0/24
への経路をそれぞれ二つずつ保有しており、最短ルートが選択されていることが確認できます。
vyos@vyos-0001:~$ show ip bgp
BGP table version is 0, local router ID is 192.168.2.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* 192.168.4.0 192.168.2.3 0 65003 65002 i
*> 192.168.1.2 1 0 65002 i
*> 192.168.5.0 192.168.2.3 1 0 65003 i
* 192.168.1.2 0 65002 65003 i
Total number of prefixes 2
ルーティングテーブルも確認します。
vyos@vyos-0001:~$ show ip route bgp
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
B>* 192.168.4.0/24 [20/1] via 192.168.1.2, eth1, 20:02:18
B>* 192.168.5.0/24 [20/1] via 192.168.2.3, eth2, 20:00:34
各 BGP ルータに対して広報した経路情報を確認できます。vyos-0002/vyos-0003 から受信した経路情報を vyos-0003/vyos-0002 に送信したことが分かります。
vyos@vyos-0001:~$ show ip bgp neighbors 192.168.1.2 advertised-routes
BGP table version is 0, local router ID is 192.168.2.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.5.0 192.168.1.1 0 65003 i
Total number of prefixes 1
vyos@vyos-0001:~$ show ip bgp neighbors 192.168.2.3 advertised-routes
BGP table version is 0, local router ID is 192.168.2.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.4.0 192.168.2.1 0 65002 i
Total number of prefixes 1
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.390 ms 0.309 ms 0.809 ms
2 192.168.4.4 (192.168.4.4) 0.997 ms 0.737 ms 0.363 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.245 ms 0.105 ms 0.052 ms
2 192.168.5.5 (192.168.5.5) 0.346 ms 0.311 ms 0.272 ms
関連記事
- Ciscoルータの基本操作シスコ社の製品のうち、ルータは Cisco*** という製品名でスイッチは Catalyst*** という製品名です。いずれも *** は機種番号で、数字が小さいほど小規模ネットワーク向けとなっています。例えば資格試験 CCNA Routing and Switching では小規模および中規模ネットワークが対象です。そのため、中小規模のネットワークのルータおよびス
- BIND 9 ゾーンファイル Dynamic Update の設定方法DHCP 環境下などで IP が動的に付与される場合は DNS レコードを動的に更新する必要があります。これを実現する Dynamic Update 機能が BIND 9 には実装されています。使用方法をまとめます。Dynamic Update に対応した DNS を特に Dynamic DNS または DDNS とよぶことがあります。 ゾーンファイルの作成 ローカルホストに example.co...
- BIND 9.10.2 の公式マニュアルに学ぶ DNS の基本DNS の実装としては Internet Systems Consortium (ISC) の Berkeley Internet Name Domain (BIND) が有名です。本ページは公式サイトの Documentation からダウンロードできる v9.10.2 の PDF マニュアルおよび『DNSの仕組み完全解説』から基本事項を抽出してまとめ
- スタティックルートの設定インターフェイスに IP を設定しただけでは他のデバイスと通信できません。各デバイスにルーティングテーブルを設定する必要があります。ルーティングテーブルの設定方法には動的に自動設定するものと、静的に手動設定するものの二種類があります。ここでは静的に手動設定するスタティックルートの方法を紹介します。 具体的にはまず PC0, PC1, Router0, Router1 それぞれ
- 低レイヤーネットワークプログラミングに関する雑多な知識TCP/IP モデルのうちトランスポート層ではなく、インターネット層およびネットワークインターフェイス層のパケット (正確には PDU) を扱う低レイヤープログラミングの雑多なテクニックをまとめます。『ルーター自作でわかるパケットの流れ』などを参考にしています。バックアップ目的で書籍のサンプルコードをホスティングしました。 検証環境