轉載文章(99%)
tcpcopy1.0.0安裝使用git
在tcpcopy 1.0版本中對整個架構的一個改進,將本來須要運行在測試機上的intercept移除放到一個獨立的輔助機上來,使得測試機須要作的操做少到僅僅是添加一條路由而已,對整個測試機的性能損耗能夠忽略,排除了intercept運行在測試機上時產生的性能影響,使得測試數據更加接近真實水平。
github
1、系統環境
centos6.7 x86_64shell
線上服務器:192.168.241.130 (tcpcopy安裝配置)
centos
輔助服務器:192.168.241.131 (intercept安裝配置)
服務器
測試服務器:192.168.241.132 (添加路由)
session
2、線上服務器部署tcpcopy-1.0.0
git clone git://github.com/session-replay-tools/tcpcopy.git
cd tcpcopy
./configure # 無特殊需求不須要加其餘選項,默認安裝在/usr/local/tcpcopy。
make && make install
#先不要啓動,須要先啓動intercept,並且若是intercept中止,tcpcopy也會停掉。
/usr/local/tcpcopy/sbin/tcpcopy -x 80-192.168.241.132:80 -s 192.168.241.131 -c 192.168.100.x -d -C 4 -l /tmp/tcpcopy.log
# -C 指定線程, -n 指定複製倍數
原理:將80端口收到的流量複製到測試機ip 192.168.241.132的80端口,並設置輔助機的ip地址爲192.168.241.131,且將複製過去的流量中的源地址統一更改成192.168.100.x,這樣作的好處是咱們在測試機上能夠直接針對整個更改後的網段設置一條路由便可。架構
3、輔助服務器部署intercept-1.0.0
yum install -y libpcap
git clone
cd intercept
./configuremake && make install
/usr/local/intercept/sbin/intercept -i eth0 -l /tmp/intercept.log -F 'tcp and src port 80 and src host 192.168.241.132' -d
原理:輔助機的 intercept 經過-F 參數制定捕獲規則,捕獲tcp鏈接中源端口爲80的全部數據,也便是測試機的迴應數據。其做用是將測試機路由過來的響應數據捕獲下來,完成整個請求迴應的流程且保證測試機產生的迴應數據不會流向線上環境。intercept 會監聽 tcp 36524 端口,並和線上機192.168.241.130的 tcpcopy 之間創建通訊,咱們經過ss命令能夠觀察到。須要注意的是輔助機和測試機必定要是同一網段。tcp
4、測試服務器部署
//添加路由
性能
route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.241.131
原理:線上機tcpcopy複製流量時將源地址改寫爲192.168.100網段的地址,那麼在測試機上看到的流量中源地址所有是來源於這個網段,咱們僅僅須要將返回給這個網段的全部客戶端的請求所有經過輔助機 192.168.241.131 路由出去,這樣在輔助機上就能夠對所有的迴應包進行截獲處理了
測試