Azure Network Watcherの超概要

（6/1更新）
# Network Watcher概要
・従来の単体のネットワークリソース監視のみでなく、複数のリソースを合わせたシナリオレベルでのネットワーク監視が可能なAzureのサービス。
・提供されている機能は以下の通りです。
　-トポロジ
　-IPフローの確認
　-次ホップ
　-セキュリティグループビュー
　-パケットキャプチャ
　-VPN診断
　-接続チェック(プレビュー)
　-NSGフローログ
　-診断ログ
　-ネットワーク サブスクリプションの制限
・2017/5/4に日本リージョン（東西）でも使用が可能に。


# Network Watcherの機能について
## Network Watcherの有効化
AzureポータルでNetwork Watcherを選択肢、概要ページを開きます。
使用するサブスクリプションのプルダウンを押下し、Network Watcherを有効にしたいリージョンを右クリックします。
※Network Watcherは地域的なサービスのために各リージョンごとに有効化する必要があります。
　有効化を行うとNetwork Watcherがそのリージョン内にあるネットワークリソースの状態を取得できる様になります。
![NW02.PNG](https://qiita-image-store.s3.amazonaws.com/0/181154/51e6b7e6-9458-f468-8e9f-24ef9c79f4ea.png)
## トポロジ
ネットワークリソース同士の接続関係などを下図の様にグラフィカルに見ることが出来ます。
各ネットワークリソース同士も紐づきを確認することが出来ます（下図だとNSGがサブネットとNICそれぞれに適用されている等）。
![image](https://qiita-image-store.s3.amazonaws.com/0/181154/826f1c56-d830-5ce5-7bd6-4f6a51c3a8e4.png)

## IPフローの確認
ローカル及びリモートIP・ポート、プロトコルを指定して、パケットが許可されるか否か検証を行うことが出来ます。
下図は私の環境(自PC環境からのIPのみ許可設定)で関係ないIPからの通信がはじかれていることを確認しています。
許可および拒否するに至ったセキュリティ規則も表示されます。
![NW03.PNG](https://qiita-image-store.s3.amazonaws.com/0/181154/fbe321dd-1126-a678-fe3f-d3d867938882.png)
## 次ホップ
入力した接続先に向かう際の次ホップがどこなのかを検証することが出来ます。
下図はNATインスタンス構成での外部通信の次ホップを表示しています。
ルートテーブルで0.0.0.0/0をNATインスタンスに向けているため、次ホップはNATインスタンスのローカルIPが表示されています。
![NW04.PNG](https://qiita-image-store.s3.amazonaws.com/0/181154/cd46ed45-5928-0371-c56c-e4b11800260a.png)


## セキュリティグループビュー
VMに適用されている有効なセキュリティ規則が表示されます。
サブネットに適用されている規則、NICに適用されている規則、既定の規則のみを表示することも可能です。
![NW05.PNG](https://qiita-image-store.s3.amazonaws.com/0/181154/6d85ff56-3973-776b-97cb-a912ffc4397e.png)

## パケットキャプチャ
指定したローカル及びリモートIP・ポート、プロトコルでフィルタリング可能なパケットキャプチャ機能です。
キャプチャしたデータはBLOBにcapファイルで出力されます。
使用するには仮想マシンにNetwork Watcher Agentの拡張機能をインストールする必要があります。
__＃現状ポータルからインストールしようとするとエラーが発生することがありますので、PowershellおよびCLI経由をお勧めします。__
Powershellでのエージェントインストール方法は以下の通りです(Linux)。

```ps1

Set-AzureRmVMExtension -ResourceGroupName "yourResourceGroupName" -Location "yourLocation" -VMName "yourVMName" -Name "networkWatcherAgent" -Publisher "Microsoft.Azure.NetworkWatcher" -ExtensionType "NetworkWatcherAgentLinux" -TypeHandlerVersion "1.4"
```

下図はパケットキャプチャの設定画面になっています。
![image](https://qiita-image-store.s3.amazonaws.com/0/181154/bcb64fad-3835-7adb-3c34-5fe4eecf0e1c.png)
出力されたcapファイルをダウンロードし、WireShark等で開くと以下の様にパケット情報を確認することが出来る。
![image](https://qiita-image-store.s3.amazonaws.com/0/181154/476b7b84-5fd5-1441-6393-61c421214588.png)

## NSGフローログ
NSGのセキュリティ規則で許可、拒否されるトラフィックに関係するログを取得できます。
ログはJSON形式で指定したBLOBに出力されます。
下図は出力されたログの一部分です。
SystemIDとResourceIDは伏せております。
![NW06.PNG](https://qiita-image-store.s3.amazonaws.com/0/181154/493fa5ed-a2a8-a0b6-aefc-9ba5a1e143ed.png)



### NSGフローログのログ情報
今回特に注目したいのログの中のProperties内の情報です。
こちらにはNSGのルールとその規則に該当した通信内容が列挙されています。
flowTuples以下にコンマ区切りでその情報が記載されています。
記載情報は以下の通りです。
<pre>
タイムスタンプ、ソースIP、リモートIP、ソースポート、リモートポート、プロトコル(TCP or UDP)、トラフィックフロー(Inbound or Outbound)、アクション内容(Allow or Deny)
</pre>

現状上記のJSON形式での出力のみとなっているために、テーブル形式での出力はできないが、検索でIPなどでひっかけることによって、確認することが可能です。「T,I,D」で検索をかけDenyログを確認する等。

#まとめ
実際の運用の際の監視に用いてくには若干機能が足りない所は否めないものの、環境を構築した際のネットワークの最終確認や障害時の状況確認など全体を俯瞰する必要がある際には非常に使いやすいサービスと思われます。
ログ監視周辺は今後のアップデートに期待していきたいところです。

#追記(6/1)
PowerBIでNSGのフローログを図示化できる様になってました。
IPやアクション、プロトコルなどでフィルターをかけて表示することもできるので、非常に良さそうです！
詳しい手順は下記リンクに書かれているのでご参照ください。
https://docs.microsoft.com/ja-jp/azure/network-watcher/network-watcher-visualize-nsg-flow-logs-power-bi

# 参考リンク
## 概要
Azure Network監視の概要
https://docs.microsoft.com/ja-jp/azure/network-watcher/network-watcher-monitoring-overview
Announcing Azure Network Watcher – Network Performance Monitoring and Diagnostics Service for Azure
https://azure.microsoft.com/ja-jp/blog/announcing-azure-network-watcher-network-performance-monitoring-and-diagnostics-service-for-azure/