為 NAT Gateway建立 SNAT 條目後,流量經過 NAT Gateway時,SNAT 會話將以日誌的形式進行記錄,便於進行溯源和監控。
工作原理
日誌採集與投遞機制
會話日誌捕獲的SNAT會話以日誌形式寫入Log Service(Simple Log Service,SLS)。每條會話日誌記錄會捕獲特定時間視窗內的特定五元組網路流,捕獲周期約為10分鐘。在該時間段內,會話Log Service首先對資料進行彙總,再將其投遞至已建立的SLS中,此過程中的資料投遞延遲在5分鐘之內。
由於會話Log Service依據最大能力交付原則,您的會話日誌記錄可能會超出預定的交付時間,並可能因網路傳輸延遲或SLS投遞處理延遲而無法確保100%交付所有會話。
會話日誌資料的收集在網路流量路徑之外,不會影響 NAT Gateway的網路輸送量或延遲。
會話日誌和流日誌的區別
VPC 流日誌和 NAT Gateway會話日誌都可以記錄經過 NAT Gateway的網路流量:
VPC 流日誌:以網路層資料流為記錄單位,逐方向捕獲經過彈性網卡的每一條流量記錄;便於排查網路鏈路或安全性原則問題。
會話日誌:以 NAT 會話為記錄單位,將同一會話的私網地址、NAT 轉換地址、公網地址及雙向流量彙總為一條完整記錄,便於審計公網訪問行為或分析 SNAT 連接埠使用趨勢。
情境樣本
VPC 內 ECS 執行個體(私網 IP 172.16.20.21)通過 NAT Gateway的 SNAT 功能訪問公網伺服器 106.XX.XX.203:12180。NAT Gateway將 ECS 的源地址轉換為 172.16.10.13:48155。
VPC 流日誌 - 4 條記錄(完整流日誌欄位說明) | NAT 會話日誌 - 1 條記錄(完整會話日誌格式說明) |
| |
適用範圍
按固定規格計費(停止新購)的NAT Gateway執行個體不支援開啟會話Log Service。
NAT Gateway執行個體需要與建立的Log Service在同一地區。
會話日誌不支援捕獲DNAT會話。
計費
會話日誌不收取日誌產生費用,但會話日誌所捕獲的SNAT會話將儲存於阿里雲Log Service中,Log Service將收取相應的儲存和檢索等費用。
配置會話日誌
啟動會話日誌
登入NAT Gateway管理主控台,在頂部功能表列處,選擇 NAT Gateway所屬的地區。
在左側導覽列選擇公網NAT Gateway或VPC NAT Gateway,單擊目標 NAT Gateway執行個體ID。
選擇頁簽,單擊啟用會話日誌。
選擇Project和Logstore:首次建立會話日誌時,為和其他資料隔離,建議建立 Project並建立 Logstore。當需要將多個會話日誌匯總到一處集中分析時,請選擇同一個Logstore。
停止會話日誌
單擊目標會話日誌會話日誌狀態列的停止。停止會話日誌,不會刪除已有日誌,可以在 SLS Project 查看。
瞭解會話日誌狀態
前往目標 NAT Gateway執行個體的頁簽。
清單項目 | 說明 |
會話日誌狀態 | 會話日誌的啟動狀態,啟動會話日誌後顯示已啟動。 啟動會話日誌後,系統會自動建立 |
投遞狀態 | 會話日誌的投遞狀態。取值:
|
投遞類型 | 會話日誌投遞的目標類型,取值: |
目標資訊 | 在目標資訊列單擊日誌庫連結,跳轉至Log Service控制台,在查看和分析日誌之前,您需要為會話日誌投遞的Logstore中手動建立索引。 |
更多資訊
會話日誌格式
欄位 | 說明 |
instance | NAT Gateway執行個體ID。 |
vpc_id | NAT Gateway執行個體所屬的專用網路ID。 |
protocol | 流量的IANA協議編號中,1表示ICMP協議,6表示TCP協議,17表示UDP協議。 |
pri_ip | 源地址。 |
pri_port | 源連接埠。 對於 ICMP 報文,pri_port對應ICMP ID欄位。 |
pub_ip | 目的地址。 |
pub_port | 目的連接埠。 |
nat_ip |
|
nat_port |
|
bytes_from_pub |
單位:byte。 |
pkts_from_pub |
該欄位統計的是網路層包數,而非應用程式層或傳輸層的報文數,因此在存在 IP 分區的情境下,與端側抓包數存在差異屬於正常現象,以流量位元組數作為實際資料量的參考更為準確。 |
bytes_from_vpc | 來自VPC的資料包大小,單位:byte。 |
pkts_from_vpc | 來自VPC的資料包數量。 |
start_time | 會話日誌建立時間。 |
end_time | 會話日誌停止時間。 |
投遞錯誤碼
錯誤碼 | 說明 |
ProjectNotExist | 會話日誌投遞的目標Project不存在。 |
LogStoreNotExist | 會話日誌投遞的目標LogStore不存在。 |
ProjectForbidden | 您建立的Project被禁用,可能是由於欠費導致。 |
InvalidAccessKeyId | 啟動會話日誌時,未建立服務關聯角色。 |
Unauthorized | 啟動會話日誌時,未建立服務關聯角色向 LogStore 授權。 |
UnavaliableTarget | 遇到Unauthorized、ProjectNotExist、LogStoreNotExist、ProjectForbidden錯誤時,分發會禁止投遞至目標5分鐘。在5分鐘禁用到期後,如果有新的資料需要投遞,會投遞一次至LogStore做探測,如果投遞不成功,則繼續禁用下一個5分鐘,如果投遞成功則恢複對LogStore的正常投遞。 |
WriteQuotaExceed | 您的Project寫入流量配額超過限制,預設一個Project下所有LogStore的寫入限制為30 GB/min。 |
ShardWriteQuotaExceed | 分發的日誌流量較大,而您LogStore的Shard不足,建議您分裂更多Shard支撐更大寫入流量。具體操作,請參見管理Shard。 |