VyOSでOSPF
VyOSでOSPFを設定してみる。
ソフトウェア |
バージョン |
VyOS |
1.4-rolling-202203080319 |
VirtualBox |
6.1.32 r149290 (Qt5.6.3) |
Vagrant |
2.2.19 |
vagrant-vyos |
1.1.10 |
構築環境
Vagrantで準備するとeth0としてNATタイプのインタフェースとdefaultルートが設定されます。
図には載せないですが全てのホストでdefaultルートがeth0経由でホストマシンに向いています。
また実際にはDebianホストは立てませんでした。
属性 |
値 |
backbone |
100.0.10.0/24 |
local |
100.0.20.0/24 |
seg1 |
100.1.10.0/24 |
seg2 |
100.2.10.0/24 |
OSPFネイバー間で area とセグメントが共有されていないと経路交換が行われません。
こういった条件は使わないと忘れがちです。試行錯誤中にググったらまとめ記事が見つかり気づけました。
プロトコルの仕様はRFC2328(STD54)です。10.1章にネイバーの状態遷移の記載があります。
仮想マシン準備
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Vagrant.configure("2") do |config|
config.vm.box = "vyos/current"
config.vm.define :vysite1 do | vysite1 |
vysite1.vm.hostname = "vysite1"
vysite1.vm.network :private_network, virtualbox__intnet: "seg1"
vysite1.vm.network :private_network, virtualbox__intnet: "backbone"
end
config.vm.define :vysite2 do | vysite2 |
vysite2.vm.hostname = "vysite2"
vysite2.vm.network :private_network, virtualbox__intnet: "backbone"
vysite2.vm.network :private_network, virtualbox__intnet: "local"
end
config.vm.define :vysite3 do | vysite3 |
vysite3.vm.hostname = "vysite3"
vysite3.vm.network :private_network, virtualbox__intnet: "local"
vysite3.vm.network :private_network, virtualbox__intnet: "seg2"
end
end
|
設定
vysite1
1
2
3
4
5
6
7
8
9
10
11
|
configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address 100.1.10.1/24
set interfaces ethernet eth2
set interfaces ethernet eth2 address 100.0.10.2/24
set protocols ospf area 0
set protocols ospf area 0 network 100.0.10.0/24
set protocols ospf area 0 network 100.1.10.0/24
commit
save
|
vysite2
1
2
3
4
5
6
7
8
9
10
11
|
configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address 100.0.10.1/24
set interfaces ethernet eth2
set interfaces ethernet eth2 address 100.0.20.2/24
set protocols ospf area 0
set protocols ospf area 0 network 100.0.10.0/24
set protocols ospf area 0 network 100.0.20.0/24
commit
save
|
vysite3
1
2
3
4
5
6
7
8
9
|
configure
set interfaces ethernet eth1 address 100.0.20.1/24
set interfaces ethernet eth2 address 100.2.10.1/24
set protocols ospf area 0
set protocols ospf area 0 network 100.0.20.0/24
set protocols ospf area 0 network 100.2.10.0/24
commit
save
|
確認作業
OSPFの設定状況
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# in vysite1
$ show ip ospf route
============ OSPF network routing table ============
N 100.0.10.0/24 [1] area: 0.0.0.0
directly attached to eth2
N 100.0.20.0/24 [2] area: 0.0.0.0
via 100.0.10.1, eth2
N 100.1.10.0/24 [1] area: 0.0.0.0
directly attached to eth1
N 100.2.10.0/24 [3] area: 0.0.0.0
via 100.0.10.1, eth2
============ OSPF router routing table =============
============ OSPF external routing table ===========
$ show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
100.0.20.2 1 Full/Backup 35.180s 100.0.10.1 eth2:100.0.10.2 0 0 0
|
疎通確認
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# in vysite1
$ traceroute 100.2.10.1
traceroute to 100.2.10.1 (100.2.10.1), 30 hops max, 60 byte packets
1 lo0-100.BSTNMA-VFTTP-361.verizon-gni.net (100.0.10.1) 0.610 ms 0.751 ms 1.110 ms
2 lo0-100.NYCMNY-VFTTP-341.verizon-gni.net (100.2.10.1) 2.382 ms 2.338 ms 2.318 ms
$ ping 100.2.10.1 count 1
PING 100.2.10.1 (100.2.10.1) 56(84) bytes of data.
64 bytes from 100.2.10.1: icmp_seq=1 ttl=63 time=1.22 ms
--- 100.2.10.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.219/1.219/1.219/0.000 ms
|
OSPFメモ
定義はRFC2328(STD54)です。
この野良解説がわかりやすかった。
set protocols ospf passive-interface default
でデフォルトで自分からブロードキャストしないようにできる
set protocols ospf interface eth0 passive
で特定インタフェースをpassiveにできる
- 後ろに
disable
を続けるとOSPFを止められる
set protocols ospf parameters router-id <router-id>
で明示的にルーターIDを指定できる