文档首页/ 虚拟私有云 VPC/ 用户指南/ 流量镜像/ 流量镜像配置示例/ 将源弹性网卡的入方向TCP/UDP流量镜像到不同的目的弹性网卡
更新时间:2024-11-08 GMT+08:00

将源弹性网卡的入方向TCP/UDP流量镜像到不同的目的弹性网卡

方案架构

当您需要将镜像源(弹性网卡)的入方向TCP和UDP流量,分别镜像到不同的镜像目的(弹性网卡)时,您可以参考本文的配置示例。如图1所示,在VPC-A中,ECS-test访问ECS-source,需要将ECS-source入方向TCP流量镜像到ECS-target-01中,并将入方向UDP流量镜像到ECS-target-02,由于一个镜像会话只可以关联一个镜像目的,则您创建两个镜像会话可以实现需求,详细设置如下:
  • 镜像会话mirror-session-01:
    • 镜像源是ECS-source的弹性网卡-s,表示需要镜像弹性网卡-s入方向的TCP流量。
    • 镜像目的是ECS-target-01的弹性网卡-t01,表示将弹性网卡-s入方向的TCP流量镜像到弹性网卡-t01中。
    • 镜像会话的筛选条件mirror-filter-01中,需要添加采集入方向TCP流量的规则。
  • 镜像会话mirror-session-02:
    • 镜像源是ECS-source的弹性网卡-s,表示需要镜像弹性网卡-s入方向的UDP流量。
    • 镜像目的是ECS-target-02的弹性网卡-t02,表示将弹性网卡-s入方向的UDP流量镜像到弹性网卡-t02中。
    • 镜像会话的筛选条件mirror-filter-02中,需要添加采集入方向UDP流量的规则。
图1 镜像入方向TCP/UDP流量

约束与限制

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

资源规划说明

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

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

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

资源类型

资源数量

说明

虚拟私有云VPC和子网

VPC:1

子网:2

  • VPC名称:请根据实际情况设置,本示例为VPC-A。
  • IPv4网段:请根据实际情况设置,本示例为192.168.0.0/16。
  • 子网名称:请根据实际情况设置,本示例共2个子网,分别为Subnet-A01和Subnet-A02。
  • 子网IPv4网段:请根据实际情况设置,本示例Subnet-A01为192.168.0.0/24,Subnet-A02为192.168.1.0/24。

弹性云服务器ECS

4

本示例中,共需要四个ECS,配置说明如下:
  • 名称:根据实际情况设置,本示例分别为ECS-source、ECS-target-01、ECS-target-02和ECS-test。
  • 实例规格类型:本示例中镜像源ECS-source使用通用计算增强型c7t,当前仅支持部分规格ECS的弹性网卡作为镜像源,具体请参见流量镜像的使用限制。其他ECS的规格类型不做限制。
  • 镜像:请根据实际情况设置,本示例为公共镜像(Huawei Cloud EulerOS 2.0 标准版 64位)。
  • 系统盘:通用型SSD盘,40GB。
  • 数据盘:本示例未选购数据盘,请您根据实际业务需求选购数据盘。
  • 网络:
    • 虚拟私有云:选择您的虚拟私有云,本示例为VPC-A。
    • 子网:选择子网,本示例ECS-source、ECS-target-01、ECS-test的子网为Subnet-A01,ECS-target-02的子网为Subnet-A02。
  • 安全组:本示例中,4个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-01属于Sg-B,则需要在Sg-B中额外添加表4中的规则,允许来自镜像源封装的UDP协议报文访问镜像目的的4789端口。ECS-target-02同理。
  • 弹性公网IP:选择“暂不购买”。
  • 私有IP地址:ECS-source为192.168.0.230,ECS-target-01为192.168.0.164,ECS-target-02为192.168.1.165,ECS-test为192.168.0.161

弹性公网IP

1

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

筛选条件

2

  • 1个采集TCP流量的筛选条件:
    • 名称:请根据实际情况设置,本示例为mirror-filter-01。
    • 入方向规则:添加1条入方向规则,该规则表示从ECS-test发送到镜像源(ECS-source)1234端口的TCP报文将会被镜像,规则详情请参见表5
  • 1个采集UDP流量的筛选条件:
    • 名称:请根据实际情况设置,本示例为mirror-filter-02。
    • 入方向规则:添加1条入方向规则,该规则表示从ECS-test发送到镜像源(ECS-source)1235端口的UDP报文将会被镜像,规则详情请参见表5

镜像会话

2

1个采集TCP流量的镜像会话:

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

1个采集UDP流量的镜像会话:

  • 镜像会话基本信息:
    • 名称:请根据实际情况设置,本示例为mirror-session-02。
    • 优先级:请根据实际情况设置,本示例为2。
    • VXLAN网络标识:请根据实际情况设置,本示例为2。
    • 镜像报文长度:请根据实际情况设置,本示例为96。
    • 是否开启:开启,镜像会话开启后,才会监控镜像源的网络流量。
  • 关联筛选条件:请根据实际情况设置,本示例为mirror-filter-02。
  • 关联镜像源:请根据实际情况设置,本示例为ECS-source的弹性网卡,私有IP地址为192.168.0.230。
  • 关联镜像目的:
    • 类型:云服务器网卡
    • 网卡:请根据实际情况设置,本示例为ECS-target-02的弹性网卡,私有IP地址为192.168.1.165。
表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端口。

入方向

允许

IPv4

UDP: 1235

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

192.168.0.161/32

针对IPv4,允许来自ECS-test的UDP协议报文访问镜像源ECS-source的1235端口。

表4 安全组Sg-B规则说明

方向

策略

类型

协议端口

源地址

描述

入方向

允许

IPv4

UDP: 4789

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

192.168.0.230/32

针对IPv4,允许来自镜像源ECS-source封装的UDP协议报文访问镜像目的ECS-target-01的4789端口。

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

名称

方向

优先级

协议

策略

类型

源地址

源端口范围

目的地址

目的端口范围

mirror-filter-01

入方向

1

TCP

采集

IPv4

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

192.168.0.161/32

全部

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

192.168.0.230/32

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

1234-1234

mirror-filter-02

入方向

1

UDP

采集

IPv4

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

192.168.0.161/32

全部

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

192.168.0.230/32

本示例为ECS-source的1235端口:

1235-1235

操作流程

将源弹性网卡的入方向TCP流量和UDP流量镜像到不同的目的弹性网卡,流程如图2所示。

图2 镜像入方向TCP/UDP流量

步骤一:创建云服务资源

  1. 创建1个VPC和2个子网。

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

  2. 创建4个ECS。

    具体方法请参见自定义购买ECS

  3. 申请弹性公网IP。

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

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

  1. 创建2个筛选条件。

    具体方法请参见创建筛选条件

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

    具体方法请参见创建镜像会话

步骤三:安装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会持续计费。

步骤四:验证采集TCP流量的镜像会话是否生效

  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入方向的TCP报文是否可以镜像到ECS-target-01。
    当ECS-test实时向镜像源ECS-source发送TCP报文时,通过TCPDUMP工具,查看镜像目的ECS-target-01是否可以获取到该报文的数据包,如果获取成功,则表示镜像会话配置生效。
    1. 远程登录ECS-target-01。

      ECS有多种登录方法,具体请参见登录弹性云服务器

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

      ifconfig

      回显类似如下信息,本示例中镜像目的对应的网卡名称为eth0。
      [root@ecs-target-01 ~]# 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 283560  bytes 116380316 (110.9 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 276486  bytes 104575280 (99.7 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ...
    3. 在ECS-target-01中,执行以下命令,通过TCPDUMP工具观察数据包获取情况。

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

      命令示例:

      tcpdump -i eth0 udp port 4789 -nne

      回显类似如下信息:
      [root@ecs-target-01 ~]# 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中,输入任意信息(比如tcp),并按回车,向ECS-source发送TCP报文。
      回显类似如下信息:
      [root@ecs-test ~]# nc 192.168.0.230 1234
      hello
      tcp
    5. 在ECS-source中,查看是否收到来自ECS-test的信息。
      回显类似如下信息,可正常收到信息。
      [root@ecs-source ~]# nc -l 1234
      hello
      tcp
    6. 在ECS-target-01中,查看是否可以获取到报文的数据包。
      回显类似如下信息,可以看到TCPDUMP工具启动后,ECS-test发送的信息tcp对应的数据包。其中,vni 1为镜像会话mirror-session-01的标识,表示通过mirror-session-01,ECS-target-01可成功获取到数据包,数据包内容分为两部分,一部分是流量镜像封装的VXLAN报文,一部分是原始报文,详细说明请参见表6
      [root@ecs-target-01 ~]# 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
      12:04:54.038631 fa:16:3e:d1:6b:5d > fa:16:3e:7e:d6:7a, ethertype IPv4 (0x0800), length 120: 192.168.0.230.32782 > 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 70: 192.168.0.161.55602 > 192.168.0.230.1234: Flags [P.], seq 1838246001:1838246005, ack 2529760424, win 502, options [nop,nop,TS val 1116821333 ecr 752395830], length 4

步骤五:验证采集UDP流量的镜像会话是否生效

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

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

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

      nc -ul 镜像源ECS-source的监听端口

      命令示例:

      nc -ul 1235

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

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

      nc 镜像源ECS-source的私有IP地址 镜像源ECS-source的监听端口 -u

      命令示例:

      nc 192.168.0.230 1235 -u

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

      ECS有多种登录方法,具体请参见登录弹性云服务器

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

      ifconfig

      回显类似如下信息,本示例中镜像目的对应的网卡名称为eth0。
      [root@ecs-target-02 ~]# ifconfig
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.1.165  netmask 255.255.255.0  broadcast 192.168.1.255
              inet6 fe80::f816:3eff:fe7e:d77b  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:7e:d7:7b  txqueuelen 1000  (Ethernet)
              RX packets 81142  bytes 112091279 (106.8 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 11848  bytes 2318498 (2.2 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ...
    3. 在ECS-target-02中,执行以下命令,通过TCPDUMP工具观察数据包获取情况。

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

      命令示例:

      tcpdump -i eth0 udp port 4789 -nne

      回显类似如下信息:
      [root@ecs-target-02 ~]# 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中,输入任意信息(比如udp),并按回车,向ECS-source发送UDP报文。
      回显类似如下信息:
      [root@ecs-test ~]# nc 192.168.0.230 1235 -u
      hello
      udp
    5. 在ECS-source中,查看是否收到来自ECS-test的信息。
      回显类似如下信息,可正常收到信息。
      [root@ecs-source ~]# nc -ul 1235
      hello
      udp
    6. 在ECS-target-02中,查看是否可以获取到报文的数据包。
      回显类似如下信息,可以看到TCPDUMP工具启动后,ECS-test发送的信息udp对应的数据包。其中,vni 2为镜像会话mirror-session-02的标识,表示通过mirror-session-02,ECS-target-02可成功获取到数据包,数据包内容分为两部分,一部分是流量镜像封装的VXLAN报文,一部分是原始报文,详细说明请参见表6
      [root@ecs-target-02 ~]# 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
      12:09:36.275574 fa:16:3e:18:32:b8 > fa:16:3e:7e:d7:7b, ethertype IPv4 (0x0800), length 96: 192.168.0.230.32830 > 192.168.1.165.4789: VXLAN, flags [I] (0x08), vni 2
      fa:16:3e:7e:d6:77 > fa:16:3e:7e:d6:bc, ethertype IPv4 (0x0800), length 46: 192.168.0.161.46546 > 192.168.0.230.1235: UDP, length 4