我对 tcpdump 很陌生。除了非常琐碎的任务外,我从未使用过它。
最近,我被要求完成以下工作。
我所拥有的:具有连接到交换机的网络接口的服务器。该交换机上的所有流量都将镜像到该服务器。我需要什么:将所有这些流量存储到 PCAP 格式文件中。该文件应包括
白天的流量约为 100MByte/s,对于我的工作,丢包是不能容忍的(必须连续24 小时)。
无论如何,如上所述,我不需要一切。
题:
谢谢你。
jli*_*ndo 12
我最好的选择是使用类似的东西:
tcpdump -ieth0 -s96 -w traffic.dump 'ip or icmp or tcp or udp'
Run Code Online (Sandbox Code Playgroud)
其中“棘手”部分是为“-s”(snaplen)参数选择正确的值(snaplen 是 tcpdump 将捕获的数据包的最大长度)。
从 tcpdump 手册页:
Snarf snaplen 来自每个数据包的数据字节数,而不是默认的 68(对于 NIT,最小值实际上是 96)。68 字节对于 IP、ICMP、TCP 和 UDP 来说足够了,但可能会截断来自名称服务器和 NFS 数据包的协议信息(见下文)。由于快照有限而被截断的数据包在输出中用“[|proto]”表示,其中 proto 是发生截断的协议级别的名称。请注意,拍摄更大的快照既会增加处理数据包所需的时间,也能有效地减少数据包缓冲量。这可能会导致数据包丢失。您应该将 snaplen 限制为将捕获您感兴趣的协议信息的最小数字。
在这个例子中,我使用 96 来“几乎”确定我会捕获 100% 的 ethernet+ip+(icmp || udp || tcp) 标头值。
如果您的流量有 IP 或 TCP 选项(即时间戳)并且您还想捕获此信息,那么您将不得不使用 snaplen 参数(即增加/减少它)。
如果您的数据包的标头长度小于 snaplen,您还可以捕获部分有效负载。
最后,要读取捕获的流量,我会使用以下内容:
tcpdump -e -nn -vv -r traffic.dump
Run Code Online (Sandbox Code Playgroud)
其中重要的部分是使用“-e”选项,这样你就可以得到打印的以太网头。
该页面提供了有关在不同情况下的以太网/ TCP / UDP报头的大小,一个想法,可以帮助你到达为参数的Snaplen一个“正确”的价值。
归档时间: |
|
查看次数: |
45922 次 |
最近记录: |