安装TCPDump

在Ubuntu,Debian和Linux Mint上安装TCPDump:

$sudo apt install tcpdump

在CentOS,Fedora,Almalinux和Red Hat中安装TCPDump:

$sudo dnf install tcpdump

在Arch Linux和Manjaro上安装TCPDump:

$sudo pacman -S tcpdump

TCPDUMP命令输出解释

每个数据包tcpdump捕获被写为单独的行。

格式看起来这样:

14:21:46.134249 IP 10.0.2.15.54000 > 104.16.168.35.443: Flags [.], ack 2915, win 63000, length 0

解释:

  • 14:21:46.134249- 捕获数据包时的时间戳。
  • IP 10.0.2.15.54000- IP和源主机的端口号。
  • 104.16.168.35.443- 目的主机的IP和端口号。
  • flags [。]- TCP标志(SYN,ACK,PSH等)。 [。]意味着ACK。
  • ACK 2915- 确认号码。
  • win 63000- 窗口号(接收缓冲区中的字节)。
  • length 0- 有效载荷数据的长度。
如何在Linux上使用tcpdump命令

tcpdump命令可用于捕获Linux系统上的网络流量。

它是一个多功能的命令行实用程序,网络管理员经常依赖它进行故障排除。

过滤TCPDUMP流量

“tcpdump”最有用的功能之一是我们可以准确地过滤掉我们想要看到的流量。

例如,使用以下语法过滤出使用UDP的流量。

# tcpdump -n udp

或者以下示例过滤icmp:

# tcpdump -n icmp

我们还可以使用相应的协议号码过滤掉特定协议。
例如,ICMP是协议编号1,因此以下语法等同于前一个示例。

# tcpdump -n proto 1

要使用特定目的地或者源IP地址过滤流量,我们可以使用“-N”选项,后面跟着主机。
例如,过滤与IP地址为10.10.150.20的主机的相关流量:

# tcpdump -n host 10.10.150.20

过滤某个子网相关的流量。

# tcpdump -n net 192.168.1

过滤和端口相关的流量:

# tcpdump -n port 80

过滤端口范围相关的流量:

# tcpdump -n portrange 20-30

根据数据包的源和/或者目标地址或者端口过滤:

# tcpdump -n src host 10.10.150.20

可以使用dst, src, src and dst, 以及 src or dst等限定词。

例如过滤发往SSH端口的数据包:

# tcpdump -n dst port 22

组合过滤器

可以使用and( &&), or( ||), 以及 not( !)来组合上面的各种过滤器。

例如,以下命令将捕获到“10.10.150.20”的端口80(HTTP)上的流量。

# tcpdump -n dst host 10.10.150.20 and tcp port 80

同时捕获https流量:

# tcpdump -n 'dst host 10.10.150.20 and (tcp port 80 or tcp port 443)'

tcpdump命令示例

所有tcpdump命令需要管理员权限,必须使用root用户帐户或者使用sudo执行。

最简单的命令形式是不带参数,如下所示:

# tcpdump

如果您没有指定要从哪个网络接口捕获流量(如上面的命令),则“tcpdump”将为您选择一个接口。

它将继续将捕获的流量“转储”到您的终端,直到您中断该命令。最简单的方法是使用“Ctrl+c”。

如果您有多个网络接口,那么最好指定您试图捕获流量的接口,因为默认情况下,tcpdump可能不会选择您想要的接口。
使用“-D”选项打印“tcpdump”可以使用的网络接口列表。

# tcpdump -D
1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
5.nflog (Linux netfilter log (NFLOG) interface) [none]
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]

捕获指定端口上的网络流量:

# tcpdump -i enp0s3

使用第三个“any”选项,可以让我们同时捕获所有网络接口上的流量。

我们可以使用“-V”选项来增加输出的详细程度,或者“-VV”和“-VVV”以进一步增加详细程度。

# tcpdump -i enp0s3 -vv

如果我们不希望“TCPDump”(TCPDump)一直输出数据,则可以使用“-C”选项来指定我们希望捕获该实用程序的数据包数。

例如,只捕获前15个数据包。

# tcpdump -c 15

如果不想执行DNS解析,则可以使用命令中的“-n”选项。
这将在网络地址列显示IP地址,而不是将它们解析为域名。

# tcpdump -n

将捕获输出结果保存到文件中:

# tcpdump > traffic.txt

另一个选项是将网络捕获写入文件。这些文件通常具有“.pcap”文件扩展名,普通文本编辑器无法读取。

# tcpdump -n -w traffic.pcap

要打开文件以供以后分析,使用“-r”选项。

# tcpdump -r traffic.pcap
日期:2020-07-07 20:56:49 来源:oir作者:oir