はじめに
Azure Route Server の NEXT-HOP 属性に関するドキュメントが公開されました。
Route Server が NEXT-HOP 属性をサポートすると、実現できる構成が増えます。その一つが Secured Virtual Hub なしで実現する Azure Firewall 向けのデフォルトルートです。Route Server に対してネクストホップが Azure Firewall のプライベート IP アドレスなデフォルトルートを広報すると、Route Server は素直にそのルートを VNet に広報してくれます。その結果、Azure Firewall 向けのデフォルトルートを UDR で設定しなくても、仮想マシンからインターネットへの通信が Azure Firewall に向かいます。
さらに、Route Server の Branch-to-branchを有効にすれば、この Azure Firewall 向けのデフォルトルートを VPN Gateway/ER Gateway 経由でオンプレミスにも伝搬できます。オンプレミスから Azure 経由でインターネットにアクセスしたい要件はなかなかないかもしれませんが、ER Gateway の先につながる Azure VMware Solution に対して Azure Firewall 向けのデフォルトルートを広報できるとなると夢が広がりそうです。
それではいつも通り、「百聞は一見に如かず」ということで試した結果をまとめます。
構成
今回の動作を確認した構成は次の通りです。TestVM01 と TestVM02、FortiGate の3台を利用して、自 VNet と VNet Peering、S2S VPN の3つのポイントで意図したルートが聞こえてくるかを確認します。
BGP VM の設定
Ubuntu に Quagga をインストールして BGP ルータとします。設定は次の通りです。
ネクストホップ指定なし
ネクストホップを指定しないと、Quagga が Route Server に広報する経路のネクストホップは自身のプライベート IP アドレスになります。
各ポイントのルーティングは次の通りです。ネクストホップが Quagga のプライベート IP になっています。
ネクストホップ指定あり
Route map を利用して、Azure Firewall のプライベート IP アドレスをネクストホップに指定します。
すると。Quagga が Route Server に広報する経路のネクストホップが Azure Firewall のプライベート IP アドレスになります。
各ポイントのルーティングは次の通りです。ネクストホップが Quagga のプライベート IP になっています。
デフォルトルートが Azure Firewall を向いているので、TestVM からインターネットにアクセスしようとすると Azure Firewall でブロックされます。Quagga から広報したデフォルトルートが動作している証拠です。
注意点
Azure Firewall 向けのデフォルトルートを受け取りたくないセグメントには、Route Server にデフォルトルートを広報する前に、「UDR でデフォルトルートを Internet に向けたルートテーブル」か「ルート伝搬を無効にしたルートテーブル」を割り当ててください。Route Server に広報したルートは問答無用で VNet に伝搬されます。その結果、ネクストホップが Internet なデフォルトルートを必要とするシステムは正常に動作しなくなってしまいます。例えば、Azure Bastion Subnet に Azure Firewall 向けのデフォルトルートが伝搬すると、Azure Bastion は動作しません。
また、Route Server にデフォルトルートを広報する VM の可用性にも注意が必要です。この構成の場合、BGP ルータな VM が停止すると