为 NAT 网关创建 SNAT 条目后,流量经过 NAT 网关时,SNAT 会话将以日志的形式进行记录,便于进行溯源和监控。
工作原理
日志采集与投递机制
会话日志捕获的SNAT会话以日志形式写入日志服务(Simple Log Service,SLS)。每条会话日志记录会捕获特定时间窗口内的特定五元组网络流,捕获周期约为10分钟。在该时间段内,会话日志服务首先对数据进行聚合,再将其投递至已创建的SLS中,此过程中的数据投递延迟在5分钟之内。
由于会话日志服务依据最大能力交付原则,您的会话日志记录可能会超出预定的交付时间,并可能因网络传输延迟或SLS投递处理延迟而无法确保100%交付所有会话。
会话日志数据的收集在网络流量路径之外,不会影响 NAT 网关的网络吞吐量或延迟。
会话日志和流日志的区别
VPC 流日志和 NAT 网关会话日志都可以记录经过 NAT 网关的网络流量:
VPC 流日志:以网络层数据流为记录单位,逐方向捕获经过弹性网卡的每一条流量记录;便于排查网络链路或安全策略问题。
会话日志:以 NAT 会话为记录单位,将同一会话的私网地址、NAT 转换地址、公网地址及双向流量聚合为一条完整记录,便于审计公网访问行为或分析 SNAT 端口使用趋势。
场景示例
VPC 内 ECS 实例(私网 IP 172.16.20.21)通过 NAT 网关的 SNAT 功能访问公网服务器 106.XX.XX.203:12180。NAT 网关将 ECS 的源地址转换为 172.16.10.13:48155。
VPC 流日志 - 4 条记录(完整流日志字段说明) | NAT 会话日志 - 1 条记录(完整会话日志格式说明) |
| |
适用范围
按固定规格计费(停止新购)的NAT 网关实例不支持开启会话日志服务。
NAT 网关实例需要与创建的日志服务在同一地域。
会话日志不支持捕获DNAT会话。
计费
会话日志不收取日志生成费用,但会话日志所捕获的SNAT会话将存储于阿里云日志服务中,日志服务将收取相应的存储和检索等费用。
配置会话日志
启动会话日志
登录NAT网关管理控制台,在顶部菜单栏处,选择 NAT 网关所属的地域。
在左侧导航栏选择公网NAT网关或VPC NAT网关,单击目标 NAT 网关实例ID。
选择页签,单击启用会话日志。
选择Project和Logstore:首次创建会话日志时,为和其他数据隔离,建议新建 Project并新建 Logstore。当需要将多个会话日志汇总到一处集中分析时,请选择同一个Logstore。
停止会话日志
单击目标会话日志会话日志状态列的停止。停止会话日志,不会删除已有日志,可以在 SLS Project 查看。
了解会话日志状态
前往目标 NAT 网关实例的页签。
列表项 | 说明 |
会话日志状态 | 会话日志的启动状态,启动会话日志后显示已启动。 启动会话日志后,系统会自动创建 |
投递状态 | 会话日志的投递状态。取值:
|
投递类型 | 会话日志投递的目标类型,取值: |
目标信息 | 在目标信息列单击日志库链接,跳转至日志服务控制台,在查看和分析日志之前,您需要为会话日志投递的Logstore中手动创建索引。 |
更多信息
会话日志格式
字段 | 说明 |
instance | NAT 网关实例ID。 |
vpc_id | NAT 网关实例所属的专有网络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。 |