🛣️

[個人用]Azure Route Server+NVAの検証環境の準備手順とメモ

2023/08/04に公開

Azure Route Serverとは

ARSはBGPを喋れるNVAピアを張ることで、NVAからの経路を受け取ってAzure側のリソースに経路を伝搬したり、逆にNVAにARSに広報されてくる経路を広報することができるサービス。

https://learn.microsoft.com/ja-jp/azure/route-server/overview

NVA-ARSの検証環境の立て方

完成する環境のイメージ

S2SVPN環境の用意

  • BGPを有効化したS2SVPN環境を1つ用意しておく
  • こちらのBicepを展開すれば30minくらいで環境が出来上がり

https://github.com/zukakosan/bicep-s2svpn-bgp

  • ↑の解説

https://zenn.dev/microsoft/articles/8d1558a8a2127c

NVA用UbuntuVM作成

  • 先述のS2S環境のオンプレ側に1台Ubuntu VMを作成

Azure Route Server作成

  • Azure Route ServerはRouteServerSubnetという専用のサブネットが必要なため、オンプレ側VNETにサブネットを追加

  • ここでは10.200.2.0/24とする

  • VPNGatewayをActive/Activeにしないとエラーになるので、VPNGatewayの構成を変更しておく

  • また、ARSのデプロイが完了したら[ブランチ間]を[有効]としておく

NVAとARSの設定

  • こちらの記事を参考にNVAを構成する
  • FRRoutingというミドルウェアでNVAを構成。Ciscoライクなコマンドで設定できる。

https://zenn.dev/microsoft/articles/azure-route-server-frrouting#nva-の作成

  • sudo vtyshでConfigに入り、あとはもろもろ設定する。
AzureAdmin@vm-ubuntu-onp-frr:~$ sudo vtysh

Hello, this is FRRouting (version 8.5.2).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

vm-ubuntu-onp-frr#
  • 先述のS2S環境ではこんな感じになるはず。
ip route 10.100.2.0/24 10.100.1.1
!
router bgp 65001
 neighbor 10.100.2.4 remote-as 65515
 neighbor 10.100.2.4 ebgp-multihop 255
 neighbor 10.100.2.5 remote-as 65515
 neighbor 10.100.2.5 ebgp-multihop 255
 !
 address-family ipv4 unicast
  neighbor 10.100.2.4 soft-reconfiguration inbound
  neighbor 10.100.2.4 route-map rmap-bogon-asns in
  neighbor 10.100.2.4 route-map rmap-azure-asns out
  neighbor 10.100.2.5 soft-reconfiguration inbound
  neighbor 10.100.2.5 route-map rmap-bogon-asns in
  neighbor 10.100.2.5 route-map rmap-azure-asns out
 exit-address-family
exit
!
bgp as-path access-list azure-asns seq 5 permit _65515_
bgp as-path access-list bogon-asns seq 5 permit _0_
bgp as-path access-list bogon-asns seq 10 permit _23456_
bgp as-path access-list bogon-asns seq 15 permit _1310[0-6][0-9]_|_13107[0-1]_
bgp as-path access-list bogon-asns seq 20 deny _65515_
bgp as-path access-list bogon-asns seq 25 permit ^65
!
route-map rmap-bogon-asns deny 5
 match as-path bogon-asns
exit
!
route-map rmap-bogon-asns permit 10
exit
!
route-map rmap-azure-asns deny 5
 match as-path azure-asns
exit
!
route-map rmap-azure-asns permit 10
exit
!

ARS側でピアにNVAを追加

  • Azure Portalから追加する

BGPの確立を確認

  • show ip bgp nei x.x.x.xEstablishedを確認
vm-ubuntu-onp-frr# show ip bgp nei 10.100.2.4
BGP neighbor is 10.100.2.4, remote AS 65515, local AS 65001, external link
  Local Role: undefined
  Remote Role: undefined
  BGP version 4, remote router ID 10.100.2.4, local router ID 10.100.1.5
  BGP state = Established, up for 00:03:20
  Last read 00:00:50, Last write 00:00:20
  Hold time is 180 seconds, keepalive interval is 60 seconds
  Configured hold time is 180 seconds, keepalive interval is 60 seconds
  Configured conditional advertisements interval is 60 seconds
  • サマリーも確認
vm-ubuntu-onp-frr# show ip bgp sum

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.100.1.5, local AS number 65001 vrf-id 0
BGP table version 2
RIB entries 1, using 192 bytes of memory
Peers 2, using 1449 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
10.100.2.4      4      65515        17        53        0    0    0 00:12:59            1        0 N/A
10.100.2.5      4      65515        18        58        0    0    0 00:12:59            1        0 N/A

Total number of neighbors 2

動作確認

NVA > Cloud VMへのPing

  • 通った
AzureAdmin@vm-ubuntu-onp-frr:~$ ping 10.0.1.4
PING 10.0.1.4 (10.0.1.4) 56(84) bytes of data.
64 bytes from 10.0.1.4: icmp_seq=1 ttl=64 time=6.01 ms
64 bytes from 10.0.1.4: icmp_seq=2 ttl=64 time=6.20 ms
64 bytes from 10.0.1.4: icmp_seq=3 ttl=64 time=7.03 ms
^C
--- 10.0.1.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.013/6.415/7.034/0.444 ms

ARSにおけるブランチ間接続の有効/無効の違い

  • 前述のNVA > Cloud VMへの疎通確認だけでは、単にVPNGWのBGPによって経路が見えているだけの可能性もある
  • よって、ブランチ間接続のオンオフにより挙動を確認する

ブランチ間:無効

  • NVA > Cloud VMにPing通らない
  • 受け取っている経路を見ると、クラウド側の経路が来ていない
AzureAdmin@vm-ubuntu-onp-frr:~$ sudo vtysh

Hello, this is FRRouting (version 8.5.2).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

vm-ubuntu-onp-frr# show ip bgp nei 10.100.2.4 received-routes
BGP table version is 5, local router ID is 10.100.1.5, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.100.0.0/16    10.100.2.4                             0 65515 i
  • ただ、Azure Portal側では受け取っているように見える

ブランチ間:有効

  • 受け取っている経路を見ると、確かにクラウド側の経路が来ている
vm-ubuntu-onp-frr# show ip bgp nei 10.100.2.4 received-routes
BGP table version is 7, local router ID is 10.100.1.5, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.0.0/16      10.100.2.4                             0 65515 65020 65010 i
 *> 10.100.0.0/16    10.100.2.4                             0 65515 i
  • Pingも通る
vm-ubuntu-onp-frr# ping 10.0.1.4
PING 10.0.1.4 (10.0.1.4) 56(84) bytes of data.
64 bytes from 10.0.1.4: icmp_seq=1 ttl=64 time=7.17 ms
64 bytes from 10.0.1.4: icmp_seq=2 ttl=64 time=7.03 ms
64 bytes from 10.0.1.4: icmp_seq=3 ttl=64 time=6.15 ms
^C
--- 10.0.1.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 6.145/6.779/7.167/0.452 ms
  • Azure上では変わらず見える

NVAとしてみている経路と、Azure側が認識している経路にギャップがあるので注意する必要があるということになる

NVAではないVMの挙動を見る

  • [ブランチ間:無効]の状態で、NVAではない(BGPでARSとピアを張っていない)VM(10.100.1.4)はクラウド側のVM(10.0.1.4)と疎通できるのかということ

  • ARSが存在するだけで周りのルーティングに影響を及ぼすのかを知りたい

    • ARSが存在しなければVPNGWで設定したBGPによって経路が見えるはず
  • Azure Portal上での経路としては普通に見えている

  • Ping試す...到達できない

AzureAdmin@ubuntu-onp:~$ ping 10.0.1.4
PING 10.0.1.4 (10.0.1.4) 56(84) bytes of data.
^C
--- 10.0.1.4 ping statistics ---
27 packets transmitted, 0 received, 100% packet loss, time 26628ms

おわり

  • FRRoutingとARSの間でBGPを張ったところで、FRRoutingからARSに経路を広報しないとあまり意味はない(検証という意味だと、ARSからどんな経路を受け取っているか確認できるので意義はあるのだが)
  • その辺の話はこちらの記事が参考になるはず

https://zenn.dev/microsoft/articles/forced-tunneling-with-ars-and-frrouting

GitHubで編集を提案

Discussion