↪️

Azure VM(NIC)のIP転送によるパケットフォワーダを5分で作成する

2023/02/17に公開

Azure上でパケットフォワーダをサクッと立てたいことがあると思います。Hub-Spoke構成のネットワークはSpoke間にピアリングを張らないことが多いため、相互接続にはHub上にパケットフォワーダが必要です。PaaSを使うパターンとしてAzure Firewallをそのままパケットフォワーダとして使うことがよくあります。また、NVAがある場合も同様です。ただ、Azure Firewallは高い、NVAは構成が面倒、、というデメリットがあるのでシンプルにVMでパケットフォワーディングの気持ちを味わう方法を紹介します。

ネットワーク環境

これもシンプルなHub-Spoke型の環境を用意

  • イメージ図
  • Hub-Spoke1/Hub-Spoke2にそれぞれVNet Peeringを作成
  • pingによる疎通確認も任意で実施
  • この状態だとSpoke1->Spoke2はping通らない

VM作成

  • Hub/Spoke1/Spoke2それぞれにUbuntuのVMを立てる

ルートテーブル作成

  • Spoke2のアドレス範囲に対するネクストホップを仮想アプライアンス(IPはHubのIP転送VM指定)とするルートを作成
  • Spoke1のテストVMがデプロイされているサブネットに割り当てる
  • Spoke1のアドレス範囲宛ての通信に関するルートテーブルも同様に作成し、Spoke2のサブネットに割り当てる必要がある(戻りの経路のため)
  • 今回は面倒なので同じルートテーブルに両側記載した

NIC設定

  • NICのIP構成からIP転送を「有効」に変更して保存
  • これにより、Azure側の自分宛ではないパケットをドロップするというフィルタが解除される

Hub VM側OS設定

  • HubのVMにSSH接続
  • 管理者権限で/etc/sysctl.confを開く
  • net.ipv4.ip_forward=1のコメントアウトを外し、保存
    • /sbin/sysctl -w net.ipv4.ip_forward=1のコマンドでも行けるっぽい
  • HubのVMを再起動し、設定の反映

Spoke1->Spoke2への疎通確認

  • Spoke1のVMにSSH
  • Spoke2のVMにping
  • 応答確認

おわり

  • つまるところ、NICのIP転送の有効化、OS内でのIP転送許可設定、ができればすぐに味わえる
GitHubで編集を提案
Microsoft (有志)

Discussion