VyOSでiBGP

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
comments powered by Disqus