Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  《Windows Azure Platform 系列文章目录

 

  记录一下今天遇到的一个问题:

 

  问题描述:

  • 客户在Azure有若干台虚拟机,客户想知道这些虚拟机是否还有公网的访问,具体访问外网的IP和具体的流量分别是多少。
  • 客户在Azure上部署了虚拟机和Azure防火墙
    • 从Internet访问到Azure环境,具体的流量是:Internet -> Azure防火墙公网IP -> Azure负载均衡器内网IP -> Azure虚拟机
    • 从Azure环境访问到Internet,是设置了路由表,把0.0.0.0/0的流量,下一条指向到Azure Firewall的内网IP。具体的流量是:Azure虚拟机 -> 路由表 -> Azure 防火墙内网IP -> Internet

 

  配置过程:

  • 直接使用Azure Network Watcher里的NSG Flow Log,针对这些虚拟网络子网所在的网络安全组,设置NSG Flow Log,并推送到Log Analytics里

 

  发现问题:

  • 客户在使用NSG Flow Log的时候,发现过去1小时内,所有虚拟机的入站流量和出站流量,分别是21MB和42MB。如下图:

 

  • 但是客户使用Azure Firewall防火墙的网卡信息,发现防火墙的网卡信息,入站流量和出站流量总和,一共是184MB。和所有虚拟机网卡上的流量出入很大。

 

  排错过程:

  1.检查发现,Azure Firewall开启了DNS Proxy,因此除了正常的数据交互流量之外,Firewall IP的流量应该还包括DNS 解析的流量。

  2.我们开启了Firewall的诊断日志,并将诊断日志发送到Log Analytic

  3.检查Firewall的Log Analytics信息,具体的Kusto语法

 

AzureDiagnostics
| where Category == "AzureFirewallDnsProxy"
| project msg_s, UDPSize=split(msg_s, " ")[9],Response=split(msg_s, " ")[-2]
| summarize request=sum(toint(UDPSize)),response=sum(toint(Response))

  4.执行结果:

 

    

  4.我们再次检查Azure防火墙的出站流量,发现出站流量约50MB。截图略。

  5.NSG和DNS 的字节总数为21412509 Byte + 364568 Byte 约等于 33MB  ,根据NSG流日志的定义,这些字节数为TCP/UDP层的字节数,NSG 的流日志记录简介 - Azure Network Watcher | Azure Docs,不包括IP报头。

  https://docs.azure.cn/zh-cn/network-watcher/network-watcher-nsg-flow-logging-overview

 

  6.所以NSG和Firewall DNS 统计出来的数据,实际确实会小于IP 指标的Byte Count统计的字节数。

  IP 指标的Byte Count说明,参见:Azure Monitor supported metrics by resource type - Azure Monitor | Microsoft Docs  

 

  

posted on 2022-02-24 22:03  Lei Zhang的博客  阅读(103)  评论(0编辑  收藏  举报