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

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



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在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 機器變磚。閱讀這篇文章以了解更多信息