百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统抓包工具Tcpdump使用详解

ahcoder 2025-03-23 16:59 36 浏览

摘要:日常工作中,经常会查看服务器的网络流量包的情况,通常可以在服务器的本地执行相关的指令查看,比如Tpdump命令。Tcpdump是linux环境下抓包工具,可以对对应网络接口流量进行抓取或者过滤抓取,可以打印输出到屏幕,也可以保存到指定文件。指定的文件可以用wireshark软件来打开查看。可以快速查看符合网络接口符合某一条件的抓包,方便确定网络问题。

本文主要通过实例介绍Linux系统Tcpdump抓包工具的使用方法,详细内容参考下文。

一、登陆Linux系统

登陆Linux

二、Tcpdump命令格式

执行指令# man tcpdump查看其帮助说明

命令格式:tcpdump 跟踪范围 选项和对应参数 表达式

1、跟踪范围可以是某一个接口,也可以是any所有接口。选项和参数完成输出显示符合一定要求功能。表达式完成过滤一些特殊需要的包。

2、选项和对应参数

-D 是显示所有的可跟踪的接口,可以和ip addr配合使用来确定要抓取的网口数字编号或名称;

-i 端口号 是指定抓取网卡的名称或者数字编号;

-n 来关闭dns反向解析功能,-nn是关闭反向查询功能并以数字格式显示ip地址端口号,和url地址。不带这个选项回显会很慢。

-c 用于指定抓取包的包字节数;

-C 用于指定抓取保存文件的大小,单位是兆;

-e 用于显示对应的源,目的的mac地址;

-w 文件路径和文件名,用于指定保存文件的路径和名称,没有指定路径默认在系统默认路径下;

-t 是不显示时间戳,-tt显示时间戳,-ttt显示请求和响应的时间的时间差;

-v 是显示一些协议的详细资料,-vv,-vvv来显示更详细的资料;

-X 是用16进制和asc码显示ip层以上各协议包头;

-x 小写x是用16进制打印从ip层开始的帧内容;

-xx 小写的xx是用16进制打印从数据链路层开始的帧内容;

-X 大写的X是用16进制打印从ip层开始的帧内容;

-XX 大写的XX是用16进制打印从数据链路层开始的;

-G 后面跟秒数,多少秒后重写另一个文件;

-Z 后面跟用户名,表示要用该用户名来执行;

-r 后面跟抓包文件,读取抓包文件

注意:当选项后面没有参数时,可以把几个选项连接起来使用,如-nne,-envv等等。

3、表达式

过滤表达式:协议 方向 关键词 值 可以使用关系符如not非,and与,or或或协议icmp,arp,tcp,sctp,udp,ether,vlan之类;

如要抓包icmp消息,表达式可以写icmp;

过滤arp和icmp消息可以用 arp or icmp;

过滤dhcp消息,就可以用包含udp的端口是68或69的条件实现:

udp port 68 or udp port 69;

方向源src,目的dst。

三、两种抓包形式

1、根据IP抓包

执行指令# tcpdump -i ens192 host 172.*.*.*

或者使用src或者dst执行单项抓包,如下

执行指令# tcpdump -i ens192 src 172.*.*.*

执行指令# tcpdump -i ens192 dst 172.*.*.*

2、根据协议抓包

说明:过滤TCP流量,可以指定tcp,也可以指定使用协议6,这两个命令效果一样。而过滤UDP流量,可以指定udp,也可以指定使用协议17,这两个命令效果也是一样。

执行指令# tcpdump -i ens192 -c 8 tcp

执行指令# tcpdump -i ens192 -c 8 proto 6

备注:上图看出这两个命令查到的信息是一样的。

四、Tcpdump生成抓包文件

说明:通过tcpdump -w文件名称 的格式生成抓包文件

1、执行指令# tcpdump -i ens192 -s0 -w /usr/local/temp/cap1.pcap

或者

2、查看pcap抓包文件

说明:使用wireshark软件查看抓包文件cap1.pcap

五、Tcpdump抓包实例

1、抓包Cookie

说明:通过搜索 Set-Cookie(来自服务器)和 Cookie(来自客户端)来抓包 cookie。

执行指令# tcpdump -i ens192 -nn -A -s0 -l | egrep -i 'Set-Cookie|Host:|Cookie:'

2、抓包所有ICMP数据包

执行指令# tcpdump -i ens192 -n icmp

3、抓包SMTP/POP3电子邮件

执行指令# tcpdump -i ens192 -nn -l port 25 | grep -i 'MAIL FROM\|RCPT TO'

4、抓包SNMP

执行指令# tcpdump -i ens192 -n -s0 port 161 and udp

5、抓包FTP凭证和命令

执行指令# tcpdump -i ens192 -nn -v port ftp or ftp-data

6、抓包HTTP数据包

执行指令# tcpdump -i ens192 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - tcp120xf0>>2)) != 0)'

7、抓包DHCP数据包

执行指令# tcpdump -i ens192 -v -n port 67 or 68

8、抓包DNS请求和响应

执行指令# tcpdump -i ens192 -s0 port 53

9、抓包所有明文密码

执行指令# tcpdump -i ens192 port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

10、检测网络流量中的端口扫描

执行指令# tcpdump -i ens192 -nn -c 8

相关推荐

Java程序员必备的Linux命令速查表

Java程序员必备的Linux命令速查表在Java开发的世界里,Linux就像一位默默支持的幕后英雄。作为一名Java开发者,掌握一些基本的Linux命令,不仅能提高工作效率,还能让你在团队中显得格外...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux磁盘管理相关命令(linux磁盘管理常用命令)

磁盘的使用情况会直接影响系统的性能,因此我们经常会用到以下命令,主要围绕:fdisk:磁盘分区df:文件系统的磁盘空间占用情况du:文件目录的磁盘空间占用情况查看磁盘关系lsblk查看磁盘分区情况fd...

第四章 Linux常用shell命令-4.5.磁盘管理

主要介绍一下跟磁盘管理相关命令,有比较多的内容摘抄自网络,如有侵权,请及时联系我删除:显示目前在Linux系统上的文件系统磁盘使用情况统计:df创建和维护分区表的程序:fdisk将磁盘分区或镜像挂...

Linux新手必备:20个高效命令轻松掌握!

Linux基本命令使用指南在现代计算机操作系统中,Linux因其开放性、灵活性和强大的功能,广泛应用于服务器和开发环境中。作为技术人员,掌握Linux的基本命令是非常重要的。在本文中,我们将重点介绍2...

每日必学Linux命令:ls命令(linux命令详解之ls命令)

ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件...

Linux系统dev和proc目录详解(linux dev/sr0)

简介:Linux系统里的/dev和/proc目录那可是相当重要的系统文件。在Linux系统中,/dev目录专门用来存放设备文件。不光有设备文件,系统里还有好多特殊功能也是通过设备的形式...

Linux切换目录之cd命令(linux切换指定目录)

1.基本概念1.1命令作用当我们在Linux系统上工作时,做得相当多的一项任务就是在不同的目录之间进行切换,这时就需要用到cd命令了。cd是"changedirectory"的首...

Linux切换目录(cd命令)(linux如何切换到目录)

cd命令,是ChangeDirectory的缩写,用来切换工作目录。Linux命令按照来源方式,可分为两种,分别是Shell内置命令和外部命令。所谓Shell内置命令,就是Shel...

MongoDB数据库的快速部署和启动(mongodb的使用教程)

一、Mongodb介绍常见数据库介绍关系数据库RDBMS设计表结构,通过SQL语句进行操作。连表关系常见的关系型数据库:mysqloracle(商业)DB2(IBM)sqlserver(微软...

5分钟学会网络服务搭建,飞凌i.MX9352 + Linux 6.1实战示例

在“万物互联”的技术浪潮下,网络服务已成为连接物理世界与数字世界的核心纽带,它不仅赋予了终端设备“开口说话”的能力,更构建了智能设备的开发范式。本文就将以飞凌嵌入式OK-MX9352-C开发板(搭载了...

centos安装geoserver并配置开机启动

前提条件:服务器已经安装了java环境一、下载下载地址:http://geoserver.org/release/maintain/下载后文件名为:geoserver-2.19.3-bin.zip二、...

开机启动流程(开机流程图)

grubandbootCentos5,6的开机启动流程grubCentos7的开机启动流程Centos5,6的开机启动流程initrd/initramfs一般存储在/boot目录下,以.img...

Linux cron服务概述(crontab服务)

cron是Linux/Unix系统中一个非常重要的后台服务(守护进程),用于在预定的时间间隔自动执行命令或脚本。它使得自动化重复性任务成为可能,例如日志清理、数据备份、系统维护等。1.cron...

CentOS 8利用rc.local进行开机自启动的配置

CentOS8利用rc.local进行开机自启动的配置CentOS8linux系统是不建议使用rc.local进行开机自启动的,建议创建systemdservice。我们为了方便以后多一个配置...