Azure Administrator対策「仮想ネットワークの設定と管理」

はじめに

AZ-103「Azure Administrator」対策として、Microsoft Learnなどを要約したものを記載。


ウェルノウンポート

以下のポートに関連する問題が試験で問われるケースがあるため、各ポートの用途を理解しておく必要がある。

プロトコル ポート 備考
HTTP 80 Webアプリケーションに接続する場合などに利用
HTTPS 443 Webアプリケーションに接続する場合などに利用
SSH 22 仮想マシンへのSSH接続時に使用
DNS 53 DNSサーバへの接続に利用
SMB 445 ファイル共有をマウントする場合に使用
RDP 3389 仮想マシンへのリモートデスクトップ接続時に使用
SQL over TCP 1443 RDBへの接続時に利用

仮想ネットワークの制限事項

仮想ネットワークと異なるリージョンおよびサブスクリプションに属するリソースに、仮想ネットワークを割り当てることはできない。

例えば、仮想ネットワークと異なるリージョンに属するVMやNSGを、仮想ネットワーク上に割り当てることはできない。

ただし、異なるサブスクリプションおよびリージョンに存在する仮想ネットワークに接続することはできる。

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-vnet-plan-design-arm#regions

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq#can-a-vnet-span-regions

仮想ネットワークピアリング(VNet ピアリング)

Azure上の異なる仮想ネットワーク間を接続させる機能。

ピアリングされた仮想ネットワークは、見かけ上1つのネットワークとして機能する。

グローバルVNetピアリング

異なるリージョンに属する仮想ネットワークの間の仮想ネットワークピアリングのこと。

主な利用条件・制限事項など

ピアリング接続の可否に関する制限事項

  • 異なるリージョンの間の仮想ネットワークはピアリング可能

  • 異なるサブスクリプションの間の仮想ネットワークはピアリング可能

    ※ ポータルによる操作の場合、条件によってピアリング設定ができないケースがある

  • Resource Managerを使用してデプロイされた2つの仮想ネットワークはピアリングできる

    ※ ピアリングする仮想ネットワークごとにピアリングを構成する必要がある

  • Resource Managerと、クラシックデプロイモデルを使用してデプロイされた2つの仮想ネットワークはピアリングできる

    ※ VPN Gatewayを使用が必要

  • IPアドレス空間が重複した仮想ネットワーク同士はピアリングできない

  • クラシックデプロイモデルを使用して作成された2つの仮想ネットワークはピアリングすることはできない

その他制限事項

  • ピアリングが機能するには2つの仮想ネットワーク間で双方向にピアリングが有効にされている必要がある

  • ピアリング後に仮想ネットワークのアドレス範囲の追加および、削除はできない

  • ピアリングは2つの仮想ネットワーク間でのみ確立される

    ※ 例

    1. V-Net1 と V-Net2をピアリング

    2. V-Net2 と V-Net3をピアリング

    ⇒ V-Net1とV-Net3の接続は自動的は確立されず、V-Net1とV-Net3のピアリングを別途設定する必要がある

  • 仮想ネットワーク内のリソースは、グローバルVnetピアリングされた仮想ネットワークのベーシック内部ロードバランサーのフロントエンドIPアドレスと通信することはできない

    ※ スタンダードロードバランサーの場合はVNetピアリングとグローバルVnetピアリング両方に対応

  • ピアリングされた仮想ネットワークでは、リモートゲートウェイを使用でき、ゲートウェイ転送を許可できる

  • ピアリングされた仮想ネットワークの名前解決するにはAzure DNSまたはカスタムDNSを使う必要がある

  • ピアリングとゲートウェイを併用している場合、仮想ネットワーク間のトラフィックは、ゲートウェイではなく、ピアリングを介して流れる


VPNゲートウェイ

Azure上のネットワーク(VNet)と他のネットワーク(オンプレミス上のネットワーク等)をVPN(IPsec)で暗号化して接続する仮想ネットワークゲートウェイサービスの一つ。

各仮想ネットワークに作成できるVPNゲートウェイは1つだけ

VPNゲートウェイはAzure Availability Zonesにデプロイすることが可能で、 高可用性の仮想ネットワークゲートウェイを作成することができる。

https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-about-vpngateways

仮想ネットワークゲートウェイ

仮想ネットワークゲートウェイは2台以上のゲートウェイVMで構成される。

ゲートウェイVMには、ルーティングテーブルが含まれ、特定のゲートウェイサービスが実行される。

仮想ネットワークゲートウェイの種類

VPN

仮想ネットワークゲートウェイの種類が “VPN ゲートウェイ” であることを示す。

ExpressRouteゲートウェイ

仮想ネットワークゲートウェイの種類が “ExpressRouteゲートウェイ” であることを示す。

ゲートウェイサブネット

ゲートウェイVMをデプロイするために作成するネットワークのこと。

ローカルネットワークゲートウェイ

接続先のオンプレミス側のゲートウェイのネットワーク情報(IPアドレス等)を定義を設定するゲートウェイ。

クラウドからオンプレミスネットワークへのネットワークトラフィックは、 このゲートウェイを介してルーティングされる。

VPN接続方式

https://techinfoofmicrosofttech.osscons.jp/index.php?VPN%20Gateway

ポイント対サイト接続 (Point to Site)

端末対拠点接続。

クライアント端末から直接、Azure上のVPNゲートウェイに対してVPN接続を行う。

各クライアント端末にはVPN接続用のクライアント証明書がインストールされている必要がある。

https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-resource-manager-portal

サイト間接続 (Site to Site)

拠点間接続。

拠点(サイト)のLAN同士をVPN接続。

AWS環境のVPN-GWとAzure環境のVPN-GWを接続、オンプレミス環境とAzureのVPN-GWを接続する場合などに利用する。

https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal#3-create-the-local-network-gateway

VPNゲートウェイの通信方式

ポリシーベース

暗号化する必要があるパケットのIPアドレスを静的に指定する。

通常、パケットフィルタリングを実行するファイアウォールデバイスで構築される。

従来のオンプレミスVPNデバイスとの互換性を保つ場合になどに使用し、サイト間接続で使用される

ルートベース

ゲートウェイに接続するデバイスが多数になる場合に使用。

ワイルドカードのトラフィックセレクターを使用して、ルーティング/転送テーブルを異なるIPsecトンネルへのトラフィックに転送。

ルータのような挙動をする模様。

ポイント対サイト接続、マルチサイト接続をする場合に使用される


ルーティング

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-udr-overview


ロードバランサー

https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-overview

https://docs.microsoft.com/ja-jp/learn/modules/improve-app-scalability-resiliency-with-load-balancer/

ロードバランサーの構成

バックエンドプール

ロードバランサーにより振り分けられたトラフィックを受信するリソースのグループのこと。

正常性プローブ

バックエンドプールのVMへ死活監視を行う機能。

指定された回数、VMからの応答が取得できない場合、Load Balancerは対象のVMをバックエンドの負荷分散対象から除外する。

負荷分散規則

負荷分散対象のトラフィックの規則を指定する。

プロトコルや、ポート番号、バックエンドプールなどの設定を行う。

インバウンドNAT規則

ポートフォワーディングを行う際の設定を指定する。

ロードバランサーに送信された特定のポートでのトラフィックを、 指定した仮想マシンに転送することが可能。

負荷分散目的ではなく、パブリックIPを持たない仮想マシンに対して、SSHやRDPを行う場合に設定する。

ロードバランサーのタイプ

外部ロードバランサー(パブリックロードバランサー)

インターネットから送信されたトラフィックを振り分けるロードバランサー。

内部ロードバランサー(プライベートロードバランサー)

仮想ネットワーク内部から送信されたトラフィックを振り分けるロードバランサー。

ロードバランサーのプラン

ベーシックロードバランサー(Basic Load Balancer)

必要最小限の機能を持ったロードバランサー。

  • 利用料金は無料
  • 高可用性ポートが使用できない
  • SLAなし

https://docs.microsoft.com/ja-jp/azure/load-balancer/concepts

スタンダードロードバランサー(Standard Load Balancer)

Basic LBより高機能のロードバランサー。

  • ルール数、NATルール数、データ処理量(GB単位)に応じて課金
  • 高可用性ポートの使用が可能
  • SLA設定あり (99.99% : ※ 下表参照)
月間稼働率 サービスクレジット
99.99%未満 10%
99.9%未満 25%

NVA HAポート

正常なインスタンスへの高速フェールオーバーを提供する。

HAポートの負荷分散規則は、内部スタンダードロードバランサーでのみ使用できる。

https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-ha-ports-overview


Azure DNS

Microsoft Azureが提供するDNSサービス。

https://docs.microsoft.com/ja-jp/azure/dns/dns-overview

https://docs.microsoft.com/ja-jp/learn/modules/host-domain-azure-dns/

DNS基本要素

ネームサーバ

ドメイン名をIPアドレスに変換するサーバ。

「権威DNSサーバ」や「コンテンツDNSサーバ」とも呼ばれる。

フルリゾルバ

ネームサーバにDNS問い合わせを行うサーバ。

「DNSキャッシュサーバ」とも呼ばれる。

レジストリ

世界中で使われている「.com」や「.net」「.jp」などのトップレベルドメインを管理する機関。

レジストラ(レジスタ)

レジストリにドメイン情報を登録する権限を持つ機関。

DNSゾーン

各DNSサーバ(ネームサーバ)が管理するドメインの範囲。

ゾーンファイル

DNSサーバが保持するDNSゾーンについての管理情報や、ドメインとIPアドレスの対応関係などを記述したファイル。

DNSレコード

ゾーンファイルに1行ごとに記載されている「ゾーンの詳細情報」のこと。

TTL: “Time to Live”

有効期限が切れる前にレコードがDNSキャッシュ内に存在する期間を示す。

Aレコード

ドメインに対するIPアドレスの情報を意味するレコード。

www.example.jp	 IN A 192.168.1.10
AAAAレコード

Aレコード対して、特にIPv6のアドレスを指定する際に使用するレコード。

www.example.jp	 IN AAAA fd00::1
PRTレコード

Aレコードとは逆に、IPアドレスに対するドメインの情報を意味するレコード。

192.168.1.10 IN PTR www.example.jp

CNAMEレコード

ドメイン名の正式名とは別の名称(エイリアス)を示すレコード。

www.alias.com IN CNAME www.example.jp
NSレコード

あるゾーンを管理するネームサーバを指定するためのレコード。 下記は、ドメイン「example.com」のネームサーバを指定したレコード例。

example.jp IN NS ns1.example.jp
SOAレコード

「ゾーンファイルの基となるデータを持つネームサーバの名前」や、 「ドメインの管理者のメールアドレス」など、ドメインの管理情報を表すレコード。

SOAはStart Of Authorityの略で、「権威の開始」という意味

@ IN SOA  ns1.example.jp. postmaster.example.jp. (
        2003081901  ; Serial
        3600        ; Refresh 
        900        ; Retry
        604800     ; Expire
        3600      ; Negative cache TTL
        ) 
MXレコード

対象ドメイン宛のメール送信先ホスト名を定義するレコード。

MXの後ろに記載されている数値は優先度を示しており、数値が小さいほど、優先される。

下記は、ドメイン「example.com」の送信先ホストを指定したMXレコード例。

この場合、xxx@example.com へのメールはmx1.example.comか、mx2.example.comというサーバに送信される。

IN MX 10 mx1.example.com
IN MX 20 mx2.example.com

1台の権威DNSサーバが管理する範囲を「ゾーン」と呼び、そのゾーンのDNS(名前解決)のための情報を「ゾーン情報」。

apexドメイン

APEXとは頂点を意味する。

www.example.comのようなサブドメインが含まれている形式ではなく、 example.comのようなサブドメインを含まない表記を示す。

apexに対してCNAMEレコードを設定することはできないため、 別名を付与させたい場合、Azureエイリアスレコードの設定が必要。

エイリアスレコード

Azureエイリアスレコードでは、次のAzureリソースをレコードに登録することができる。

  • Traffic Managerプロファイル
  • Azure Content Delivery Networkエンドポイント
  • パブリックIPリソース
  • フロントドアプロファイル

これにより、ロードバランサーなどのAzureリソースをレコードに登録することができる。

Azure プライベート DNS

仮想ネットワーク内のドメインのレコードを管理するDNS。

https://docs.microsoft.com/ja-jp/azure/dns/private-dns-overview


パブリックDNSゾーンを構成手順

  • サードパーティのドメイン名レジストラーを使用して、ドメインを新規登録

  • Azureに登録したドメインを管理するDNSゾーンを作成する

  • 作成したDNSゾーンからネームサーバーを取得する

  • ドメインレジストラ側のNSレコードのネームサーバーの設定をAzure DNS側と一致させる

  • ネームサービスがAzure DNSネームサーバーに委任されているか確認する

nslookupでSOAレコードを表示して、委任されているかを確認する。

nslookup -type=SOA 対象ドメイン

プライベートDNSゾーンを作成する

  • AzureにプライベートDNSゾーンを作成する

  • 仮想ネットワークをプライベートDNSゾーンにリンクさせる

主な利用条件・制限事項

  • ゾーンファイルのインポートは現在、Azure CLIしかサポートされていない

https://docs.microsoft.com/en-us/azure/dns/dns-import-export

  • VM DNS レコードの自動登録が有効になっている場合、仮想ネットワークは1つのプライベートゾーンにのみリンク可能

https://docs.microsoft.com/ja-jp/azure/dns/private-dns-overview

  • 逆引きDNSは、リンクされた仮想ネットワーク内のプライベートIP空間に対してのみ機能

https://docs.microsoft.com/ja-jp/azure/dns/private-dns-overview


ネットワークセキュリティグループ(NSG)

パケットフィルタの機能を提供するサービス。

https://docs.microsoft.com/ja-jp/azure/virtual-network/security-overview

デフォルトのセキュリティルール

デフォルトでは、

  • インバウンドの通信は仮想ネットワークとAzureLoadBalancerからの通信は許可

  • アウトバウンドの通信は仮想ネットワークとインターネットへの通信が許可されている

https://docs.microsoft.com/ja-jp/azure/virtual-network/security-overview#default-security-rules

優先順位

優先順位の順にそれぞれのセキュリティルールが処理される。

数値が小さいほど、対象のルールの優先度は高くなる。


ネットワーク監視

Azure Network Watcher

Azure Network Watcherは、Azure仮想ネットワーク内のリソースの監視、診断、メトリックの表示、ログの有効化または無効化を行うサービス。

https://docs.microsoft.com/ja-jp/learn/modules/troubleshoot-azure-network-infrastructure/1-introduction

トポロジ

仮想ネットワークとそれに接続しているリソースの接続関係を図で表示する。

NSGフローログ(ネットワークセキュリティグループフローログ)

NSGを流れるIPトラフィックに関する情報をログに記録できる機能。

フローログを元に、NSGのトラフィック規則の見直しができる。

フローデータはAzure Storageアカウントに送信され、任意の視覚化ツールにエクスポートしたりできる。

https://docs.microsoft.com/en-us/azure/network-watcher/network-watcher-nsg-flow-logging-overview

IPフロー検証

パケットがNSGでブロックされるかどうかを検証する機能。

パケットがセキュリティグループにより拒否された場合、そのパケットを拒否した規則の名前が表示される。

接続モニター

接続されたネットワークの間の往復時間や、ネクストホップなどを表示が可能。

接続されたネットワーク間にある2つのVMが通信可能かどうかを調べることができる。

https://docs.microsoft.com/en-us/azure/network-watcher/connection-monitor

パケットキャプチャツール

VM間で送受信されたすべてのパケットを記録できる。

パケットキャプチャは、VMにインストールされている Network Watcherエージェント VM拡張機能を利用している。

接続のトラブルシューティングツール

VM間のTCP接続の正常性を診断する。

接続に成功すると、通信に関する次のような情報が表示される。

  • 待機時間 (ミリ秒単位)
  • 送信されたプローブパケットの数
  • 送信先へのルート全体でのホップ数

接続に失敗した場合は、失敗原因が表示される。

VPNトラブルシューティングツール

VPN トラブルシューティングツールを使用すると、仮想ネットワークゲートウェイ接続に関する問題を診断できる。

Azure Monitor

クラウドおよびオンプレミス環境の利用統計情報を収集するサービス。

Network Performance Monitor

応答時間などネットワークパフォーマンスを監視する機能で、Azure、オンプレミスを用いたハイブリッドネットワークの監視に有効。

また、トポロジー図の⽣成などもエージェントにより⾃動的に⽣成される。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/insights/network-performance-monitor

Azure Log Analytics

監視データを収集し、そのデータを中央リポジトリに格納するAzureサービス。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/log-query/log-query-overview?toc=%2Fazure%2Fnetwork-watcher%2Ftoc.json

Azure Log Analyticsワークスペース

Azureアカウントに関するデータが格納される、Azure Monitorログのインスタンス。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/learn/quick-create-workspace?toc=/azure/network-watcher/toc.json

Azure Network Watcherで収集したトラフィックをLog Analyticsワークスペースに保存してネットワークトラフィックの分析をすることが可能。

https://docs.microsoft.com/ja-jp/azure/network-watcher/traffic-analytics#supported-regions-log-analytics-workspaces

Azure Monitorログクエリでの検索

テーブル名または searchコマンドを指定することで検索が可能。

テーブル名指定のクエリは、クエリの範囲が対象テーブルに指定されているので、searchコマンドよりも効率的。

searchコマンドは、複数の列やテーブル全体で特定の値を検索するときに適する。

以下はsearchコマンドでエラーイベントを検索するクエリの例。

-- すべてのテーブルのすべての列から検索し、 検索結果を100件まで表示
search "error"
| take 100

-- Eventテーブルのすべての列から検索し、 検索結果を100件まで表示
search in (Event) "error"
| take 100

https://docs.microsoft.com/ja-jp/azure/azure-monitor/log-query/search-queries

データコレクション

指定したリソースのパフォーマンス(CPU、メモリ使用量)などを収集する機能。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/data-sources-performance-counters

主な利用条件・制限事項

  • アラート通知のレート制限
    • SMSでのアラート通知: 5 分ごとに 1 件以下の SMS。→1時間で12件
    • 音声でのアラート通知: 5 分ごとに 1 件以下の音声通話。→1時間で12件
    • 電子メールでびアラート通知: 1 時間で 100 件以下の電子メール。

https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-rate-limiting