/ 虚拟私有云 vpc/ 用户指南/ / / 将源弹性网卡的入方向tcp流量镜像到单个目的弹性网卡
更新时间:2025-02-25 gmt 08:00

将源弹性网卡的入方向tcp流量镜像到单个目的弹性网卡-九游平台

方案架构

当您需要将镜像源(弹性网卡)的入方向tcp流量,镜像到单个镜像目的(弹性网卡)时,您可以参考本文的配置示例。如图1所示,在vpc-a中,ecs-test访问ecs-source,需要将ecs-source入方向tcp流量镜像到ecs-target中,则您创建一个镜像会话可以实现需求,详细设置如下:
  • 镜像源是ecs-source的弹性网卡-s,表示需要镜像弹性网卡-s入方向的tcp流量。
  • 镜像目的是ecs-target的弹性网卡-t,表示将弹性网卡-s入方向的tcp流量镜像到弹性网卡-t中。
  • 镜像会话的筛选条件中需要添加采集入方向tcp流量的规则。
图1 镜像入方向tcp流量

约束与限制

关于流量镜像的使用限制,具体请查看流量镜像的使用限制

资源规划说明

本示例中,虚拟私有云vpc和子网、弹性公网ip以及弹性云服务器ecs等资源只要位于同一个区域内即可,可用区可以任意选择,无需保持一致。

以下资源规划详情仅为示例,您可以根据需要自行修改。

表1 镜像入方向tcp流量资源规划总体说明

资源类型

资源数量

说明

虚拟私有云vpc和子网

vpc:1

子网:1

  • vpc名称:请根据实际情况设置,本示例为vpc-a。
  • ipv4网段:请根据实际情况设置,本示例为192.168.0.0/16。
  • 子网名称:请根据实际情况设置,本示例为subnet-a01。
  • 子网ipv4网段:请根据实际情况设置,本示例为192.168.0.0/24。

弹性云服务器ecs

3

本示例中,共需要三个ecs,配置说明如下:
  • 名称:根据实际情况设置,本示例分别为ecs-source、ecs-target和ecs-test。
  • 实例规格类型:本示例中镜像源ecs-source使用通用计算增强型c7t,当前仅支持部分规格ecs的弹性网卡作为镜像源,具体请参见流量镜像的使用限制。其他ecs的规格类型不做限制。
  • 镜像:请根据实际情况设置,本示例为公共镜像(huawei cloud euleros 2.0 标准版 64位)。
  • 系统盘:通用型ssd盘,40gb。
  • 数据盘:本示例未选购数据盘,请您根据实际业务需求选购数据盘。
  • 网络:
    • 虚拟私有云:选择您的虚拟私有云,本示例为vpc-a。
    • 子网:选择子网,本示例为subnet-a01。
  • 安全组:本示例中,3个ecs属于同一个安全组sg-x,需要确保表2中的规则均已正确添加即可。
    如果ecs属于不同的安全组,则除了分别在不同安全组配置表2中的规则外,还需要添加以下规则:
    • 如果访问镜像源的测试ecs和镜像源ecs属于不同安全组,比如ecs-test属于sg-x,ecs-source属于sg-a,则需要在sg-a中额外添加表3中的规则,允许ecs-test的流量进入。
    • 如果镜像源ecs和镜像目的ecs属于不同安全组,比如ecs-source属于sg-a,ecs-target属于sg-b,则需要在sg-b中额外添加表4中的规则,允许来自镜像源封装的udp协议报文访问镜像目的的4789端口。
  • 弹性公网ip:选择“暂不购买”。
  • 私有ip地址:ecs-source为192.168.0.230,ecs-target为192.168.0.164,ecs-test为192.168.0.161

弹性公网ip

1

  • 计费模式:请根据情况选择计费模式,本示例为按需计费。
  • eip名称:请根据实际情况设置,本示例为eip-a。
  • eip地址:eip地址系统随机分配,本示例为124.x.x.187。

筛选条件

1

  • 名称:请根据实际情况设置,本示例为mirror-filter-a。
  • 入方向规则:添加1条入方向规则,该规则表示从ecs-test发送到镜像源(ecs-source)1234端口的tcp报文将会被镜像,规则详情请参见表5

镜像会话

1

  • 镜像会话基本信息:
    • 名称:请根据实际情况设置,本示例为mirror-session-a。
    • 优先级:请根据实际情况设置,本示例为1。
    • vxlan网络标识:请根据实际情况设置,本示例为1。
    • 镜像报文长度:请根据实际情况设置,本示例为96。
    • 是否开启:开启,镜像会话开启后,才会监控镜像源的网络流量。
  • 关联筛选条件:请根据实际情况设置,本示例为mirror-filter-a。
  • 关联镜像源:请根据实际情况设置,本示例为ecs-source的弹性网卡,私有ip地址为192.168.0.230。
  • 关联镜像目的:
    • 类型:云服务器网卡
    • 网卡:请根据实际情况设置,本示例为ecs-target的弹性网卡,私有ip地址为192.168.0.164。
表2 安全组sg-x规则说明

方向

策略

类型

协议端口

源地址/目的地址

描述

入方向

允许

ipv4

tcp: 22

源地址:0.0.0.0/0

放通安全组内ecs的ssh(22)端口,用于远程登录linux ecs。

入方向

允许

ipv4

tcp: 3389

源地址:0.0.0.0/0

放通安全组内ecs的rdp(3389)端口,用于远程登录windows ecs。

入方向

允许

ipv4

全部

源地址:当前安全组sg-x

针对ipv4,用于安全组内ecs之间网络互通。

入方向

允许

ipv6

全部

源地址:当前安全组sg-x

针对ipv6,用于安全组内ecs之间网络互通。

出方向

允许

ipv4

全部

目的地址:0.0.0.0/0

针对ipv4,用于安全组内ecs访问外部,允许流量从安全组内ecs流出。

出方向

允许

ipv6

全部

目的地址:::/0

针对ipv6,用于安全组内ecs访问外部,允许流量从安全组内ecs流出。

本示例中,入方向源地址设置为0.0.0.0/0表示允许所有外部ip远程登录云服务器,如果将22或3389端口暴露到公网,可能存在网络安全风险,建议您将源ip设置为已知的ip地址,比如设置为您的本地pc地址。

表3 安全组sg-a规则说明

方向

策略

类型

协议端口

源地址

描述

入方向

允许

ipv4

tcp: 1234

访问镜像源的测试ecs的地址,本示例为ecs-test的私有ip地址:

192.168.0.161/32

针对ipv4,允许来自ecs-test的tcp协议报文访问镜像源ecs-source的1234端口。

表4 安全组sg-b规则说明

方向

策略

类型

协议端口

源地址

描述

入方向

允许

ipv4

udp: 4789

镜像源的地址,本示例为ecs-source的私有ip地址:

192.168.0.230/32

针对ipv4,允许来自镜像源ecs-source封装的udp协议报文访问镜像目的ecs-target的4789端口。

表5 筛选条件的入方向规则

方向

优先级

协议

策略

类型

源地址

源端口范围

目的地址

目的端口范围

入方向

1

tcp

采集

ipv4

报文的来源地址,本示例为ecs-test的私有ip地址:

192.168.0.161/32

全部

报文的目的地址,本示例为ecs-source的私有ip地址:

192.168.0.230/32

本示例为ecs-source的1234端口:

1234-1234

操作流程

将源弹性网卡的入方向tcp流量镜像到单个目的弹性网卡,流程如图2所示。

图2 镜像入方向tcp流量

步骤一:创建云服务资源

  1. 创建1个vpc和1个子网。

    具体方法请参见创建虚拟私有云和子网

  2. 创建3个ecs。

    具体方法请参见。

  3. 申请弹性公网ip。

    具体方法请参见购买弹性公网ip

步骤二:创建筛选条件和镜像会话

  1. 创建1个筛选条件。

    具体方法请参见。

  2. 创建1个镜像会话,关联筛选条件、镜像源以及镜像目的。

    具体方法请参见。

步骤三:安装nc工具模拟数据流量

本文使用nc工具模拟数据流量,nc工具是一个通过tcp/udp协议在网络中读写数据的工具,常用于网络端口测试等,需要在ecs-source和ecs-test中安装nc工具。

  1. 在ecs-source中安装nc工具。
    1. 下载nc工具需要连接公网,将eip绑定至ecs-source。

      具体方法请参见。

    2. 远程登录ecs-source。

      ecs有多种登录方法,具体请参见。

    3. 依次执行以下命令,安装nc工具。

      sudo yum update

      回显类似如下信息:
      [root@ecs-source ~]# sudo yum update
      hce 2.0 base                                                                                                                                                 55 mb/s | 6.1 mb     00:00    
      hce 2.0 updates                                                                                                                                              98 mb/s |  14 mb     00:00    
      last metadata expiration check: 0:00:01 ago on tue 10 sep 2024 05:54:28 pm cst.
      dependencies resolved.
      nothing to do.
      complete!

      sudo yum install nc

      回显类似如下信息,请根据回显提示输入y,并按回车。
      [root@ecs-source ~]# sudo yum install nc
      last metadata expiration check: 0:00:12 ago on tue 10 sep 2024 05:54:28 pm cst.
      dependencies resolved.
      ...
      install  2 packages
      total download size: 6.1 m
      installed size: 25 m
      is this ok [y/n]: y
      downloading packages:
      ...    
      importing gpg key 0xa8def926:
       userid     : "xxx"
       fingerprint: c1ba 9cd4 9d03 a206 e241 f176 28da 5b77 a8de f926
       from       : http://repo.xxx.com/xx/2.0/updates/rpm-gpg-key-hce-2
      is this ok [y/n]: y
      ...
      installed:
        libssh2-1.10.0-2.r10.hce2.x86_64                                                               nmap-2:7.92-2.r4.hce2.x86_64                                                              
      complete!
    4. ecs-source的nc工具安装完成后,解绑eip。

      具体方法请参见解绑弹性公网ip

  2. 参考1.a~1.d,在ecs-test中安装nc工具,并解绑eip。
  3. eip解绑后,删除eip。

    本示例中不再需要使用eip,因此删除eip,具体方法请参见解绑弹性公网ip。如果不删除eip,则eip会持续计费。

步骤三:验证镜像会话是否生效

  1. 执行以下操作,建立ecs-source和ecs-test之间的tcp连接。

    本文在ecs-test向ecs-source发送tcp报文,查看ecs-source是否可以收到该报文。

    1. 在ecs-source中,执行以下命令,开启1234端口的监听。

      nc -l 镜像源ecs-source的监听端口

      命令示例:

      nc -l 1234

      此处回显为空,表示监听已正常开启。

    2. 在ecs-test中,执行以下命令,建立ecs-source和ecs-test之间的tcp连接。

      nc 镜像源ecs-source的私有ip地址 镜像源ecs-source的监听端口

      命令示例:

      nc 192.168.0.230 1234

      此处回显为空,在ecs-test中,输入任意信息(比如hello),并按回车,测试tcp连接是否建立成功。
      [root@ecs-test ~]# nc 192.168.0.230 1234
      hello
    3. 在ecs-source中,查看是否收到来自ecs-test的信息。
      回显类似如下信息,可正常收到信息,表示tcp连接建立成功。
      [root@ecs-source ~]# nc -l 1234
      hello
  2. 执行以下操作,测试ecs-source入方向的报文是否可以镜像到ecs-target。
    当ecs-test实时向镜像源ecs-source发送tcp报文时,通过tcpdump工具,查看镜像目的ecs-target是否可以获取到该报文的数据包,如果获取成功,则表示镜像会话配置生效。
    1. 远程登录ecs-target。

      ecs有多种登录方法,具体请参见。

    2. 在ecs-target中,执行以下命令,查看镜像目的对应的网卡名称。

      ifconfig

      回显类似如下信息,本示例中镜像目的对应的网卡名称为eth0。
      [root@ecs-target ~]# ifconfig
      eth0: flags=4163  mtu 1500
              inet 192.168.0.164  netmask 255.255.255.0  broadcast 192.168.0.255
              inet6 fe80::f816:3eff:fe7e:d67a  prefixlen 64  scopeid 0x20
              ether fa:16:3e:7e:d6:7a  txqueuelen 1000  (ethernet)
              rx packets 29043  bytes 32268398 (30.7 mib)
              rx errors 0  dropped 0  overruns 0  frame 0
              tx packets 13811  bytes 3961116 (3.7 mib)
              tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ...
    3. 在ecs-target中,执行以下命令,通过tcpdump工具观察数据包获取情况。

      tcpdump -i 镜像目的对应的网卡名称 udp port 4789 -nne

      命令示例:

      tcpdump -i eth0 udp port 4789 -nne

      回显类似如下信息:
      [root@ecs-target ~]# tcpdump -i eth0 udp port 4789 -nne
      dropped privs to tcpdump
      tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
      listening on eth0, link-type en10mb (ethernet), snapshot length 262144 bytes
    4. 在ecs-test中,输入任意信息(比如12345),并按回车,向ecs-source发送tcp报文。
      回显类似如下信息:
      [root@ecs-test ~]# nc 192.168.0.230 1234
      hello
      12345
    5. 在ecs-source中,查看是否收到来自ecs-test的信息。
      回显类似如下信息,可正常收到信息。
      [root@ecs-source ~]# nc -l 1234
      hello
      12345
    6. 在ecs-target中,查看是否可以获取到报文的数据包。
      回显类似如下信息,可以看到tcpdump工具启动后,ecs-test发送的信息12345对应的数据包。其中,vni 1为镜像会话的标识,表示通过镜像会话,ecs-target可成功获取到数据包,数据包内容分为两部分,详细说明请参见表6
      [root@ecs-target ~]# tcpdump -i eth0 udp port 4789 -nne
      dropped privs to tcpdump
      tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
      listening on eth0, link-type en10mb (ethernet), snapshot length 262144 bytes
      19:12:25.839624 fa:16:3e:d1:6b:5d > fa:16:3e:7e:d6:7a, ethertype ipv4 (0x0800), length 122: 192.168.0.230.32838 > 192.168.0.164.4789: vxlan, flags [i] (0x08), vni 1
      fa:16:3e:7e:d6:77 > fa:16:3e:7e:d6:bc, ethertype ipv4 (0x0800), length 72: 192.168.0.161.38944 > 192.168.0.230.1234: flags [p.], seq 2063075043:2063075049, ack 1116663338, win 502, options [nop,nop,ts val 969673134 ecr 605179348], length 6
      表6 数据包说明

      数据包示例

      数据包说明

      19:12:25.839624 fa:16:3e:d1:6b:5d > fa:16:3e:7e:d6:7a, ethertype ipv4 (0x0800), length 122: 192.168.0.230.32838 > 192.168.0.164.4789: vxlan, flags [i] (0x08), vni 1

      流量镜像封装的vxlan报文。报文格式如下:

      封装报文的字段说明如下:
      • timestamp:由tcpdump工具生成,表示获取报文的时间
      • smacaddr:vxlan报文来源实例的mac地址,此处为网关实例的mac地址
      • dmacaddr:vxlan报文目的实例的mac地址,此处为镜像目的实例的mac地址
      • ethernettype:报文的以太网类型,0x0800表示协议是ipv4
      • length:报文的长度
      • sip:镜像源地址
      • sport:镜像源端口
      • dip:镜像目的地址
      • dport:镜像目的端口,通常为接收vxlan报文的端口4789
      • vxlan flags:通常为0x08,表示为vxlan报文
      • vni:镜像会话的vxlan网络标识
      fa:16:3e:7e:d6:77 > fa:16:3e:7e:d6:bc, ethertype ipv4 (0x0800), length 72: 192.168.0.161.38944 > 192.168.0.230.1234: flags [p.], seq 2063075043:2063075049, ack 1116663338, win 502, options [nop,nop,ts val 969673134 ecr 605179348], length 6

      原始报文。

      原始报文字段属于通用网络知识,此处不做详细说明。

相关文档

网站地图