《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