Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Networkについて調べてみた資料:少しブラッシュアップ済

YuYu
August 10, 2019

Azure Networkについて調べてみた資料:少しブラッシュアップ済

Azure が使用するネットワークについて、IaaSとPaaS/SaaSと言う分け方で色々整理してみた。

YuYu

August 10, 2019
Tweet

More Decks by YuYu

Other Decks in Technology

Transcript

  1. BLUECORE.NET Azureのネットワークって • Azureリソースを色々組む過程で不思議な物をよく目にした。 • 普通のネットワークだとなかなか見ないことが起きていたり、例えば以下のようなケース。 172.29.100.0/24 172.30.100.0/24 実はP2Pで通信を してるみたい。

    送信元MAC 送信先MAC 送信元IPADDR 送信先IPADDR 00:0d:3a:40:17:c4 12:34:56:78:9a:bc, 172.30.100.5.ssh 172.29.100.4.49282: b0:aa:77:66:52:3c 00:0d:3a:40:17:c4, 172.29.100.4.49282 172.30.100.5.ssh: 00:0d:3a:40:17:c4 12:34:56:78:9a:bc, 172.30.100.5.38534 168.63.129.16.http: 12:34:56:78:9a:bc 00:0d:3a:40:17:c4, 168.63.129.16.http 172.30.100.5.38534: 直接フレームが 送られている 外部アドレスは ルーター経由 おもしろそうなので、色々調べてみた。
  2. BLUECORE.NET IaaSにおける主要構成要素 • VNET :仮想ネットワークリソース • Azure Gateway :1つのVNETに恐らく2つ(VRRP?)払い出されるゲートウェイ •

    アドレス空間 :対象VNET内で使用する広範囲のCIDR空間 • サブネット :アドレス空間から切り出されるCIDR空間 • VNET Peer :異なるVNET間をピアリングして経路交換をする方法。リージョンをまたぐ場合は グローバルピアリングと言うらしい。 • NSG :パケットフィルタリソース • Azure VM :言わずとしれた仮想サーバリソース。Hyper-Vベースぽい。 • VPN Gateway :VPN接続用のゲートウェイ • Local Gateway :オンプレミス側で構成されるルーターの情報 • NWインタフェース :VMのアドレス管理と経路提供をするリソース • ユーザー定義ルート :カスタマイズされた静的ルート情報 • ExpressRoute Gateway :ExpressRouteにおいて、Private Peerを構成する際に使うゲートウェイリソース • Load Balancer :L4ロードバランサ。TCP/UDP単位でのロードバランシングが可能。 • Application Gateway :L7ロードバランサ。WAF機能を使用することも可能。 V1とV2があり、V1はIISベース。V2はNginxベースらしい。 • Azure Global Network :MicrosoftにおけるAzure関連のリソースを収容するGlobalアドレス空間 なんとICMPが通らなくなっているのが普通で、pingを打っても疎通しない。 (ただし、NSGの構成次第では現在ならばReplyが返ってくるようになってる) なお、Microsoftとしては、当該ネットワークは「内部ネットワーク」の位置づけらしい。
  3. BLUECORE.NET VNETとはなにか? • VNET=Azure Gatewayと考えるとわかりやすいかも • IaaSリソースの中核と言ってもいい • Azure Gateway=SDNルーター=すべてのサブネットの中核

    • 第4オクテットは「.1」となる。他リソースの開始が「.4-」となっているため、Gatewayは2台からなるVRRP構成 に似たSDNルータが用意されているものと予想される。 • Azure GatewayのMACアドレスは不思議なことに12:34:56:78:9A:BC。 • サブネットはゲートウェイサブネットと通常のサブネットで構成される • ゲートウェイサブネットはVPN関連専用 • インターネットゲートウェイは見えないけど存在しており、デフォルトゲートウェイになっている。 ゲートウェイサブネット サブネット THE INTERNET Azure Gateway
  4. BLUECORE.NET Azure VMとネットワークインタフェース • Azure VMはHyper-Vベースの仮想マシン • Hyper-V NICとして認識される •

    つまりは、Hyper-V NICのドライバがないとVMは実質動かない。注意が必要。 • 設定はDHCPによる動的取得が基本となっている • ネットワークインタフェース • Azure VMにくっついてアドレスを払い出す・通信する • サブネットやNSGに関連付けを行い、ネットワーク制御を主体的に行っている • IPアドレスの設定はこのリソースを用いて行う(デフォルト動的:固定可能) • Public IPアドレスの割当はこのリソースを用いて行う サブネット 仮想マシンNICはHyper-V NICとして認識 ネットワークインタフェース:アドレスの設定はこちら
  5. BLUECORE.NET NSGにおける注意事項 • NSGが見えるネットワークはVNETだけ。 • Public IPアドレス宛の通信は、その通信がIaaS VNETに入った段階のものが検査される • Public

    IPに対する通信のルールを登録しても、そのルールは使用されない。下記例の場合、 DestinationはVMのプライベートIPアドレスを指定したルールを書く必要がある。 • 最近ようやくICMP通信許可がルールとして書けるようになった。 Public IP (DNAT) Azure Global Application Gateway (V1/SKU:S) VNET +Routing Table Public IP (DNAT) Azure Global Application Gateway (V1/SKU:S) VNET +Routing Table こうじゃない こう。
  6. BLUECORE.NET ユーザ定義ルート(UDR) • 所謂Static Route Tableのようなもの。 • ここで定義した経路は何よりも優先して採用される。 • 関連付けをサブネットに対して行うことにより、経路制御の範囲内に収め

    ることもできるし、逆に関連付けを外すことで独立させることもできる。 THE INTERNET UDR: ユーザがカスタマイズ したルート情報を定義
  7. BLUECORE.NET VNET内の有効ルート ソース 状態 アドレスのプレフィックス 次ホップの種類 次ホップの種類の IP アドレス ユーザー定義ルート名

    既定 アクティブ 172.29.0.0/16 仮想ネットワーク 既定 アクティブ 172.30.0.0/16 VNET ピアリング 仮想ネットワーク ゲートウェイ アクティブ 192.168.230.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.231.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.239.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.237.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 172.25.230.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.200.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 10.5.0.0/16 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 10.240.0.0/16 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 10.96.0.0/12 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.220.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.100.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 仮想ネットワーク ゲートウェイ アクティブ 192.168.90.0/24 仮想ネットワーク ゲートウェイ (仮想GatewayのPublicIP) 既定 アクティブ 0.0.0.0/0 インターネット 既定 アクティブ 10.0.0.0/8 なし 既定 アクティブ 100.64.0.0/10 なし 既定 アクティブ 172.16.0.0/12 なし 既定 アクティブ 192.168.0.0/16 なし 既定 アクティブ 23.98.56.0/26; 52.239.146.0/23, 104.214.152.16/28, 104.214.152.176/28, 104.215.32.16/28, 104.215.32.32/28, 104.215.32.64/27, 104.215.35.32/27 VirtualNetworkServiceEndpoint 既定 アクティブ 13.73.8.16/28; 13.73.8.32/28, 20.38.116.0/23, 23.98.57.64/26, 40.115.169.32/28, (ぼちぼち多いので以下略) VirtualNetworkServiceEndpoint 既定 アクティブ 13.67.50.224/29; 13.75.48.16/29, 13.75.80.16/29, 20.190.128.0/26, 20.190.128.64/28, 20.190.128.128/27, 20.190.128.160/29, 20.190.129.0/26, …(超絶に多いので以下略) VirtualNetworkServiceEndpoint 動的ルート: VNET PeeringやVPN Gatewayの経路広報等 によるもの システムルート: サブネットに自動付与 されるもの 優先度は最も低い Service Endpoint: 対象サブネットに対し て有効にすると、経路 伝搬が行われる
  8. BLUECORE.NET ルーティング • デフォルトでは以下のようになっている • デフォルトゲートウェイはインターネットへ向いている • CGNアドレスはブラックホールに向いている • VPNを構成している場合、その経路は動的経路として取り込まれる

    • サービスエンドポイントを構成した場合、その経路はService Endpointを経由するようPaaS/SaaSリソースのグローバルアドレス経 路すべてが登録される。 • UDRを入れる意味 • 別途ファイアウォールアプライアンスを構成し、必ずそこを通るよう 構成したい • 同じVNET内だが、特定のサブネット間の通信を禁止したい
  9. BLUECORE.NET PaaS/SaaSにおける主要構成要素 • AppService :アプリケーションを動作させるコンテナリソース。サーバレスの中核。 • WebApp :Webアプリケーションを動作させるためのコンテナリソース • FunctionsApp

    :一括処理・逐次処理に重きをおいたコンテナリソース • Azure Docker Repositry :AppService(Docker方式)を使用する際に連携するイメージリポジトリ • Application Insights :AppServiceのメトリック・ログ解析をするシステム一式 • Azure Storage :オブジェクトストレージリソース • DNSゾーン :ドメインを収容するDNSゾーン • Traffic Manager :それ自体はDNSサービスに近い。オリジンサーバを監視して定められたルールに従い 振り分け先のIPアドレスを回答する • LogAnalytics :AppService以外のログ分析はこのリソースを用いる。  基本的にこれらのリソースはグローバルIPアドレスと特定のFQDNが割り当てられている  グローバルIPアドレスは動的あるいはプール型であることが多い  それぞれのリソースにIP制限機能あるいはファイアウォール機能が搭載されている  ExpressRouteは、Microsoft Peerを使用して経路情報の提供を受ける  最低限の可用性は提供されたサービスが多い  ローカル冗長レベルと考えられる。グローバルリソースの場合はGeo冗長されていると考え られる。
  10. BLUECORE.NET Azure WebAppにおけるネットワーク構造 • WebAppはIaaSとは別ネットワークで構成されていると推測される • Azure Gatewayのような、統合管理されたロードバランサーが存在する(フロントエンド)と呼ばれ る。 •

    実際のコンピューティング処理をするのはコンテナであり、バックエンドワーカーと呼ばれる。 • ASEを使用する場合は全く動かし方が変わるので、このページの内容はあくまで 「Free/Shared/Basic/Standard/Premium」を対象として述べるものとする。 Azure Global Load Balancer Deployment Repositry Containers Storage • 受付IPアドレスは半固定で1つ提供される。(フロントエン ドに割り当て) • 待受ポートは予め定められており、変更は不可。 • ワーカーから出るアドレスはいくつかのアドレス(4-10個 ぐらい)がプールされており、それらのいずれかから発信 される。 • デプロイセンターにてGitを選択した場合、リビジョン監 視を行っており、リビジョンアップを検出するとすべての コンテナに配信した後、コンテナを再起動する。 • デプロイスロットを構成すると、恐らくSNIによる振り分 けを使用して同じ環境内のコンテナインスタンスを追加す る構成になる • Inbound AddressとOutbound Addressが同じになる
  11. BLUECORE.NET WebApp間の通信はどうなる? • 意外とすんなり想定通りの通信を行った。 • FQDNアクセスでCurlコマンドを実行 • IPアドレス制限を加えた場合 ->403応答 •

    IPアドレス制限を解除した場合 ->200応答 Microsoft Backbone OutboundIP Inbound IP • App Serviceプラン及び リージョンに関係なくこの 経路で通信が行われること を確認している。
  12. BLUECORE.NET Azure WebApp/Azure Storage間の通信 • 不思議とこれだけ扱いが違う • 同一リージョン間に限り、想定外のネットワークで通信する。 • これにより、Azure

    Storage側の通信制限機能が使えなくなる • 診断ログの送信ができなくなる • Functionsの場合、システムストレージとして指定できない(フリーズするか起動失敗する) • 回避策は基本的にない(なお、IsolatedならばVNETとの関連付けが容易なのでOK) • 異なるリージョンにストレージを置くことが強いて挙げれば唯一の回避策 • 恐らくは、以下のような経路で通信してるのではないかと考えられる。 • ユーザから見えないネットワークを同一 リージョン間通信では使用しているよう に見える。 • フロントを経由する場合はAzure StorageのIP制限は有効だが、バックエ ンド経由のアドレスは不明であるため、 この指定が行えない ⇒結果としてAzure StorageのIP制限機 能が使用不能となる。
  13. BLUECORE.NET VNET統合 • IaaS->PaaSに対する通信を明示的に指定する方法 • WebAppを特定のサブネットに適用する • WebAppに対する通信経路が関連付けたサブネット⇒サービスエンドポイン トになる。 •

    AppGateway->WebApp通信をIaaS経路経由にすることが可能になる Microsoft Backbone Service Endpoint 関連付け つまりはグローバル空間に出ずとも IaaSリソースがWebAppに接続できる
  14. BLUECORE.NET Azureネットワーク構成例 svc Public IP (DNAT) THE INTERNET Application Gateway

    (V1/SKU:S) VNET +Routing Table VPN Gateway VPN Gateway Route reflector Container Environment On-premise Azure DNS Traffic Manager Azure CDN (Premium Verizon) Internet Router IPS/Firewall • と言うか、実は2018年秋頃 ~2019年春頃にかけて動か してた自宅の構成。 • このインフラでブログサイ トを動かしていました。 • CDNはSaaSですが、 Edgecast(Verizon)のOEM サービスなので、インター ネットに接続する形で記載 しています。 Azure Global Network