使用tcpdump在代理上为主机转储rawdata

我试图保存原始数据通过我们的代理发送到一个特定的url。 我的一个朋友给了我一个使用tcpdump的提示,所以我开始阅读他们的页面。 但由于某种原因,我不能使用它。

我试过' tcpdump -c10主机my.very.specific.host.com '但我没有得到任何匹配。 是的=)我可以看到在server.log中有来自客户端的某种操作。

如果我使用' tcpdump -c10 ',我可以立即得到10行。 所以我想我很想理解“主持人”的概念?

我不能把它指向一个知识产权,因为它是一个networking服务器,可以处理许多不同的url。

这真的不是我的领域(程序员)所以,请原谅我简单的问题:)在此先感谢。

编辑1

感谢所有的帮助,是的..我应该更清楚地说明我的问题。 所以这里有一些“更多”的信息。 我想要做的就是将从我们的代理到手机的数据。

我这样做的原因是为了确保我们在发送到“移动运营商网关/代理服务器野性”之前就准确地发送了我们想要的内容(是的,他们倾向于修改更多的内容)

我感兴趣的信息是http协议。

所以我现在要做的是,我将尝试转储我们的代理和“公共”网卡上的移动运营商网关之间的信息。 幸运的是,移动运营商只有一个公共网关。

完了,走吧!

您可能遇到不同接口的问题。 默认情况下,tcpdump只侦听它find的第一个以太网接口。 如果添加“-i any”,它将在每个接口上进行监听。

正如有人已经提到,你将最终捕获所有的stream量到一个特定的IP地址,无论你想要的DNS名称。 您可以通过进一步限制filter来减less捕获的数据量。 您可以添加一个端口并指定特定的远程主机或networking。

# tcpdump host 12.34.56.78 and port 80 and net 78.65.43.21/24 

你可能会发现tcpflow对你更有用。 它会将TCP连接的每一端转储到一个单独的文件中。 您可以使用与tcpdump使用的filter相同的filter,也可以加载pcap文件。要保存pcap文件,请运行:

 # tcpdump -s 0 -w /tmp/dump.pcap -i any host 12.34.56.78 and port 80 

我会试着说出LapTop006所说的,但有一点不同。

当您运行tcpdump -c10主机my.very.specific.host.com命令时,tcpdump正在将“my.very.specific.host.com”parsing为IP地址并过滤到该IP的stream量。 如果DNS为“my.very.specific.host.com”返回多个IP地址,则tcpdump将仅返回该IP的第一个IP并过滤该IP。

如果“my.very.specific.host.com”只返回了less量IP,则可以执行以下操作:

 tcpdump -c10 host 1.2.3.4 or host 2.3.4.5 or host 3.4.5.6 

由于客户端只有一个IP地址,所以在客户端和代理之间而不是在远程Web服务器和代理之间捕获stream量会更容易。 (我想,如果你想看到的是远程Web服务器和代理的交互,但是,你需要捕获它,你的post不足以让我继续…)

我会尝试(内部)IP地址作为HOST参数。

顺便说一句,这里是一个教程http://linux.byexamples.com/archives/283/simple-usage-of-tcpdump/和备忘单(PDF )的所有选项。

tcpdump 总是工作在IP层,即使你给它一个DNS名称,它只是将它parsing为一个IP

您可以使用客户端的地址作为主机来考虑。

下一步是开始捕获完整的数据包到一个“pcap”文件,wireshark可以打开进行全面的分析。

除了别人所说的 – 使用IP,正确的接口,转储到pcap。

我会build议你摆脱-c10标志。 这指示tcpdump在收到正好10个数据包后退出,这可能不足以满足你想要查看的内容。

你想在服务于网页的机器上运行tcpdump。 不要使用主机地址; 无论如何,您只会捕获stream量。 您希望捕获到端口80上的所有文件,并且要确保捕获所有数据,而不是截断它。 你想要的命令是:

 sudo tcpdump -w log.pcap -s 65535 port 80 

如果您的机器具有多个以太网接口,则可能必须指定要用于捕获stream量的机器。 如果您发现自己没有捕获stream量,请使用ifconfig -a查看接口及其地址列表,select适当的接口并在命令行中添加-i eth1 (或其他接口)选项。

一旦你有一个pcap文件,你需要分析它。 对于交互式使用, Wireshark是一个很好的工具。 将pcap文件复制到您的工作站并运行wireshark -r log.pcap 。 您可以使用筛选器来查找具有“主机:some.server.of.interest.com”标题的数据包; 那些是感兴趣的虚拟主机的那些。 分析/跟踪TCPstream将以可读格式向您显示整个HTTP对话。

如果你想做自动分析,你可能不得不写一些自定义代码。 一个select是使用诸如tcpflow之类的工具将所有HTTP会话转储到文件,然后使用脚本语言(甚至grep)来select感兴趣的文件并分析它们。 直接读取pcap文件也不难,但是重新组装TCP对话还有很多工作要做。