VyOSでiBGP
VyOSでiBGPを設定してみる。
ソフトウェア |
バージョン |
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経由でホストマシンに向いています。
属性 |
値 |
vypeer ASN |
65001 |
vybgw ASN |
65000 |
vytor ASN |
65000 |
other |
100.20.0.0/24 |
ix |
100.100.0.0/24 |
backbone |
100.10.0.0/24 |
dmz |
100.10.10.0/24 |
仮想マシンの準備
Vagrant
ファイルは下な感じで。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
Vagrant.configure("2") do |config|
config.vm.box = "vyos/current"
config.vm.define :vytor do | vytor |
vytor.vm.hostname = "vytor"
vytor.vm.network :private_network, virtualbox__intnet: "dmz"
vytor.vm.network :private_network, virtualbox__intnet: "backbone"
end
config.vm.define :vybgw do | vybgw |
vybgw.vm.hostname = "vybgw"
vybgw.vm.network :private_network, virtualbox__intnet: "backbone"
vybgw.vm.network :private_network, virtualbox__intnet: "ix"
end
config.vm.define :vypeer do | vypeer |
vypeer.vm.hostname = "vypeer"
vypeer.vm.network :private_network, virtualbox__intnet: "ix"
vypeer.vm.network :private_network, virtualbox__intnet: "other"
end
config.vm.define :deb do | deb |
deb.vm.box = "debian/bullseye64"
deb.vm.hostname = "deb01"
deb.vm.network :private_network, type: "dhcp", virtualbox__intnet: "dmz"
end
end
|
VyOSを設定する
vytorからvypeerへ経路がなく、vybgw,vytor間がiBGPないため経路が広報されない。
経路を設定するか nexthop-self
を設定するかが必要になる。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# in vytor
configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address 100.10.10.1/24
set interfaces ethernet eth2
set interfaces ethernet eth2 address 100.10.0.10/24
set protocols bgp local-as 65000
set protocols bgp address-family ipv4-unicast network 100.10.10.0/24
set protocols bgp neighbor 100.10.0.1 remote-as 65000
set protocols bgp neighbor 100.10.0.1 address-family ipv4-unicast
commit
save
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# in vybgw
configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address 100.10.0.1/24
set interfaces ethernet eth2
set interfaces ethernet eth2 address 100.100.0.1/24
set protocols bgp local-as 65000
set protocols bgp neighbor 100.10.0.10 remote-as 65000
set protocols bgp neighbor 100.10.0.10 address-family ipv4-unicast
set protocols bgp neighbor 100.100.0.2 remote-as 65001
set protocols bgp neighbor 100.100.0.2 address-family ipv4-unicast
set protocols bgp neighbor 100.10.0.10 address-family ipv4-unicast nexthop-self
commit
save
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# in vypeer
configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address 100.100.0.2/24
set interfaces ethernet eth2
set interfaces ethernet eth2 address 100.20.0.1/24
set protocols bgp local-as 65001
set protocols bgp address-family ipv4-unicast network 100.20.0.0/24
set protocols bgp neighbor 100.100.0.1 remote-as 65000
set protocols bgp neighbor 100.100.0.1 address-family ipv4-unicast
commit
save
|
検証
検証はしたみたいにする。
vytorでpingを打つと送信元IPがbackboneセグメントになってしまう。
backbone のセグメントはBGPで広報されてないためEcho Replyが返ってこない。
そのためdmzセグメントにサーバーを立ててpingを飛ばした。
1
2
3
4
5
6
7
|
$ sudo ip addr add 100.10.10.10/24 dev eth1
$ sudo ip route add 100.20.0.0/24 via 100.10.10.1
$ traceroute 100.20.0.1
traceroute to 100.20.0.1 (100.20.0.1), 30 hops max, 60 byte packets
1 L101.PRVDRI-VFTTP-27.verizon-gni.net (100.10.10.1) 0.435 ms 0.508 ms 0.865 ms
2 lo0-100.PRVDRI-VFTTP-320.verizon-gni.net (100.10.0.1) 1.121 ms 1.448 ms 1.439 ms
3 ec2-100-20-0-1.us-west-2.compute.amazonaws.com (100.20.0.1) 1.544 ms 1.649 ms 1.643 ms
|