tcpdump 使用介绍

介绍

tcpdump 是一款强大的网络抓包工具,运行在 linux 平台上。熟悉 tcpdump 的使用能够帮助你分析、调试网络数据。

常用选项

-n  表示不要解析域名,直接显示 ip。
-nn**  不要解析域名和端口。
-X  同时用 hex 和 ascii 显示报文的内容。
-XX  同 -X,但同时显示以太网头部。
-S  显示绝对的序列号(sequence number),而不是相对编号。
-i  监听的网卡。
-v, -vv, -vvv  显示更多的详细信息。
-c number  截取 number 个报文,然后结束。
-A  只使用 ascii 打印报文的全部数据,不要和 -X 一起使用。
-D  列出所有可以监控的网卡。
-s 指定每条报文的最大字节数,默认为262144,如果值为0时,表示不截断,抓取完整的数据包

过滤器

机器上的网络报文数量异常的多,很多时候我们只关系和具体问题有关的数据报(比如访问某个网站的数据,或者 icmp 超时的报文等等),而这些数据只占到很小的一部分。把所有的数据截取下来,从里面找到想要的信息无疑是一件很费时费力的工作。而 tcpdump 提供了灵活的语法可以精确地截取关心的数据报,简化分析的工作量。这些选择数据包的语句就是过滤器(filter)!

过滤器也可以简单地分为三类:type, dir 和 proto。

Type 让你区分报文的类型,主要由 host(主机), net(网络) 和 port(端口) 组成。src(源地址) 和 dst(目的地址) 也可以用来过滤报文的源地址和目的地址。

过滤的真正强大之处在于你可以随意组合它们,而连接它们的逻辑就是常用的 与/AND/&& 、 或/OR/|| 和 非/not/!。

用例

1.监听所有端口,直接显示 ip 地址
	tcpdump -nS
	
2.显示更详细的数据报文,包括 tos, ttl, checksum 等
	tcpdump -nnvvS
	
3.显示数据报的全部数据信息,用 hex 和 ascii 两列对比输出
	tcpdump -nnvvXS
	
4.监控一个指定的网络接口
	tcpdump -i eth0
	
5.基于IP查找流量
	tcpdump host 114.114.114.114 
	
6.根据来源和目标进行筛选
	tcpdump src 1.1.1.1 (源地址)
	tcpdump dst 1.0.0.1 (目的地址)
	tcpdump not src  1.1.1.1 (过滤源地址)
	tcpdump not dst   1.0.0.1 (过滤目的地址)
	
7.查看某一网段或者子网的进出流量
	tcpdump net 1.2.3.0/24
	
8.使用十六进制输出
	tcpdump -c 1 -X icmp
	
9.显示特定端口的流量
	tcpdump port 3389 
	tcpdump src port 1025
	tcpdump dst port 1026
	
10.显示特定协议的流量
	tcpdump icmp
	tcpdump udp
	tcpdump tcp
	
11.查看某一范围内的所有端口的流量
	tcpdump portrange 21-23
	
12.将包存在文件中
	tcpdump port 80 -w capture_file
	
13.从文件中读取
	tcpdump -r capture_file
	
14.来自特定的IP,发往特定的端口
	tcpdump -nnvvS src 139.5.6.4 and dst port 3389
	
15.从某个网段来,到某个网段去
	tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
	
16.到某个IP的非ICMP流量
	tcpdump dst 192.168.0.2 and src net and not icmp
	tcpdump -vv src mars and not dst port 22
	
17.GET请求
	tcpdump -vvAls0 | grep 'GET'
	tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
	
18.POST请求
	tcpdump -vvAls0 | grep 'Host:'
	tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

输出

10:35:25.648675 IP chenlvzhoudembp.54018 > 192.168.1.1.domain: 18464+ PTR? 1.1.168.192.in-addr.arpa. (42)
10:35:25.650092 IP 192.168.1.1.domain > chenlvzhoudembp.54018: 18464* 1/0/0 PTR 192.168.1.1. (67)
10:35:25.895269 IP chenlvzhoudembp.58063 > 117.34.61.133.http: Flags [F.], seq 706908684, ack 3609747502, win 4096, length 0
10:35:25.896315 IP chenlvzhoudembp.52148 > 192.168.1.1.domain: 8596+ PTR? 133.61.34.117.in-addr.arpa. (44)
10:35:26.739836 IP chenlvzhoudembp.57928 > 14.215.177.39.https: Flags [F.], seq 907035098, ack 3372296595, win 4096, length 0
10:35:26.790594 IP 192.168.1.1.domain > chenlvzhoudembp.52148: 8596 NXDomain 0/1/0 (106)

第一列:时分秒毫秒
第二列:网络协议
第三列:发送方的ip地址+端口号(或者协议)
第四列:>
第五列:接收方的ip地址+端口号(或者协议)
第六列:冒号
第七列:Flag标识符:
[S]:建立连接的标识SYN
[P]:发送数据的标识
[F]:结束连接的标识FIN
[.]:没有标识

### TCPDump 使用教程 TCPDump 是一种强大的命令行工具,用于捕获和分析网络流量。以下是关于其基本功能以及如何使用的详细介绍。 #### 基本语法 TCPDump 的通用语法如下: ```bash tcpdump [选项] [表达式] ``` 其中 `选项` 控制程序的行为,而 `表达式` 定义要捕获哪些类型的流量。 --- #### 1. 抓取指定网段的流量 可以使用 `-net` 参数来限定特定子网范围内的流量。例如,如果想抓取来自或去往 `192.168.1.0/24` 子网的所有数据包,则可执行以下命令[^1]: ```bash [root@benarchen ~]# tcpdump -ni eth0 net 192.168.1.0/24 ``` 上述命令中的参数含义为: - `-n`: 不解析主机名。 - `-i eth0`: 指定监听的网络接口为 `eth0`。 - `net 192.168.1.0/24`: 表示仅显示涉及该子网的数据流。 --- #### 2. 过滤 SYN 数据包 为了专注于某些特殊类型的数据传输过程(比如建立连接),可以通过设置过滤器捕捉仅有 SYN 标志位被置起始信号的数据帧。下面这个例子展示了怎样实现这一点[^2]: ```bash tcpdump -i xl0 'tcp[tcpflags] & (tcp-syn) != 0' ``` 或者更简洁的形式也可以写成这样: ```bash tcpdump -i xl0 tcp[13] == 2 ``` 这里的关键部分解释如下: - `'tcp[tcpflags]'` 提取出 TCP 头部标志字段的内容; - `(tcp-syn)` 对应于二进制表示下的第 2 位置上的比特值——即 SYN 标记的位置; - 当且仅当这一位有效时才匹配成功并记录下来相应的报文信息。 --- #### 3. 高级过滤条件组合 假设我们需要监测两台具体设备间通过 HTTP 协议交互的情况,并排除掉访问百度网站所产生的通讯行为,则可以用到较为复杂的布尔逻辑运算符构建查询语句[^3]: ```bash tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! www.baidu.com ``` 这条指令分解来看就是分别设置了目标地址(`dst`)、源地址(`src`)、服务端口号(`port`)还有否定某个域名(`!host`)等多个筛选维度共同作用的结果。 --- #### 4. 自动化控制抓包数量 有时候我们并不希望一直持续运行直到手动终止进程,而是预先设定好想要获取多少条符合条件的日志之后就自动退出。这时就可以利用 `-c` 参数配合具体的数值完成这项需求[^4]. 下面给出的例子说明了如何让系统仅仅收集八个 ICMP 类型的消息后再停止工作: ```bash tcpdump -i eth0 -n -c 8 icmp ``` 在此基础上还可以进一步扩展其他附加特性,像关闭 DNS 反向查找等功能以提高效率(-n),或是调整输出格式等等。 --- ### 总结 以上介绍了几种常见的场景下运用 Tcpdump 工具的方法论及其背后原理剖析。实际操作过程中可以根据具体情况灵活搭配不同的开关项与约束规则达成预期目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值