⛩️

Azure VPN Gatewayをパケットフォワーダとして動作させてみる

2023/06/20に公開

モチベ

  • 実は、VPNGWもパケットフォワーダとして利用できるらしい
  • 知らなかったので、試してみる
  • 恐らく、Sopkeからのデフォルトルートの向き先をUDRでVPNGWにしておけばよいのではという想定
  • Spoke(Ubuntu)-Hub(VPNGW)-Spoke(Ubuntu)の構成を作る

※動作検証なので推奨かどうかの議論は一旦度外視です(少なくとも推奨ではないと思われる)

検証

VNET x3 の作成

  • vnet-hub: 10.0.0.0/16, GatewaySubnetを作成
  • vnet-spoke-001: 10.1.0.0/16
  • vnet-spoke-002: 10.2.0.0/16

VPNGWの作成

  • vnet-hub/GatewaySubnetにVPNGWを作成
  • 一旦BGPは無効で作成
  • もうちょっと短時間で作れてほしい

VM x2の作成

  • 各SpokeにUbuntuのVM1台ずつ立てる
  • vm-spoke-001(vnet-spoke-001)
  • vm-spoke-002(vnet-spoke-002)

NSGの作成

  • SSH用のNSGを作成
  • VMが存在するそれぞれのサブネットに割り当て

ピアリングの作成

  • リモートゲートウェイを利用する設定を忘れない

疎通テスト-1

  • vm-spoke-001にSSH接続し、vm-spoke-002にping
  • もちろん通るわけない
AzureAdmin@vm-spoke-001:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.
^C
--- 10.2.0.4 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7152ms

ルートテーブル x1の作成

  • UDRを作成してデフォルトルートをVPNGWに向ける
  • 今回はデフォルトルートを向けるだけなので、共通のものを使いまわす

[ネクストホップ:仮想ネットワークゲートウェイ]の場合

  • デフォルトルート用を追加

疎通テスト-2

  • この状態でvm-spoke-001にSSH接続し、vm-spoke-002にping
AzureAdmin@vm-spoke-001:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.
64 bytes from 10.2.0.4: icmp_seq=1 ttl=63 time=5.91 ms
64 bytes from 10.2.0.4: icmp_seq=2 ttl=63 time=3.83 ms
64 bytes from 10.2.0.4: icmp_seq=3 ttl=63 time=4.08 ms
64 bytes from 10.2.0.4: icmp_seq=4 ttl=63 time=3.90 ms
^C
--- 10.2.0.4 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6007ms
rtt min/avg/max/mdev = 3.695/4.353/5.906/0.720 ms
  • VPNGW経由で本当に疎通できた、、、!!!

[ネクストホップ:仮想アプライアンス]の場合

  • VPNGWのIPアドレスを取得する必要がある
  • よって、ネクストホップ[仮想ネットワークゲートウェイ]とした状態で、tracerouteをとる
AzureAdmin@vm-spoke-001:~$ traceroute 10.2.0.4
traceroute to 10.2.0.4 (10.2.0.4), 30 hops max, 60 byte packets
 1  10.0.1.4 (10.0.1.4)  2.899 ms * *
 2  10.2.0.4 (10.2.0.4)  5.638 ms  5.622 ms *

  • これを見る限り、GatewaySubnetの若番で応答していそうなので、そのIPをUDRに入れる

疎通テスト-3

  • この状態で、再度vm-spoke-002向けにpingを投げる
  • きちんと返ってきた
  • ただ、このIPは変わるかもしれない?ので[仮想ネットワークゲートウェイ]で抽象化しておくのが無難そう
AzureAdmin@vm-spoke-001:~$ ping 10.2.0.4
PING 10.2.0.4 (10.2.0.4) 56(84) bytes of data.
64 bytes from 10.2.0.4: icmp_seq=1 ttl=63 time=2.19 ms
64 bytes from 10.2.0.4: icmp_seq=2 ttl=63 time=2.36 ms
64 bytes from 10.2.0.4: icmp_seq=3 ttl=63 time=2.98 ms
64 bytes from 10.2.0.4: icmp_seq=4 ttl=63 time=2.31 ms
^C
--- 10.2.0.4 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.189/2.460/2.981/0.307 ms

おわり

  • VPNGW自体をパケットフォワーダとして利用するというのは意識外だった
  • Azure Firewallと違ってただフォワードするだけなので、利用ケースはだいぶ限られそうな気がしている
  • Azure Firewall立てる前の疎通テスト用としては使えそうな印象?
GitHubで編集を提案
Microsoft (有志)

Discussion