Tcpreplay回放流量遇到的坑

2021-10-23 20:50:31 字數 1230 閱讀 9602

tcpreplay套件包括以下工具:

所謂回放資料報的意思就是,將這個資料報的流向再次重現,也就是說再把這個資料報的流向走一遍。所以tcpreplay是檢測資料報的包頭的內容裡面的源、目的地端的內容,目的端的位址是多少就發往**,知道這個我們就清楚我們在使用tcpreplay重放的時候,各種資料報都流向了**,這個時候只需要拿wireshark攔截,就可以很清楚的看到各種資料報。

回答 :使用tcpreplay回放pcap流量,tcpreplay只能保證發出去,如果想要服務端響應的話,需要使用tcpliveplay(使用tcpreplay回放tcp的時候,不能同步tcp裡面syn/ack的編號)。

問題描述:在服務端通過nc -l 1234監聽1234埠,在客戶端連線服務端通過:

nc -nvv server_ip 1234
命令,客戶端向服務端傳送資料。

與此同時在客戶端抓取流量,儲存為chat.pcap。

tcpdump -i eth0  host server_ip  -w chat.pcap
然後在客戶端進行回放:

tcpreplay -i eth0 chat.pcap
,在服務端抓取:

tcpdump -i host client_ip
結果顯示,只有客戶端傳送服務端的流量,服務端發往客戶端的流量沒有,為何會出現這種情況?

回答:tcpreplay回放只是把資料報發出去,資料報去往何處,根據的是目標位址。對於客戶端->服務端的流量,目標為服務端,所以這個方向的流量會發往服務端。而對於服務端->客戶端的流量,此時目標為客戶端,所以這個方向的流量,不會發往服務端,而是在客戶端。

對於不屬於同一區域網下的兩台主機,修改目的ip的mac位址的時候,mac位址不是目的機網絡卡實體地址,而是源機器所連線的交換機mac位址。

錯誤warning: unable to send packet: error with pf_packet send() [8]:message too long (errno = 90)

此錯誤往往是由於網絡卡鏈路的mtu造成,可以重新設定更大的mtu即可。

命令:

ifconfig eno16777736  mtu 3000
此命令將網絡卡eno16777736的網絡卡mtu值設定為3000

tcpreplay是如何回放資料報的

tcpreplay我們通常用於回放資料報,那麼tcpreplay究竟是會怎樣回放呢?是根據什麼內容來發包的。首先tcpreplay有各種的引數供我們選擇和設定,具體的參看我的另一篇帖子即可。這裡我主要交代,tcpreplay是如何根據資料報的內容來確定發往 那麼所謂回訪資料報的意思就是,將這個資料報...

tcpreplay常用命令

此部分也可以直接參看tcpreplay h 此處只列出本人認為實用性比較強的。i,intf1 str 伺服器 初始資料輸出口 i,intf2 str 客戶端 第二個資料流輸出口 l,limit num 限制發包數目 l,loop num 定義trace迴圈次數 x,multiplier str 修改...

tcpreplay的使用方法

tcpreplay 是一系列工具的總稱,包括 tcpreplay tcprewrite 和tcpprep 是用來 在unix 或linux 系統上重放資料報的軟體。實現資料報文回放分為三步 用tcpprep對報文的通訊流量的兩方 伺服器 客戶端 進行分離 tcpprep 的作用是劃分客戶端和伺服器,...