4 tcpcopy
4.1 原理
TCP/IP四層網(wǎng)絡(luò)模型
| 應(yīng)用層 | HTTP, FTP, ... |
| 傳輸層 | TCP,UDP |
| 網(wǎng)絡(luò)層 | IP, IMCP, ... |
| 網(wǎng)絡(luò)接口層 | ethernet, ... |
簡(jiǎn)單地說谬泌,tcpcopy是在OS(online server)從IP層復(fù)制請(qǐng)求包伴网,修改其中的源地址,發(fā)給TS(target server)存哲。TS處理之后的響應(yīng)包會(huì)被AS(assistant server)攔截丟棄掉,避免將不真實(shí)的包發(fā)給用戶晃琳。
詳情請(qǐng)見tcpcopy手冊(cè)
4.2 核心概念
- online server: 部署并執(zhí)行tcpcopy命令邮屁,拷貝數(shù)據(jù)包,修改账忘,并發(fā)送給target server
- target server: 增加路由規(guī)則志膀,將響應(yīng)包發(fā)送到assistant server
- assistant server: 部署并執(zhí)行intercept命令,攔截并丟棄target server響應(yīng)包
4.3 具體操作
- online server:
tcpcopy -x $onlineServerPort-$targetServerIp:$targetServerPort -s $assistantServerIp -c 62.135.200.10 -d
其中-c參數(shù)是比較關(guān)鍵的鳖擒,表示把原來的數(shù)據(jù)包中的client ip改成特定ip溉浙,這個(gè)主要是為了方便在target server上添加路由規(guī)則。后面的這個(gè)62.135.200.10
是我隨便寫的蒋荚。更多的參數(shù)可以查看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 高并發(fā)流量
- 單臺(tái)online server執(zhí)行tcpcopy指定-n 流量倍數(shù)
- 多臺(tái)online server執(zhí)行tcpcopy
其中方案1戳稽,對(duì)于有寫請(qǐng)求的場(chǎng)景不適用,可能會(huì)有臟數(shù)據(jù)或其他的問題出現(xiàn)期升,推薦方案2惊奇。