当前位置:   article > 正文

日常运维管理技巧十(linux下抓包 tcpdump)_tcpdump -nni

tcpdump -nni

十、linux下抓包

tcpdump命令是一款抓包工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

1、tcpdump工具需要自行安装:

# yum install -y tcpdump

格式:tcpdump 选项

可用选项,常见的我用红色标出:

-a:尝试将网络和广播地址转换成名称;

-c<数据包数量>:收到指定的数据包数量后,就停止进行倾倒操作;

-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;

-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;

-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;

-e:在每列倾倒资料上显示连接层级的文件头;

-f:用数字显示网际网络地址;

-F<表达文件>:指定内含表达方式的文件;

-i<网络界面>:使用指定的网络截面送出数据包;

-l:使用标准输出列的缓冲区;

 -n     Don't convert host addresses to names.  This can  be  used  to
              avoid DNS lookups.(使用IP地址显示)

 -nn    Don't convert protocol and port numbers etc. to names either.(不转换协议端口号)

-N:不列出域名;

-O:不将数据包编码最佳化;

-p:不让网络界面进入混杂模式;

-q :快速输出,仅列出少数的传输协议信息;

-r<数据包文件>:从指定的文件读取数据包数据;

-s<数据包大小>:设置每个数据包的大小;

-S:用绝对而非相对数值列出TCP关联数;

-t:在每列倾倒资料上不显示时间戳记;

-tt: 在每列倾倒资料上显示未经格式化的时间戳记;

-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;

-v:详细显示指令执行过程;

-vv:更详细显示指令执行过程;

-x:用十六进制字码列出数据包资料;

-w<数据包文件>:把数据包数据写入指定的文件。

2、日常用法:

直接执行tcpdump将监视第一个网络接口上所有流过的数据包

#tcpdump tcp port 443 and src host 147.128.7.21

tcpdump默认监控的是eth0端口,由于我这里的网卡名是eth0所以需要使用-i选项指定监听的网卡

# tcpdump -nni eth0 (比较常用)

一条信息表示的依次是:时间,IP 源IP.端口 > 目标IP.端口 数据包标签[],数据包类型、长度等信息。

##  -nn选项的作用是IP的端口都以数字的形式显示。不使用-nn选项的话有些时候会显示协议名等信息。

##  tcpdump默认会一直抓包,知道按Ctrl+C终止抓包。

监视指定端口的数据包

监视端口不是22和ip不是10.1.1.1的数据包:

# tcpdump -nn -i eth0 not port 22 and not host 10.1.1.1  (比较常用)

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

23:05:51.871825 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [S], seq 2512730790, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0

23:05:51.910597 IP 183.61.83.225.80 > 10.1.1.169.61745: Flags [S.], seq 2995415503, ack 2512730791, win 14600, options [mss 1420,nop,nop,sackOK,nop,wscale 9], length 0

23:05:51.910602 IP 10.1.1.169.61745 > 183.61.83.225.80: Flags [.], ack 1, win 260, length 0

抓取100个数据包然后将数据包保存到data.cab 文件中

# tcpdump -nni  eth0  -c 100 -w data.cap

tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

100 packets captured

100 packets received by filter

0 packets dropped by kernel

#这样抓取到的数据包只能使用tcpdump -r选项来读取, 直接cat的话就是乱码。

# tcpdump -r data.cap

reading from file data.cap, link-type EN10MB (Ethernet)

23:19:11.281776 IP long01.ssh > 10.1.1.169.61711: Flags [P.], seq 4277860660:4277860808, ack 3580160994, win 251, length 148

23:19:11.281872 IP 10.1.1.169.61711 > long01.ssh: Flags [.], ack 148, win 2050, length 0

23:19:13.883733 IP 10.1.1.169.51427 > 239.255.255.250.ssdp: UDP, length 137

(此处省略N行。。)

tshark,这个工具可以抓到比较详细的数据,但是用法还是比较复杂,平常使用网络设备做抓包。

tshark是另外一个和tcpdump相似的工具:

tshark命令需要先安装wireshark包才能使用。

[root@www ~]# yum install -y wireshark

案例:通过tshark抓取web服务的访问日志。

[root@www ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

tshark: -R without -2 is deprecated. For single-pass filtering use -Y.

Running as user "root" and group "root". This could be dangerous.

Capturing on 'eth0'

"Jun 10, 2018 23:52:23.476398708 CST" 222.209.152.12 blog.deaoza.cn GET /

"Jun 10, 2018 23:52:26.012348996 CST" 222.209.152.12 blog.deaoza.cn GET /

"Jun 10, 2018 23:52:27.461011485 CST" 111.255.194.27 GET /

"Jun 10, 2018 23:52:35.721419187 CST" 222.209.152.12 blog.deaoza.cn GET /

^C4 packets captured

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/489869
推荐阅读
相关标签
  

闽ICP备14008679号