tcpcopy 上手介绍和测试说明

一分钟白话简述:


1.这是一个网易开源工具,创建较早,网上已有多种结构模型,这里选择第三种,优点方便使用理解且性能较高,缺点是多要一台机器做辅助server。 各结构详解对比
2.她是一个请求复制工具。可以将线上流量拷贝到测试机器,实时的模拟线上环境。在不影响线上用户的情况下,使用线上流量进行测试,以尽早发现bug。
也可以通过放大流量,进行压力测试,评估系统承载能力。
3.她可以从线上服务器的IP层抓取在线请求的数据包,修改相关属性,利用raw socket output技术将其发送给测试服务器进行测试。
发送到测试服务器的数据包会在TCP/IP协议栈被识别,其中带有payload(tcp data)的数据包最终进入到测试服务器的上层应用(如nginx),
上层应用在处理完请求之后,将响应传递给测试服务器的TCP/IP协议栈。
4.再说下她的结构,tcpcopy与intercept,分别安装在线上机器与辅助测试机上。
tcpcopy运行在线上服务器,负责捕捉和复制线上请求到待测试服务。
intercept负责在辅助服务器上进行响应包的截获,并通过intercept程序返回响应包的必要信息(一般为TCP/IP头部信息)给tcpcopy。
由于tcp交互是相互的,一般情况下需要知道测试服务器的响应数据包信息,才能利用在线请求数据包,构造出适合测试服务器的请求数据包,
因此只要基于数据包的方式,都需要返回响应包的相关信息。
5.此外,intercept所在的辅助服务器,扮演了黑洞的角色。复制过来的请求从待测试服务机上的响应包
都会被路由到intercept所在的辅助服务上(需要在待测试服务器上配置route规则),为了防止响应返回到线上的真实客户端,这些响应数据包需要被丢弃掉。
还有,也支持udp、mysql session、dubbo.

6.需要三台机器、作用:
(假设线上机器和测试机器的应用都已经让你给弄好了)
线上机器 做tcpcopy-client,启动tcpcopy命令,可以将线上流量复制到线下测试环境。
测试机器 我们的观察请求后的测试机器,需要配置路由,将返回打回给辅助机器。
辅助机器 做tcpcopy-server作用,常驻intercept,做中心管理。

全局图为:



机器标签:

1.线上机器 prodl-client8.f.cn1 10.86.129.151 
2.测试机器 testl-ky176.f.cn1 10.86.125.199 
3.辅助机器 testl-ky177.f.cn1 10.86.125.200   这里要和测试机器是一个网段


运行命令:

(假设你已经下载,编译完,并将tcpcopy和intercept都已放到线上机和辅助机器上了)
1.构思将copy出来的报文是一个模拟用户发出的ip, 这里暂定是172.16.254.0
2.在<target测试机器B-Dev||Beta>机器上,配置路由把本来发到172.16.254.0(子网地址)的响应转到<辅助|控制服务器C-Server>上去
sudo route add -net 172.16.254.0 netmask 255.255.255.0 gw 10.86.125.200
3.在<辅助|控制服务器C-Server> 启动intercept
sudo /home/q/sbin/intercept -i eth0 -F 'tcp and src port 8059' -d -l ~/intercept.log
4.在<线上机器A-Client> 启动tcpcopy -x是指复制当前机器8059端口的数据包到10.86.125.199上面的8059端口中去,-s指定运行intercept所在机器的ip地址。 -c将copy的数据包包装成这个ip发出  -l 表示打印日志的文件 & 表示后台执行
sudo /home/q/sbin/tcpcopy -x 8059-10.86.125.199:8059 -s 10.86.125.200 -c 172.16.254.x -d -l /tmp/tcpcopy.log &


测试效果:

在<target测试机器B-Dev||Beta>机器上,查看对应端口的应用的access日志就好了,另外可以用watcher看机器的tcp报文监控,或者用sar命令也可以。




遇到的问题:

  • 运行的命令不能出错,运行的后边都-l日志了,所以每次运行完,都要回头看眼日志。
  • 测试机器上的对应端口的应用收到真实的请求报文后,在处理过程中,要关注下应用身后的依赖模块的处理。
  • 安装过程...看文档就几个步骤,开源地址:https://www.oschina.net/p/tcpcopy
  • 比如想看看支持哪些命令的话,man了下就是乱码,所以要/home/q/sbin/tcpcopy -h,
  • 要不就暴力点,直接看git的README吧https://github.com/wangbin579/tcpcopy/blob/master/README.md
  • 控制拦截包的大小,从-h可以看到有
    • -r <num>       set the percentage of sessions transfered (integer range:1~100)    发布百分比
    • -n <num>     发布倍数
    • 或者多台client  可以实现倍数的流量来跑
  • tcpcopy.log 出现error 和 warn 一般都是有问题的,notice是告诉capture了多大等等。
    • many connections can't be established  检查端口配置,且保证机器间都能ping通
    • Recv socket(6)error  检查下client和server 是否后台还在
  • 因为是全部引流,而我所希望的是只要部分服务的流量,这个怎么搞?
  • 比如,我只是想要搜索的流量,但是不想要的下单和支付的流量也进来了,所以这里需要搭建个新的复杂环境。
  • 而我们这边是这么做的,将机器分成批次ABCDE,A批次机器只部署搜索请求的服务,B批次部署下单,C批次部署支付的等等拆分部署。
  • 这样就可以只得到想要对应的服务的流量了。

参考:




提示:因安全问题图里有遮盖。。理解有误的地方请留言,或添加微信沟通:  cpp_wazi

 






<think>好的,我现在需要帮助用户了解思科设备命令的使用教程或示例。根据用户提供的引用内容,我需要结合这些参考资料来构建回答。首先,用户提到了三个引用,其中引用[1]关于使用USB更新IOS,引用[2]是测试命令大全,引用[3]关于使用ACL阻止访问特定网站。我应该围绕这三个方面来组织回答,确保每个部分都有相关的命令示例步骤。 首先,用户可能需要了解如何通过USB升级IOS,这在引用[1]中有说明。这里需要详细说明步骤,比如如何准备USB设备,复制IOS镜像,进入设备后如何执行命令。需要确保命令的准确性,比如使用`copy usbflash0:ios-image.bin flash:`这样的命令。 接下来,引用[2]提到了一些测试命令,比如查看连接数、TCP连接、NAT访问控制列表。这部分需要分点列出常用命令,并解释每个命令的作用,比如`show local-host``show access-list`的具体用法,可能用户需要监控设备状态或检查配置是否正确。 第三部分是关于使用ACL阻止访问特定网站,引用[3]中的内容。这里需要指导用户如何创建ACL规则,应用在接口上,并测试效果。例如,使用`ip access-list extended BLOCK_WEBSITE`来定义规则,然后使用`deny tcp any host example.com eq 80`来阻止HTTP访问,再应用到接口的入站或出站方向。 另外,用户可能需要一些基本的使用教程,比如如何进入特权模式、保存配置等。这些是基础但重要的内容,能够帮助新手快速上手。 在组织内容时,需要确保每个部分都有清晰的步骤示例代码块,使用正确的命令语法。同时,要注意中文回答的流畅性,避免直译导致的生硬表达。最后,生成的相关问题需要覆盖用户可能进一步询问的方向,比如如何备份配置、查看接口状态等,这样能引导用户深入学习解决问题。 需要检查是否有遗漏的信息,比如引用[2]中的其他命令是否也需要提及,比如`show conn protocol tcp``show nat`的具体应用场景。可能用户在进行网络故障排查时需要这些命令,因此简要说明其用途会更好。 最后,确保所有命令格式正确,使用代码块包裹,并且引用标识正确添加在对应的部分末尾。整个回答结构要清晰,分点列出,方便用户逐步跟随操作。同时,生成的三个相关问题应该覆盖主要知识点,帮助用户扩展学习。</think>### 思科设备命令使用教程与示例 #### 一、基础操作与配置模式 1. **进入特权模式** ```bash Router> enable Router# # 进入特权模式后提示符变为# ``` 2. **进入全局配置模式** ```bash Router# configure terminal Router(config)# # 进入全局配置模式 ``` 3. **保存配置** ```bash Router# copy running-config startup-config ``` --- #### 二、使用USB更新IOS镜像(引用[1]示例) **步骤说明**: 1. 将包含IOS镜像的USB插入设备 2. 查看USB设备内容: ```bash Router# dir usbflash0: ``` 3. 复制IOS到设备闪存: ```bash Router# copy usbflash0:ios-image.bin flash: ``` 4. 验证文件完整性: ```bash Router# verify flash:ios-image.bin ``` --- #### 三、常用测试命令(引用[2]示例) 1. **查看当前连接数** ```bash Router# show local-host | include local host|count # PIX 515E查看连接数 ``` 2. **检查TCP连接状态** ```bash Router# show conn protocol tcp # 显示所有TCP连接 ``` 3. **查看NAT转换表** ```bash Router# show nat ``` 4. **查看访问控制列表(ACL)** ```bash Router# show access-list # 显示所有ACL规则 ``` --- #### 四、使用ACL阻止访问特定网站(引用[3]示例) **场景**:阻止内网访问`example.com`的HTTP服务 1. **创建扩展ACL** ```bash Router(config)# ip access-list extended BLOCK_WEBSITE Router(config-ext-nacl)# deny tcp any host example.com eq 80 # 阻止HTTP Router(config-ext-nacl)# permit ip any any # 允许其他流量 ``` 2. **应用ACL到接口** ```bash Router(config)# interface GigabitEthernet0/1 Router(config-if)# ip access-group BLOCK_WEBSITE in # 在入站方向应用 ``` --- #### 五、其他实用命令 1. **查看接口状态** ```bash Router# show interfaces status # 显示接口状态与速率 ``` 2. **重启设备** ```bash Router# reload # 确认后设备将重启 ``` 3. **查看系统日志** ```bash Router# show logging # 显示日志信息 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小雄哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值