文档首页/ 虚拟私有云 VPC/ 用户指南/ 流量镜像/ 流量镜像配置示例/ 将源弹性网卡的入方向TCP流量镜像到单个目的弹性网卡
更新时间:2024-11-08 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。

    具体方法请参见自定义购买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。

      具体方法请参见绑定弹性公网IP

    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     : "HCE <support@huaweicloud.com>"
       Fingerprint: C1BA 9CD4 9D03 A206 E241 F176 28DA 5B77 A8DE F926
       From       : http://repo.huaweicloud.com/hce/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<UP,BROADCAST,RUNNING,MULTICAST>  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<link>
              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><SMacAddr><DMacAddr><EthernetType><Length><Sip><Sport><Dip><Dport><VXLAN Flags><VNI>

      封装报文的字段说明如下:
      • 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

      原始报文。

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

相关文档