Tcpdump使用

文章介绍了Tcpdump工具的使用,包括host、net、port等关键字,传输方向关键字,协议关键字以及基本语法和参数。通过具体案例分析了TCP的三次握手和四次挥手,FTP文件传输中获取密码的过程,以及DNS报文在解析问题中的作用。最后,文章提到了ARP、TCP和HTTP报文的相关分析。
摘要由CSDN通过智能技术生成


参考文章1;http://t.csdn.cn/L3WES
wireshark 抓包推荐文章

1. Tcpdump简介

Tcpdum是Linux上强大的网络数据采集分析工具。
常用于捕获WWW web数据包数据。使用数据连接层(OSI第2层)的MAC分组数据进行显示;
它可以列出十六进制(十六进制)和ASCII数据包内容,这对于监视数据包内容非常有用

1.1 第一种类型的关键字:host net port

host 210.27.48.3指明 210.27.48.3是一台主机      
net202.0.0.0 指明202.0.0.0 是一个网络地址   port 23 指明端口23

1.2 第二种确定传输方向的关键字

主要包括 src,dst,dst or src,dst and src。这些关键字指明了传输的方向。
src 源;dst 目的;没有指明方向关键字,则缺省是src or dst.

1.3 第三种是协议的关键字,主要包括ip,arp,udp,tcp

1.4 语法

Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
	[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
	[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
	[ -Q|-P in|out|inout ]
	[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
	[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
	[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
	[ -Z user ] [ expression ]

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

1.5 参数说明

-nn:直接以 IP 及 port number 头显示,而非主机名与服务名称
-X   告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

2.简单案例

参考连接:https://blog.51cto.com/u_15127502/4017921

2.1 三次握手及四次挥手案例分析

抓包方法:首先使用tcpdump命令截获本机与某远程主机的数据包,然后打开某远程主机对应的网站,这里用我的域名www.fonxian.cn来做试验。

得到域名对应的ip: 61.135.169.125
ping www.baidu.com

#得到本机内网ip:10.128.10.2
ifconfg

#参数的目的是获得ack的绝对值,不加该参数,第三次握手的ack为相对值1
sudo tcpdump -S host 192.168.0.108 and 151.101.100.133
得到下图

在这里插入图片描述

其中 
1 S 表示是SYN 标记 客户端正准备发起一个请求
2 客户端发送的seq=3481431827
3 表示服务器接收到客户端的请求 发给客户端 ack=34814318278 同时发送SYN=421177755
4 表示客户端接受到服务器的同意连接的请求 发送确认信息 ack=421177756
5 P 表示数据传输状态

6 F 表示连接开始断开的状态
7 表示客户端主动发起断开连接的请求 seq=3481432002, ack=421180537
8 服务端发起确认请求 ack=3481432003
9 表示服务端发起断开连接的请求 seq=421180537, ack=3481432003
10 表示客户端收到服务端发送的断开连接的请求 发送确认信息 ack=421180538

如果你是第一次看 tcpdump 的 man page 時,肯定一個頭兩個大,因為 tcpdump 幾乎都是分析封包的表頭資料,使用者如果沒有簡易的網路封包基礎,要看懂粉難吶! 所以,至少您得要回到 網路基礎裡面去將 TCP 封包的表頭資料理解理解才好啊

2.2 FTP 文件传输获取密码

[root@linux ~]# tcpdump -i lo -nn -X 'port 21'
    0x0000:  4500 0048 2a28 4000 4006 1286 7f00 0001  E..H*(@.@.......
    0x0010:  7f00 0001 0015 80ab 8355 2149 835c d825  .........U!I./.%
    0x0020:  8018 2000 fe3c 0000 0101 080a 0e2e 0b67  .....<.........g
    0x0030:  0e2e 0b61 3232 3020 2876 7346 5450 6420  ...a220.(vsFTPd.
    0x0040:  322e 302e 3129 0d0a                      2.0.1)..

    0x0000:  4510 0041 d34b 4000 4006 6959 7f00 0001  E..A.K@.@.iY....
    0x0010:  7f00 0001 80ab 0015 835c d825 8355 215d  ........./.%.U!]
    0x0020:  8018 2000 fe35 0000 0101 080a 0e2e 1b37  .....5.........7
    0x0030:  0e2e 0b67 5553 4552 2064 6d74 7361 690d  ...gUSER.dmtsai.
    0x0040:  0a                                       .

    0x0000:  4510 004a d34f 4000 4006 694c 7f00 0001  E..J.O@.@.iL....
    0x0010:  7f00 0001 80ab 0015 835c d832 8355 217f  ........./.2.U!.
    0x0020:  8018 2000 fe3e 0000 0101 080a 0e2e 3227  .....>........2'
    0x0030:  0e2e 1b38 5041 5353 206d 7970 6173 7377  ...8PASS.mypassw
    0x0040:  6f72 6469 7379 6f75 0d0a                 ordisyou..

上面的輸出結果已經被簡化過了,你必須要自行在你的輸出結果當中搜尋相關的字串才行。 從上面輸出結果的特殊字體中,我們可以發現『 該 FTP 軟體使用的是 vsftpd ,並且使用者輸入 dmtsai 這個帳號名稱,且密碼是 mypasswordisyou』 嘿嘿!你說可不可怕啊!如果使用的是明碼的方式來傳輸你的網路資料? 所以我們才常常在講啊,網路是很不安全低!

2.3 实际案例-DNS 报文

背景:大数据所在机器的容器里面已配置DNS 解析,但是在访问页面后报错依然是解析不到;后面又配置了dnsmasq 服务,依然报错解析不到;

2.3.1 配置信息

在这里插入图片描述

2.3.2 报错信息

请添加图片描述

2.3.3 tcpdump抓包分析

docker cp tcpdump.rpm openrestry:/opt
docker exec -it openrestry /bin/bash
cd /opt && rpm --ivh --force tcpdump.rpm --nodeps
开始抓包
tcpdump -i eth0 --any -w dns.cap
利用wireshark 分析

过滤出条件,只要dns 相关的53端口信息
大数据容器内能curl 通域名,但是openrestry lua 在调用时依然解析不到
一次 抓包显示,流量走的是ipv6
请添加图片描述

调整openrestry lua 的nginx 配置
在 location /sdkapi/track下第一行添加:
resolver 本地ip地址 ipv6=off;

二次抓包显示,流量走的是ipv4
请添加图片描述
成功解决

2.3.4 结论

此次抓包,分析报文中的DNS报文(DNS协议)本地配置的解析是ipv4 ,但是lua 解析的确实ipv6,此时就看到了问题所在。
在这里插入图片描述

对于其他问题,还需要找到问题点对应报文。对应协议的报文。比如:HTTP报文、TCP报文、ARP报文、此处的DNS 报文

2.4 ARP 报文

推荐链接:http://t.csdn.cn/D6C5R

2.5 TCP 报文

2.6 HTTP 报文

2.7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值