我有一个 Linux 机箱,充当许多客户端和互联网之间的路由器,我需要提取一些使用情况统计数据:我需要记录哪些内部 IP 访问哪些外部地址。
我使用这个来检查哪些内部 IP 访问哪些外部 IP:
tcpdump -n -i any port 80 or port 443 and src net 192.168.101.0/24
(我使用 -n 并稍后进行查找)
但是,这也向我展示了许多与 TCP 握手和窗口相关的额外信息。是否可以仅显示实际的 HTTP 请求?
我找到了一些方法,其中大多数涉及grep
ping GET\|POST
,但这会剥离 IP,而这才是我主要关心的。
编辑:
- 除了 tcp + 标准 linux 和 bash 命令之外,我没有其他的选择(因此我只能使用 tcpdump 和 grep/strings/awk/sed
- 包含过滤器是否
tcp[13] & 2!=0'
有帮助,因为据我了解,它只会显示初始 SYN?
答案1
如果你仅限于使用本机工具,我认为你可以使用 perl。也许你可以使用这个 perl 脚本叫做 chaosreader
否则,你可以捕获流量,并使用另一个系统上的 perl 脚本对其进行解析