我在ubuntu中使用tcpdump和tcpreplay来捕获数据包并重新发送(在raspberry pi中使用重写和openwrt用于ap模式)。
我的问题是我无法捕获重新发送的数据包。
这是我的网络:
A ----> B(RPI) -----------> C
192.168.0.199 eth0. wlan0 | 192.168.2.172
192.168.0.100 192.168.2.1 |
------------> D
192.168.2.222我从A向B发送数据包(使用nping),并使用端口转发
在A中执行nping:
nping --udp --dest-port 7777 --dest-ip 192.168.0.100B中使用iptables的端口转发:
iptables -t nat -A PREROUTING -i eth0 --dport 7777 -j DNAT --to 192.168.2.222所以,我说完了。
我用D写这段代码
tcpdump -i wlan0 dst port 7777 -w packet.pcap
tcprewrite -i packet.pcap -o packet_rewrite.pcap -D 192.168.2.222:192.168.2.172
tcpreplay -i wlan0 --topspeed packet_rewrite.pcap 但是,在C中,我不能捕获修改过的数据包...
tcpdump dst port 7777我真的很想知道为什么我不能...请让我知道
我真的很抱歉我的解释不是很好...
发布于 2021-03-07 13:18:23
进一步搜索..我捕获了B (wlan0)中的数据包,因为我编辑了数据包的源mac到我的ubuntu wlan mac地址...但是和以前一样,我不能用C语言捕获数据包...This is captured packets in B
即使重放的数据包也没有通过iptables...
我解决了!
我不得不把dmac改成C的mac地址……我太傻了……
https://stackoverflow.com/questions/66507657
复制相似问题