先日とあるコミュニティイベントで執り行いました資料なしホワイトボードに殴り書きと言うライトニングトークの内容をまとめてみました。
ネタは Azure ネットワークルーティングのプラクティス、都合3回でお送りいたします。
1. VPN の絡んだネットワークにおけるルーティング
初回は VPN の絡んだネットワークにおけるルーティングの問題です、これ実際事例も多くて 1~2回 / 年くらいお見掛けします。
一般的な経路
まず VPN を経由した Azure とオンプレミス間の一般的な経路は下図のようになります。

このルートで HTTP をリクエストした際のパケットキャプチャが下記の通り。
とあたりまえですが普通に通ります。
非対称ルーティングの経路
ここからが本番 Azure → オンプレミスへの経路のみに Azure Firewall を介在させるカスタムルートを設定します。
図にするとこんな感じ。

Azure → オンプレミスの経路には Azure Firewall が入りますが、オンプレミス → Azure の経路には入らないルートの出来上がりです。
そしてこの経路での HTTP リクエストはタイムアウトします、その際のパケットキャプチャが下記の通り。
一般的な経路と違うのは Source 側ではキャプチャされている ACK が Destination 側ではキャプチャされていない点です、つまり経路上のどこかで ACK のみ落とされているように見えますね。
でこの ACK は当然 Azure Firewall で落とされている訳ですがこれをシーケンス図にすると、

と言う動きになっています、いわゆるステートフルインスペクションで ACK が落とされます。
Source 側だけ見たら3ウェイハンドシェイク確立しているようにも見えますので、事象だけ見るとなかなかわかりにくいですね。
ただ、
- 既定のルートを曲げるカスタムルートが存在する
- 通信できるネットワークと通信できないネットワークが混在する
が揃ったらファイアウォールよりも先に非対称ルーティングを疑ってまあ外れないかと思います。
非対称ルーティングの対処法
では最後に対処法を、この構成の場合はゲートウェイサブネットにカスタムルートをつけ仮想ネットワークへのネクストホップにAzure Firewall を指定することで非対称ルーティングを解消します。

描いてみれば何と言うことはないのですが、上記を典型に Bastion や Azure Firewall などのマネージドサービス系のサブネットは観点から漏れやすいので注意が必要ですね。
おまけ
ちなみに Azure Firewall の代わりに IP 転送を有効化した仮想マシンを使うと、
とステートフルインスペクションは行われず SYN + ACK が通っていなくても ACK が許可されます。
蛇足っぽい感じもしますが経路に介在するもの次第と言うところもあると言うことでした。
おわりに
改めてになりますがこの非対称ルーティング発生のケースは結構多いです。
更に VPN に関わらずとも同様の事象はポツポツ発生しますので、この機会にネットワークの基礎を学習してみると良いと思います。
第2回は「仮想マシンに複数 NIC をアタッチした場合のルーティング」の予定です。
本稿を読んでいただきありがとうございました!






