我们正在跟踪 http 使用情况(主要针对我们的内部网),并且我已经能够使用我们的 OPENWRT 路由器上的以下内容来跟踪它:
tcpdump -i wlan1 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' | grep 'GET\|Host' >> /mnt/jlt/wlan1
这仅输出主机和请求。
但是我不知道如何获取请求的 IP。
例如,如果系统 192.168.1.5 正在请求我们的内部站点,我只能看到请求的站点和路径,但看不到请求的 IP(192.168.1.5)。
有没有办法也可以通过 tcpdump 显示请求的 IP,我知道这不是它的真正设计,但如果无法通过这种方式,还有其他方法吗?
作为参考,TCP 转储(没有 grep)类似于以下内容:
17:09:15.637887 IP (router).10199 > (dataSource).80: Flags [P.], seq 2206:2687, ack 33836, win 68, length 481
E.. [email protected]..$.'..P.C. '3.jP..D....GET (Path) HTTP/1.1
Host: (requestDomain)
Connection: keep-alive
User-Agent: (user-agent)
Accept:(file data)
Referer: (referer)
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: (cookie)
答案1
数据包的源 IP 是IP
TCPDump 输出中的第一个 IP 地址。
如果显示的 IP 不是 HTTP 客户端 IP 地址,则表明中间存在某种东西,例如反向代理会从该框创建另一个 TCP 连接。也可能存在一些奇怪的 NAT 设置,会替换流经数据包的源 IP 地址。
如果它是反向代理,那么您可以研究它的日志以查看哪些客户端 IP 访问它。