🔥
VM > Azure Firewall > オンプレプロキシ のルーティング構成
本記事はこちらの続きといえば続きです
前々回: 強制トンネリング環境で一部通信をAzure Firewall経由で外に向ける構成について
前回: GatewaySubnetに0.0.0.0/0のUDRを無理やりアタッチしてAzure上での強制トンネリングを実現する
背景
- 前々回、前回からの拡張検証
- 正確には前々回の構成からの拡張と思っていい
- 前々回の構成により、PACファイルを利用することでオンプレプロキシ経由とAzure Firewall経由のトラフィックを分けることが可能であることを検証した
- その際、VMからオンプレプロキシへのトラフィックは直接流れるような構成だった
- 今回はオンプレ-Azureの間に必ずAzure Firewallが介在するパターンとして検証する
構成
- 図の赤線の接続をしたい
変更点
ルートテーブル
- Windows VMが属するサブネットのルートテーブルに
オンプレミスアドレス空間 > Azure Firewall
を追加-
0.0.0.0/0 > Azure Firewall
のみの場合、BGPで広報されるオンプレアドレス空間はより具体的なアドレスであるためVM > オンプレは直接接続となってしまう - そのBGPの経路をAzure Firewallに向くようにUDRで上書きする必要がある
- Azureのルートの優先度はUDR>BGP>システムルート
-
- クラウド側GatewaySubnetに
クラウドアドレス空間 > Azure Firewall
を追加- 戻りの経路もAzure Firewallを経由させるため
- これがないと非対称になるためICMPは通るがTCPが通らない状態となる
- ハマりポイント
- AzureFirewallSubnetのルート伝達を有効化
- Azure Firewallがパケットをオンプレにフォワードする必要がある
- 前々回の構成だとルート伝達がOFFになっていた
ネットワークポリシー
- Azure Firewallのネットワークルールを追加
- オンプレ-クラウド間の通信がAzure Firewall経由となるためネットワークルールによる許可が必要
- 戻りの通信についてはステートフルなので記述不要
疎通確認
- 上記変更を加えた上でのアクセスができるかどうか確認
VM > Azure Firewall > Internet
- プロキシ除外によって
return DIRECT
となっているものはAzure FirewallからInternetに抜けていくはず - 今回はこのようなPACファイルを利用しているため確認君+(https://env.b4iine.net/)にアクセスしてIPを確認
function FindProxyForURL(url, host) {
if (isPlainHostName(host) || dnsDomainIs(host, ".b4iine.net")) {
return "DIRECT";
} else {
return "PROXY 10.100.1.4:3128";
}
}
- 確認君+
- Azure FirewallのPIP
VM > Azure Firewall > Proxy > Internet
-
まずはプロキシサーバとのICMP/TCPによる疎通確認 > OK
-
クラウド側VMから確認君+以外の任意のサイトへアクセス > OK
- IPもプロキシサーバのPIPになっている
- IPもプロキシサーバのPIPになっている
備考
- GatewaySubnet > Azure Firewallのルートテーブル作り忘れがち
- Azure Firewall経由になると非対称のTCPコネクションが張れない
- ICMPが通ってるのにTCP繋げない場合は大体これが原因
- GatewaySubnetのルートテーブルを削除すると、Proxy経由でのアクセス不可になる事からも確認できる
- GatewaySubnetとかAzureFirewallSubnetで見えているeffective Routeがどこかで見れるようになればもっとトラシュー楽なのになぁと思ったり
GitHubで編集を提案
Discussion
Azure Firewall の勉強になりました📖
こちら大変たすかりました、ありがとうございます。