【工具】tcpdump
介绍
Tcpdump 是 Linux 系统下的一个强大的命令行网络抓包工具,同时也是一个网络数据采集分析工具。它使用 libpcap 库来抓取网络数据包,这个库在几乎所有的 Linux/Unix 系统中都有。 Tcpdump 可以截获网络上传送的数据包并进行分析,支持针对网络层、协议、主机、网络或端口的过滤,并提供与(and)、或(or)、非(not)等逻辑语句来帮助去除无用的信息。
作为管理员必备的工具之一,tcpdump 以其强大的功能和灵活的截取策略,成为高级系统管理员分析网络和排查问题的重要工具。此外,由于提供了源代码并且公开了接口,所以 tcpdump 具备很强的可扩展性,对于网络维护和入侵检测都是非常有用的工具。需要注意的是,因为 tcpdump 需要将网络接口设置为混杂模式,所以普通用户不能正常执行,只有具有 root 权限的用户才能直接执行它来获取网络上的信息。
安装
有部分系统已经默认安装了 tcpdump,如果没有安装,直接使用软件包管理器进行安装即可。
使用
捕捉数据包
捕捉数据包,并将其保存为 pcap 格式数据包。默认监听的网卡为 eth0,运行一段时间后,按 ctrl+c 停止抓包,数据会自动保存。
1 | tcpdump -w output.pcap |
捕获指定 IP
通常情况下,TCPDump 会捕获全局域网的数据包。这样会造成数据包很大,不易分析数据,因为我们可以对其进行简单的过滤。如,只捕获 192.168.123.43 这台设备的数据包。
1 | tcpdump host 192.168.123.43 -w output.pcap |
捕获特定协议
TCPDump 可以通过协议名称 (tcp udp icmp arp) 过滤要捕获的数据包。
1 | tcpdump tcp -w output.pcap |
捕获特定端口
1 | tcpdump port 80 -w output.pcap |
捕获特定网卡
1 | tcpdump -i eth0 -w output.pcap |
其他参数
参数 | 说明 |
---|---|
-a | 尝试将网络和广播地址转换成名称 |
-d | 把编译过的数据包编码转换成可阅读的格式。 |
-e | 在每列上显示连接层级的文件头 |
-f | 用数字显示网际网络地址 |
-i | 使用指定的网络设备送出数据包 |
-v | 详细显示指令执行过程 |
-w | 把数据包数据写入指定的文件 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 末心的小窝!