4 tcpcopy
4.1 原理
TCP/IP四层网络模型
| 应用层 | HTTP, FTP, ... |
| 传输层 | TCP,UDP |
| 网络层 | IP, IMCP, ... |
| 网络接口层 | ethernet, ... |
简单地说,tcpcopy是在OS(online server)从IP层复制请求包,修改其中的源地址,发给TS(target server)。TS处理之后的响应包会被AS(assistant server)拦截丢弃掉,避免将不真实的包发给用户。
详情请见tcpcopy手册
4.2 核心概念
- online server: 部署并执行tcpcopy命令,拷贝数据包,修改,并发送给target server
- target server: 增加路由规则,将响应包发送到assistant server
- assistant server: 部署并执行intercept命令,拦截并丢弃target server响应包
4.3 具体操作
- online server:
tcpcopy -x $onlineServerPort-$targetServerIp:$targetServerPort -s $assistantServerIp -c 62.135.200.10 -d
其中-c参数是比较关键的,表示把原来的数据包中的client ip改成特定ip,这个主要是为了方便在target server上添加路由规则。后面的这个62.135.200.10
是我随便写的。更多的参数可以查看tcpcopy -h
-
assistant server:
intercept -i eth0 -F "tcp and src port $targetServerPort" -d
-
target server:
route add -net 62.135.200.0 netmask 255.255.255.0 gw $assistantServerIp
4.4 高并发流量
- 单台online server执行tcpcopy指定-n 流量倍数
- 多台online server执行tcpcopy
其中方案1,对于有写请求的场景不适用,可能会有脏数据或其他的问题出现,推荐方案2。
网友评论