我尝试保存通过我们的代理发送到特定 URL 的原始数据。我的一个朋友给了我使用 tcpdump 的提示,所以我开始在他们的页面上阅读有关它的信息。但出于某种原因,我无法使用它。
我试过 'tcpdump -c10 主机 my.very.specific.host.com' 但我没有得到任何匹配。是的 =) 我可以看到 server.log 中有来自客户端的某种操作。
如果我使用'tcpdump-c10 命令“我立即得到了 10 行。所以我想我误解了‘主机’的概念?
我无法将它指向一个 IP,因为它是一个处理许多不同 URL 的网络服务器。
这确实不是我的领域(程序员),所以,请原谅我的问题很简单:)提前谢谢。
编辑1
感谢大家的帮助,是的,我应该更清楚地说明我的问题。所以这里有一些“更多”信息。我想要做的是捕获从我们的代理到手机的数据。
我这样做的原因是为了确保在数据进入“移动运营商网关/代理荒野”之前,我们发送的正是我们想要的内容(是的,他们往往会对数据进行超出应有范围的修改 ;))
我感兴趣的信息是 http 协议。
所以我现在要做的是尝试将代理和移动运营商网关之间的信息转储到“公共”NIC 上。幸运的是,移动运营商只有一个公共网关。
完了,走吧!
答案1
您可能遇到不同接口的问题。默认情况下,tcpdump 仅监听它找到的第一个以太网接口。如果您添加“-i any”,它将监听每个接口。
正如有人已经提到的,无论你想要什么 DNS 名称,你最终都会捕获到特定 IP 地址的所有流量。你可以通过进一步限制过滤器来减少捕获的数据量。你可以添加端口并指定特定的远程主机或网络。
# tcpdump host 12.34.56.78 and port 80 and net 78.65.43.21/24
您可能会发现 tcpflow 对您更有用。它会将 TCP 连接的每一端转储到单独的文件中。您可以将其与 tcpdump 使用的相同过滤器一起使用,也可以加载 pcap 文件。要保存 pcap 文件,请运行:
# tcpdump -s 0 -w /tmp/dump.pcap -i any host 12.34.56.78 and port 80
答案2
我将尝试表达 LapTop006 所说的话,但略有不同。
当你运行tcpdump -c10 主机 my.very.specific.host.com命令,tcpdump 将“my.very.specific.host.com”解析为 IP 地址并过滤到该 IP 的流量。如果 DNS 返回“my.very.specific.host.com”的多个 IP 地址,tcpdump 将只取返回的第一个 IP 并过滤该 IP。
如果“my.very.specific.host.com”仅返回几个 IP,您可以执行以下操作:
tcpdump -c10 host 1.2.3.4 or host 2.3.4.5 or host 3.4.5.6
由于客户端只有一个 IP 地址,因此捕获客户端与代理之间的流量比捕获远程 Web 服务器与代理之间的流量更容易。(不过,我想,如果您想查看远程 Web 服务器与代理之间的交互,则需要捕获该交互。您的帖子没有给我足够的信息来继续...)
答案3
我将尝试使用(内部)IP 地址作为参数HOST
。
顺便说一下这里有一个教程http://linux.byexamples.com/archives/283/simple-usage-of-tcpdump/和一个备忘单(PDF) 及其所有选项。
答案4
除了其他人所说的之外 - 使用 IP,正确的接口,转储到 pcap。
我建议你删除该-c10
标志。该标志指示tcpdump
在收到 10 个数据包后退出,这可能不足以满足你的需要。