New*_*biZ 5 loopback tcpdump pcap tcpreplay
我有一组pcap包含来自两台主机的 UDP 流量的文件,并且必须定期对此流量执行一些分析。
理想情况下,我希望避免频繁设置具有特定 IP 的本地接口等来重播这些文件。我希望能够简单地在我的环回接口上重播它们,使用tcprewrite更改pcap.
这是它目前的样子:
# Remove mac addresses for loopback interface
# Remove VLAN tags
tcprewrite \
--enet-smac=00:00:00:00:00:00 \
--enet-dmac=00:00:00:00:00:00 \
--enet-vlan=del \
--infile="${INFILE}" \
--outfile="${OUTFILE}.tmp"
# Change source and destination IP to loopback
# Regenerate IP checksums
tcprewrite \
--srcipmap=0.0.0.0/0:127.0.0.1 \
--dstipmap=0.0.0.0/0:127.0.0.1 \
--fixcsum \
--infile="${OUTFILE}.tmp" \
--outfile="${OUTFILE}"
Run Code Online (Sandbox Code Playgroud)
看起来差不多可以工作了。然后我可以简单地使用我的环回重播这些文件,tcpreplay并且我看到数据包使用tcpdumpon lo。尽管如此,似乎任何常规用户空间套接字都看不到环回上的此流量。
据我了解,这似乎与Linux上环回接口处理第2层的方式有关。看来我需要将第 2 层标头 (DLT) 从普通协议重写ethernet为nullBSD 环回使用的协议。
任何有将以太网上捕获的 UDP 流量重放到环回接口的经验的人将不胜感激。pcap我不知道如何使用/来实现这一点,或者是否可行tcprewrite。
我尝试遵循https://www.tcpdump.org/linktypes.html并强制使用 DLT 标头类型0(DLT_NULL) 和内容2(IPv4),但没有成功:
tcprewrite \
--enet-smac=00:00:00:00:00:00 \
--enet-dmac=00:00:00:00:00:00 \
--enet-vlan=del \
--dlt=user \
--user-dlt=0 \
--user-dlink=02,00,00,00 \
--infile="${INFILE}" \
--outfile="${OUTFILE}.tmp"
Run Code Online (Sandbox Code Playgroud)
Fatal Error in tcpedit.c:tcpedit_packet() line 135:
From plugins/dlt_null/null.c:dlt_null_encode() line 201:
DLT_NULL and DLT_LOOP plugins do not support packet encoding
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1017 次 |
| 最近记录: |