ここ半年で Azure のネットワーク機能が進化しすぎて、正直ついていけません。
備忘とリンク集を兼ねて各種機能・接続形態を整理しておきます。(注釈がない限り ARM が対象です)
※ 2016/09/18 時点の情報に基づいて書いていますが、Azure の進化が速すぎるので記載が正しくない可能性が多分にあります。
Azure Network 関連機能
ざっと書き出すと、以下が Azure Network 関連機能ですかね。
- 仮想ネットワーク / Virtual Network / VNet
(サブネット、ゲートウェイ サブネットとか) - 仮想ネットワーク ゲートウェイ / VNet / VPN / ExpressRoute Gateway
(Azure で VPN / ExR を使う際のソフトウェア ルーター) - ローカル ネットワーク ゲートウェイ / Local Network Gateway
(オンプレ VPN 機器の IP / アドレス空間を指定) - 接続 / Connection
(Azure / オンプレのゲートウェイを繋ぐ設定) - ExpressRoute 回線 / Circuit
(ExR の物理回線のことで、個々の VNet とリンクします) - ロードバランサー / Azure Load Balancer / Internal Load Balancer
(L4 のロードバランサーで、フロントエンドが Public IP か Private IP かで名称が別) - アプリケーション ゲートウェイ / Application Gateway
(IIS の ARR ベースの L7 ロードバランサー) - ネットワーク セキュリティ グループ / Network Security Group / NSG
(NIC / Subnet に設定できる Firewall 機能) - ユーザー定義ルート / User Defined Route / UDR
(Subnet に Static ルートを設定するための機能) - NIC
(VM サイズによって、NIC の上限が異なるので注意) - Public IP
(静的 / 動的が選べますが、用途によっては静的にできないので注意) - DNS
(ネームサーバー的なやつ) - CDN
(Akamai 的なやつ) - Traffic Manager
(DNS の仕組みを使った負荷分散機能)
ポータルに項目としてあるやつを書き出したつもりですが、これで網羅できてますかね…。(まだありそう)
Azure 内で VNet 同士を繋ぐ方法
最近 VNet Peering が増えたので、ざっくり三通り?
- Site-to-Site / S2S VPN (静的 / 動的)
- VNet to VNet 接続 (VPN の一種)
- VNet Peering (バックボーンでよしなに接続)
Azure とオンプレを繋ぐ方法
オンプレとの接続も三通り。
- ExpressRoute / ExR
- Site-to-Site / S2S VPN (静的 / 動的)
- Point-to-Site / P2S VPN (VPN クライアントを入れるタイプ)
ただ、BGP の有無とか、Active-Active とか、オプションを組み合わせると膨大に…。
原則として Azure の VNet Gateway は IPsec のパラメーターをいじれないので、オンプレ側を調整して繋ぎましょう。(繋がらない・繋がってもすぐ切れる場合は、オンプレ側の VPN 機器で設定ミスってるか、ファームが古いか、そもそも対応してない可能性大で、Azure はほぼ問題ないです。ずっと繋がってたのが突如切れた場合を除いて。)
ExpressRoute の種類
ExpressRoute にも L2 / L3 の二種類のモデルあります。
- L2 モデル
国内だとおそらく Equinix のみが提供中で、L2 の名の通り回線設備のみを提供してくれます。
ルーターのコンフィグ (経路制御とか) は全部自前でやる必要があるので、BGP が喋れない人には無理。
- L3 モデル
Equinix 以外の各社はルーターの面倒も見てくれる L3 モデルのはずです。(IIJ, Softbank, NTT Com, etc…)
それから、ExpressRoute は Azure のエッジ ルーターとオンプレ側のルーターを繋ぐ部分なので、上図の通り Azure エッジ ルーターと各 VNet にある Gateway をリンクする必要があります。リンクできる VNet は 10 個までです。(Premium アドオンが有効な場合はそれ以上)
同じジオ (日本だと東・西日本) 内の VNet にはバックボーン経由でリンクが可能で、その他にも費用が二倍かかりますが東・西日本でそれぞれ ExpressRoute 引いたりも多分できるはず。
S2S VPN の種類
VPN は Gateway が二種類あります。
- 静的 / ポリシー ベース / IKEv1
- 動的 / ルート ベース / IKEv2
静的だと 1 拠点としか接続できないので、基本的には動的で。動的の場合には Basic / Standard SKU で 10 拠点、High Performance で 30 拠点まで行けます。ただし、オンプレミス側の VPN 機器が動的に対応していない場合は静的を使うしかないです。(対応状況はこちらおよび各ベンダーのページを確認しましょう。なお、国内でよく使われているヤマハの RTX は動的未対応です。)
それから、気づけば VPN でも BGP が喋れるようになりました。下図のように組めば、切断が発生しても BGP で経路が再計算されて、迂回経路を通るようにできます。(多分) 詳しくは図の拝借元でもあるこちらのドキュメントを参照。
さらに、Azure PowerShell 2.1.0 からは Active-Active というパラメーターが追加されています。まだコマンドのオプションがこっそり用意された段階で、プレビューにすらなっていないので使えないようですが、コマンドのエラーを見ると High Performance SKU 限定の機能のようです。通常は Active-Standby で単一の Public IP を持っている VPN Gateway (2 台) を、Public IP を一つずつ持たせて、Active-Active にできるようですね。(なんか発表されたら後日書き足します。)
VNet Peering の構成
まだ Public Preview 中ですが、Azure の “同一リージョン内” の VNet を VPN なしに接続できるのが VNet Peering です。Azure の基盤は NVGRE を使っているので、SDN 側でよしなに繋いでくれるんでしょう。
いろいろ組み合わせがありますが、現状以下の模様。ARM 同士を繋ぐ場合は、双方向で Peering が必要です。
- 同一サブスクリプション内の ARM 同士: OK
- 同一サブスクリプション内の ARM と ASM: OK
- 異なるサブスクリプションの ARM 同士: 同一 AAD 配下なら OK (?)
- 異なるサブスクリプションの ARM と ASM: NG
- ASM 同士: NG
この辺は「焦げlog」さんが詳しいです。
- VNet Peering for Azure Virtual Network が Public Preview になりました
- Azure ポータルから Azure リソース マネージャーで作成された VNet 間の VNet Peering を作成する (同一サブスクリプション)
- Azure ポータルから Azure リソース マネージャーで作成された VNet と Azure 管理サービスで作成された VNet 間の VNet Peering を作成する (同一サブスクリプション)
- Azure ポータルから Azure リソース マネージャーで作成された VNet 間の VNet Peering を作成する (異なるサブスクリプション)
- Azure リソース マネージャーで作成された VNet と Azure 管理サービスで作成された VNet 間の VNet Peering (異なるサブスクリプション) は作成できません
- ネットワーク セグメントが重複している状況で VNet Peering が構成できるかどうかを確認してみました
- VNet 内で作成したアドレス空間、サブネット間の通信について確認してみました
また気まぐれで書き足します。