Tcpdump简介

如果运行服务器,那么毫无疑问,您将需要确定一些与网络相关的问题。当然,仅向支持部门发送邮件会很容易,但是有时您需要动手。在这种情况下,tcpdump是用于该工作的工具。Tcpdump是在命令行下运行的网络数据包分析器。

本文将分为三个部分:

  • 基本功能。
  • 根据某些流量特征进行过滤。
  • 较高级功能(如逻辑表达式,按TCP标志过滤)的简短摘要。

由于tcpdump不包含在大多数基本系统中,因此您需要安装它。但是,几乎所有Linux发行版在其核心存储库中都有tcpdump。对于基于Debian的发行版,安装tcpdump的命令为:

apt-get install tcpdump

对于CentOS / RedHat,使用以下命令:

yum install tcpdump

FreeBSD提供了一个预构建的软件包,可以通过发出以下命令来安装:

pkg install tcpdump

还有一个可用的端口,net/tcpdump可以通过以下方式安装:

cd /usr/ports/net/tcpdump
make install clean

如果您tcpdump不带任何参数运行,那么结果将不知所措。在Vultr上的一个新启动的实例上运行它不到五秒钟,结果如下:

2661 packets captured
2663 packets received by filter
0 packets dropped by kernel

在深入探讨如何过滤输入的详细信息之前,您应该看一下可以传递给tcpdump的一些参数:

  • -i-指定要监听的接口,例如:tcpdump -i eth0
  • -n-不要尝试在IP地址上进行反向查找,例如:(tcpdump -n如果添加另一个ntcpdump,则会显示端口号而不是名称)。
  • -X-显示收集的数据包的内容:tcpdump -X
  • -c-仅捕获任意数量的x数据包,x例如tcpdump -c 10精确捕获10个数据包。
  • -v-增加显示的数据包信息的数量,更多会v增加详细程度。

这里提到的每个参数都可以组合在一起。如果要捕获100个数据包,但仅在VPN接口tun0上捕获,则tcpdump命令将如下所示:

tcpdump -i tun0 -c 100 -X

除了少数几个以外,还有几十个(如果不是数百个)选项,但是它们是最常见的。随时在系统上阅读tcpdump的联机帮助页。

既然您对tcpdump有了基本的了解,是时候来看一下tcpdump的最出色功能之一:表达式。表情将使您的生活更加轻松。它们也称为BPF或Berkeley数据包过滤器。使用表达式可让您根据某些特征(例如来源,目的地,大小甚至TCP序列号)有选择地显示(或忽略)数据包。

到目前为止,您已经设法将搜索限制在特定接口上的一定数量的数据包中,但是在这里说实话:这仍然留下了太多的背景噪音,无法有效地处理收集到的数据。那就是表达发挥作用的地方。这个概念非常简单,因此在这里我们将省略干性理论,并通过一些实际示例来支持理解。

您可能最常使用的表达式是:

  • host -根据主机名或IP地址查找流量。
  • srcdst-查找来自特定主机或来自特定主机的流量。
  • proto-查找特定协议的流量。适用于tcp,udp,icmp等。proto也可以省略关键字。
  • net -查找到/从某个IP地址范围的流量。
  • port -查找到/来自某个端口的流量。
  • greaterless-寻找大于或小于一定字节数的流量。

尽管的手册页tcpdump仅包含一些示例,但的手册页pcap-filter却非常详细地说明了每个过滤器的工作方式和应用方式。

如果要查看与特定服务器的通信进展情况,则可以使用host关键字(例如,包括上面的一些参数):

tcpdump -i eth0 host vultr.com

有时,网络上的某些计算机无法兑现MTU或向您发送大数据包,而不会向您发送垃圾邮件。有时很难将它们过滤掉。表达式使您可以过滤出大于或小于一定字节数的包:

tcpdump -i eth0 -nn greater 128
or
tcpdump -i eth0 -nn less 32

也许只有您感兴趣的某个港口。在这种情况下,请使用port表达式:

tcpdump -i eth0 -X port 21

您还可以注意端口范围:

tcdump -i eth0 -X portrange 22-25

由于NAT网关非常普遍,因此您可能只寻找目标端口:

tcpdump dst port 80

如果您正在监视到Web服务器的流量,则可能只需要查看端口80的TCP流量:

tcpdump tcp and dst port 80

您可能在问自己关键字and在做什么。好问题。这使我们进入了本文的最后一部分。

tcpdump 为逻辑表达式提供基本支持,更具体地说:

  • and/ &&-逻辑“和”。
  • or/ ||-逻辑“或”。
  • not/ !-逻辑“非”。

结合将表达式分组在一起的能力,这使您可以为传入和传出流量创建非常强大的搜索。因此,让我们过滤掉来自vultr.com的端口22或443的流量:

tcpdump -i eth0 src host vultr.com and (dst port 22 or 443)

在命令行上运行此命令将给您以下错误:

bash: syntax error near unexpected token `('

这是因为有一个警告:bash尝试评估每个字符。这包括()字符。为了避免该错误,您应该在组合表达式周围使用单引号:

tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'

另一个有用的示例:在调试一个用户的SSH问题时,您可能希望忽略与SSH会话相关的所有信息:

tcpdump '!(host $youripaddress) && port 22)'

同样,用例是无止境的,您可以在最深处指定想要查看的流量类型。以下命令将仅显示TCP握手的SYNACK数据包:

tcpdump -i eth0 'tcp[13]=18'

通过查看TCP标头的第13个偏移量和其中的第18个字节来工作。

如果您在这里进行了所有准备工作,那么您将为大多数出现的用例做好准备。我几乎不去接触表面,而无需太多细节。我强烈建议您进一步尝试不同的选项和表达式。和往常一样:迷路时请参考联机帮助页。

最后但并非最不重要-快速回顾。还记得本文的开头吗?在几秒钟内捕获成千上万个数据包?的功能tcpdump可以将其削减很多:

tcpdump -i eth0 tcp port 22

现在的结果是:

81 packets captured
114 packets received by filter
0 packets dropped by kerne

这更加明智且易于调试。祝您联网愉快!

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息