将源弹性网卡的入方向tcp/udp流量镜像到不同的目的弹性网卡-九游平台
方案架构
- 镜像会话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流量的规则。

约束与限制
关于流量镜像的使用限制,具体请查看流量镜像的使用限制。
资源规划说明

以下资源规划详情仅为示例,您可以根据需要自行修改。
资源类型 |
资源数量 |
说明 |
---|---|---|
虚拟私有云vpc和子网 |
vpc:1 子网:2 |
|
弹性云服务器ecs |
4 |
本示例中,共需要四个ecs,配置说明如下:
|
弹性公网ip |
1 |
|
筛选条件 |
2 |
|
镜像会话 |
2 |
1个采集tcp流量的镜像会话:
1个采集udp流量的镜像会话:
|
方向 |
策略 |
类型 |
协议端口 |
源地址/目的地址 |
描述 |
---|---|---|---|---|---|
入方向 |
允许 |
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地址。
方向 |
策略 |
类型 |
协议端口 |
源地址 |
描述 |
---|---|---|---|---|---|
入方向 |
允许 |
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端口。 |
方向 |
策略 |
类型 |
协议端口 |
源地址 |
描述 |
---|---|---|---|---|---|
入方向 |
允许 |
ipv4 |
udp: 4789 |
镜像源的地址,本示例为ecs-source的私有ip地址: 192.168.0.230/32 |
针对ipv4,允许来自镜像源ecs-source封装的udp协议报文访问镜像目的ecs-target-01的4789端口。 |
名称 |
方向 |
优先级 |
协议 |
策略 |
类型 |
源地址 |
源端口范围 |
目的地址 |
目的端口范围 |
---|---|---|---|---|---|---|---|---|---|
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流量镜像到不同的目的弹性网卡,流程如所示。

步骤一:创建云服务资源
- 创建1个vpc和2个子网。
具体方法请参见创建虚拟私有云和子网。
- 创建4个ecs。
具体方法请参见。
- 申请弹性公网ip。
具体方法请参见购买弹性公网ip。
步骤二:创建筛选条件和镜像会话
- 创建2个筛选条件。
具体方法请参见。
- 创建2个镜像会话,关联筛选条件、镜像源以及镜像目的。
具体方法请参见。
步骤三:安装nc工具模拟数据流量
本文使用nc工具模拟数据流量,nc工具是一个通过tcp/udp协议在网络中读写数据的工具,常用于网络端口测试等,需要在ecs-source和ecs-test中安装nc工具。
- 在ecs-source中安装nc工具。
- 下载nc工具需要连接公网,将eip绑定至ecs-source。
具体方法请参见。
- 远程登录ecs-source。
ecs有多种登录方法,具体请参见。
- 依次执行以下命令,安装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!
- ecs-source的nc工具安装完成后,解绑eip。
具体方法请参见解绑弹性公网ip。
- 下载nc工具需要连接公网,将eip绑定至ecs-source。
- 参考~,在ecs-test中安装nc工具,并解绑eip。
- eip解绑后,删除eip。
本示例中不再需要使用eip,因此删除eip,具体方法请参见解绑弹性公网ip。如果不删除eip,则eip会持续计费。
步骤四:验证采集tcp流量的镜像会话是否生效
- 执行以下操作,建立ecs-source和ecs-test之间的tcp连接。
本文在ecs-test向ecs-source发送tcp报文,查看ecs-source是否可以收到该报文。
- 在ecs-source中,执行以下命令,开启1234端口的监听。
nc -l 镜像源ecs-source的监听端口
命令示例:
nc -l 1234
此处回显为空,表示监听已正常开启。
- 在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
- 在ecs-source中,查看是否收到来自ecs-test的信息。
回显类似如下信息,可正常收到信息,表示tcp连接建立成功。
[root@ecs-source ~]# nc -l 1234 hello
- 在ecs-source中,执行以下命令,开启1234端口的监听。
- 执行以下操作,测试ecs-source入方向的tcp报文是否可以镜像到ecs-target-01。
当ecs-test实时向镜像源ecs-source发送tcp报文时,通过tcpdump工具,查看镜像目的ecs-target-01是否可以获取到该报文的数据包,如果获取成功,则表示镜像会话配置生效。
- 远程登录ecs-target-01。
ecs有多种登录方法,具体请参见。
- 在ecs-target-01中,执行以下命令,查看镜像目的对应的网卡名称。
ifconfig
回显类似如下信息,本示例中镜像目的对应的网卡名称为eth0。[root@ecs-target-01 ~]# 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 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 ... - 在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
- 在ecs-test中,输入任意信息(比如tcp),并按回车,向ecs-source发送tcp报文。
回显类似如下信息:
[root@ecs-test ~]# nc 192.168.0.230 1234 hello tcp
- 在ecs-source中,查看是否收到来自ecs-test的信息。
回显类似如下信息,可正常收到信息。
[root@ecs-source ~]# nc -l 1234 hello tcp
- 在ecs-target-01中,查看是否可以获取到报文的数据包。
回显类似如下信息,可以看到tcpdump工具启动后,ecs-test发送的信息tcp对应的数据包。其中,vni 1为镜像会话mirror-session-01的标识,表示通过mirror-session-01,ecs-target-01可成功获取到数据包,数据包内容分为两部分,一部分是流量镜像封装的vxlan报文,一部分是原始报文,详细说明请参见。
[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
- 远程登录ecs-target-01。
步骤五:验证采集udp流量的镜像会话是否生效
- 执行以下操作,建立ecs-source和ecs-test之间的udp连接。
本文在ecs-test向ecs-source发送udp报文,查看ecs-source是否可以收到该报文。
- 在ecs-source中,执行以下命令,开启1235端口的监听。
nc -ul 镜像源ecs-source的监听端口
命令示例:
nc -ul 1235
此处回显为空,表示监听已正常开启。
- 在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
- 在ecs-source中,查看是否收到来自ecs-test的信息。
回显类似如下信息,可正常收到信息,表示udp连接建立成功。
[root@ecs-source ~]# nc -ul 1235 hello
- 在ecs-source中,执行以下命令,开启1235端口的监听。
- 执行以下操作,测试ecs-source入方向的udp报文是否可以镜像到ecs-target-02。
当ecs-test实时向镜像源ecs-source发送udp报文时,通过tcpdump工具,查看镜像目的ecs-target-02是否可以获取到该报文的数据包,如果获取成功,则表示镜像会话配置生效。
- 远程登录ecs-target-02。
ecs有多种登录方法,具体请参见。
- 在ecs-target-02中,执行以下命令,查看镜像目的对应的网卡名称。
ifconfig
回显类似如下信息,本示例中镜像目的对应的网卡名称为eth0。[root@ecs-target-02 ~]# ifconfig eth0: flags=4163
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 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 ... - 在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
- 在ecs-test中,输入任意信息(比如udp),并按回车,向ecs-source发送udp报文。
回显类似如下信息:
[root@ecs-test ~]# nc 192.168.0.230 1235 -u hello udp
- 在ecs-source中,查看是否收到来自ecs-test的信息。
回显类似如下信息,可正常收到信息。
[root@ecs-source ~]# nc -ul 1235 hello udp
- 在ecs-target-02中,查看是否可以获取到报文的数据包。
回显类似如下信息,可以看到tcpdump工具启动后,ecs-test发送的信息udp对应的数据包。其中,vni 2为镜像会话mirror-session-02的标识,表示通过mirror-session-02,ecs-target-02可成功获取到数据包,数据包内容分为两部分,一部分是流量镜像封装的vxlan报文,一部分是原始报文,详细说明请参见。
[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
- 远程登录ecs-target-02。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨