たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

NSGフローログを確認する

AzureでVMの通信ログを取得しようとしたとき、Azure FirewallNSGフローログ、ネットワーク診断ツールなどが挙げられると思います。さらにAzureではTraffic Analyticsなど可視化ツールも用意されています。 今回は AdGuard HomeでDNSサーバをVMで作成し、しばらくスマホDNSサーバとして運用しました。NSGフローログで取得したトラフィックを見てみたいとおもいます。

構成図

Azure資源の構成図は以下です。
VNETとSubnetを作成し、その中にAdGuard Homeを導入したVMが存在しています。

NSGの設定は以下です。
VMへのSSHとAdGuard Homeのダッシュボード閲覧は自宅からのみできるものとし、そのIPアドレスだけポート22,443での通信を許可しています。DNSで使用するポートだけすべての通信を許可する設定にしています。

NSGフローログを設定

NSGダッシュボードからNSGフローログ-> 作成へと進みます。 「基本」ではフローログを格納するBLOBストレージ、フローログの保持期間を設定します。
「分析」ではフローログのバージョンは「バージョン2」に設定しました。今回はデータの可視化とかをやってみたいのでTraffic Analysisを有効にしました。

NSGフローログのファイルを確認する

DNSサーバを運用、実際に使ってみて数日経ったのでNSGフローログを確認してみます。
NSGフローログはBLOBストレージに保存されています。 ダウンロードして中身を確認してみます。

$ cat PT1H.json | jq '.' -C | less -R

...

       "flows": [
          {
            "rule": "DefaultRule_DenyAllInBound",
            "flows": [
              {
                "mac": "6045BD65D389",
                "flowTuples": [
                  "1705640652,104.156.155.13,10.1.1.4,51230,3069,T,I,D,B,,,,",
                  "1705640660,35.203.210.128,10.1.1.4,55018,45648,T,I,D,B,,,,",
                  "1705640660,35.203.211.9,10.1.1.4,49354,51,U,I,D,B,,,,",
                  "1705640660,167.248.133.53,10.1.1.4,37470,80,T,I,D,B,,,,",
                  "1705640661,167.248.133.53,10.1.1.4,60272,80,T,I,D,B,,,,",
                  "1705640662,167.248.133.53,10.1.1.4,60272,80,T,I,D,B,,,,",
                  "1705640662,167.248.133.53,10.1.1.4,58572,80,T,I,D,B,,,,",
                  "1705640679,62.122.184.110,10.1.1.4,52530,15045,T,I,D,B,,,,",
                  "1705640681,104.156.155.13,10.1.1.4,51230,56019,T,I,D,B,,,,",
                  "1705640684,35.203.210.87,10.1.1.4,55182,22443,T,I,D,B,,,,"
                ]
              }
            ]

...

flowTuplesがNSGルールが処理したトラフィックになります。上ではDenyAllInBoundが処理したトラフィックです。8番目の項目がDであれば、拒否されたトラフィックです。Dが連なっているので許可していないIPアドレス、ポートからのトラフィックが拒否されていることがわかります。 ログの見方は以下を参照してください。
NSG フロー ログの概要 - Azure Network Watcher | Microsoft Learn

Traffic Analysisでログを可視化する

Traffic Analysisの geoビューでどこから通信が来たのかマップで表示してくれます。
自家用DNSサーバなので自分しか使うユーザーはいないはずなのですが、海外からもアクセスが来ているようですね...

参考文献

Traffic Analytics を検証してみた #Azure - Qiita Azure Network Watcher で VM のパケット キャプチャを管理する - Azure portal | Microsoft Learn Azure Network Watcher で VM のパケット キャプチャを管理する - Azure portal | Microsoft Learn

Log Analytics を用いた Azure NSG フローログの分析方法 (Network Watcher) #Azure - Qiita