文档首页/ 云日志服务 LTS/ 最佳实践/ 日志加工(邀测)/ 数据富化/ 使用DSL加工函数过滤VPC流日志公网流量
更新时间:2025-01-17 GMT+08:00
分享

使用DSL加工函数过滤VPC流日志公网流量

虚拟私有云VPC提供流日志功能,可以帮您采集指定VPC内网络实例的流量信息,包括入方向和出方向的流量。创建流日志后,您可以在配置的日志组中查看流日志记录。更多VPC流信息请参考VPC流日志概述

在虚拟私有云VPC控制台上创建VPC流日志功能后,VPC流日志将被采集到云日志服务中,您可以通过云日志服务对VPC流日志进行查询、分析和排查网络故障。本文介绍通过云日志服务数据加工对VPC流日志进行公网流量过滤的操作方法。

DSL加工的功能在邀测中,仅支持华北-北京四、华东-上海一、华南-广州局点的内测用户使用,其他局点暂不支持。

前提条件

  • VPC流日志已接入LTS,详细请参见虚拟私有云VPC接入LTS
  • 已在LTS控制台创建日志组和日志流,用于保存数据加工后的VPC流日志公网流量日志。

使用场景

例如,VPC流日志已接入LTS,采集到云日志服务中的日志示例如下:

{
  "content": "1 5f67944957444bd6bb4fe3b367de8f3d 1d515d18-1b36-47dc-a983-bd6512aed4bd 192.168.0.154 192.168.3.25 38929 53 17 1 96 1548752136 1548752736 ACCEPT OK",
  "version": 1,
  "project_id": "5f67944957444bd6bb4fe3b367de8f3d",
  "interface_id": "1d515d18-1b36-47dc-a983-bd6512aed4bd",
  "srcaddr": "192.168.0.154",
  "dstaddr": "192.168.3.25",
  "srcport": 38929,
  "dstport": 53,
  "protocol": 17,
  "packets": 1,
  "bytes": 96,
  "start": 1548752136,
  "end": 1548752736,
  "action": "ACCEPT",
  "log_status": "ok"
}

在对VPC流日志查询和分析过程中,为便于分析公网流量,您需要对原始日志做以下处理:

  • 如果srcaddr和dstaddr字段不存在,则丢弃该日志。
  • 如果是私网之间互通的流量,则丢弃该日志。

基于以上需求,您可以通过DSL日志加工,对采集到的VPC流日志进行日志加工,便于问题分析。

操作步骤

  1. VPC流日志已接入LTS,详细请参见虚拟私有云VPC接入LTS
  2. 在云日志服务控制台的左侧导航栏中选择“日志加工>DSL加工”,单击“新建DSL加工任务” 。
  3. 在基本信息页面中,完成如下配置。

    • 任务名称:DSL加工任务的名称,例如test-vpc。
    • 启用状态:默认开启。
    • 源日志流:选择已完成结构化配置的日志组、日志流,即VPC流日志接入LTS时创建的日志组和日志流。
    • 目标日志流:单击“添加目标日志流”,填写目标日志流名称(目标日志流在数据加工函数中作为入参时的代称),选择日志组和日志流,用于存储通过DSL加工处理后的日志。
    • 加工范围:数据加工的时间范围,本示例选择“所有”:从源日志流按收到第一条日志的时间开始数据加工任务,直到加工任务被手动停止。
    • 高级配置:本示例不设置。

  4. 然后单击“下一步”,在加工规则下方输入加工语句:

    # 如果srcaddr和dstaddr字段不存在,丢弃。
    e_if(e_not_has("srcaddr"), e_drop())
    e_if(e_not_has("dstaddr"), e_drop())
    # 如果srcaddr和dstaddr不符合IP地址格式,丢弃。
    e_if(op_not(e_match("srcaddr", r'^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')), e_drop())
    e_if(op_not(e_match("dstaddr", r'^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')), e_drop())
    # 如果是内网之间互通的流量,丢弃。
    e_if(op_and(
    op_or(ip_cidrmatch("10.0.0.0/8", v("srcaddr")),
          ip_cidrmatch("172.16.0.0/12", v("srcaddr")),
          ip_cidrmatch("192.168.0.0/16", v("srcaddr"))
    ),
    op_or(ip_cidrmatch("10.0.0.0/8", v("dstaddr")),
          ip_cidrmatch("172.16.0.0/12", v("dstaddr")),
          ip_cidrmatch("192.168.0.0/16", v("dstaddr"))
    )),e_drop())

  5. 在“测试数据”页签输入测试数据,参考如下:(以下示例仅供参考,请以实际上报的数据为准)

    模拟测试时需要将srcaddr的值改为公网IP。

    {
      "content": "1 5f67944957444bd6bb4fe3b367de8f3d 1d515d18-1b36-47dc-a983-bd6512aed4bd 192.168.0.154 192.168.3.25 38929 53 17 1 96 1548752136 1548752736 ACCEPT OK",
      "version": 1,
      "project_id": "5f67944957444bd6bb4fe3b367de8f3d",
      "interface_id": "1d515d18-1b36-47dc-a983-bd6512aed4bd",
      "srcaddr": "192.168.0.154",
      "dstaddr": "192.168.3.25",
      "srcport": 38929,
      "dstport": 53,
      "protocol": 17,
      "packets": 1,
      "bytes": 96,
      "start": 1548752136,
      "end": 1548752736,
      "action": "ACCEPT",
      "log_status": "ok"
    }

    单击“执行预览”,您可以看到原始日志只保留了公共流量的流日志。结果预览如下:

    结果预览里的srcaddr的ip值为修改后的公网地址。

    {
    "srcaddr":"ip",
    "dstport":53,
    "start":"1548752136",
    "dstaddr":"192.168.3.25",
    "version":1,
    "content":"1 5f67944957444bd6bb4fe3b367de8f3d 1d515d18-1b36-47dc-a983-bd6512aed4bd 192.168.0.154 192.168.3.25 38929 53 17 1 96 1548752136 1548752736 ACCEPT OK",
    "packets":1,
    "protocol":17,
    "interface_id":"1d515d18-1b36-47dc-a983-bd6512aed4bd",
    "log_status":"ok",
    "project_id":"5f67944957444bd6bb4fe3b367de8f3d",
    "bytes":96,
    "srcport":"38929",
    "action":"ACCEPT",
    "end":"1548752736"
    }

  6. 单击“确定”保存加工任务,创建成功后在DSL加工页面生成一条任务明细。

相关文档