文章目录
- tcpdump
- tcpdump的参数选项
- 基本返回值查看
- 基本用法
- 抓取指定网络接口的所有流量
- 抓取指定网络接口指定主机地址【IP/域名】的所有流量
- 只取出端口 3333 的联机数据包
- 获取指定协议的数据包【如udp】
- 在网口eth1上抓取源端口为80且目的端口为6100的数据包
- 进阶用法【关系运算符】
- 抓取网口eth0上192.168.0.250与除192.168.0.74外的其他主机之间的icmp报文
- 抓取网口eth0上192.168.0.250与除192.168.0.74外的所有tcp数据包
- 抓取网口eth0上源mac地址或目的mac地址为00:21:85:6C:D9:A3的所有数据包
- linux解析公网地址会卡顿一下解决方法
-
tcpdump
cpdump 是 Linux 下的抓包工具,使用参数比较多,输出条目比较细。
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
tcpdump的参数选项
- 参数和说明如下
-A
:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;-a
:将网络地址和广播地址转变成名字;-c<数据包数目>
:在收到指定的包的数目后,tcpdump就会停止;-C
:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);-d
:将匹配信息包的代码以人们能够理解的汇编格式给出;-dd
:将匹配信息包的代码以c语言程序段的格式给出;-ddd
:将匹配信息包的代码以十进制的形式给出;-D
:列出当前主机的所有网卡编号和名称,可以用于选项 -i;-e
:在输出行打印出数据链路层的头部信息;-f
:将外部的Internet地址以数字的形式打印出来;-F<表达文件>
:从指定的文件中读取表达式,忽略其它的表达式;-i<网络界面>
:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;-l
:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);-n
:显示ip,而不是主机名;-nn
:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示-N
:不列出域名;-O
:不将数据包编码最佳化;-p
:不让网络界面进入混杂模式;-q
:快速输出,仅列出少数的传输协议信息;-r<数据包文件>
:从指定的文件中读取包(这些包一般通过-w选项产生);-s<数据包大小>
:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;-S
:用绝对而非相对数值列出TCP关联数;-t
:在输出的每一行不打印时间戳;-tt
:在输出的每一行显示未经格式化的时间戳记;-T<数据包类型>
:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);-v
:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;-vv
:输出详细的报文信息;-x/-xx/-X/-XX
:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;-w<数据包文件>
:直接将包写入文件中,并不分析和打印出来;expression
:用于筛选的逻辑表达式;
基本返回值查看
- 如我执行如下获取eth1网卡中与baidu.com有关的流量【需要另外打开一个窗口执行
ping baidu.com
】
大概参数说明看下面
[root@xz-own-httpfxdl-01 ~]
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
时间:时分秒 源ip 目的IP 协议 请求 ID编号 数量
17:50:31.716580 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 1, length 64
17:50:31.777902 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 1, length 64
17:50:32.717662 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 2, length 64
17:50:32.778671 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 2, length 64
17:50:33.719080 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 3, length 64
17:50:33.780053 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 3, length 64
17:50:34.720160 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 4, length 64
17:50:34.781057 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 4, length 64
17:50:35.721342 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 5, length 64
17:50:35.782349 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 5, length 64
17:50:36.722542 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 6, length 64
17:50:36.783785 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 6, length 64
17:50:37.723997 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 7, length 64
17:50:37.784894 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 7, length 64
17:50:38.725299 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 8, length 64
17:50:38.786279 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 8, length 64
获取任意参数并按下 `ctrl+c` 之后结束
^C
16 packets captured 捉取下来的数据包数量
27 packets received by filter 由过滤所得的总数据包数量
0 packets dropped by kernel 被核心所丢弃的数据包
[root@xz-own-httpfxdl-01 ~]
基本用法
抓取指定网络接口的所有流量
tcpdump -i eth1 -nn
- -i后面跟网卡名称
- -nn是输出打印【不加-nn就不会有输出内容,直到ctrl+C结束】
[root@xz-own-httpfxdl-01 ~]
....
17:40:30.977305 IP 118.31.44.10.60478 > 111.11.199.117.18081: Flags [.], ack 348, win 237, options [nop,nop,TS val 564692842 ecr 1112591151], length 0
17:40:30.977368 IP 118.31.44.10.60478 > 111.11.199.117.18081: Flags [F.], seq 1110, ack 349, win 237, options [nop,nop,TS val 564692842 ecr 1112591151], length 0
17:40:30.977389 IP 111.11.199.117.18081 > 118.31.44.10.60478: Flags [.], ack 1111, win 244, options [nop,nop,TS val 1112591234 ecr 564692842], length 0
^C
817 packets captured
818 packets received by filter
0 packets dropped by kernel
[root@xz-own-httpfxdl-01 ~]
抓取指定网络接口指定主机地址【IP/域名】的所有流量
tcpdump -i eth1 host baidu.com -nn
【需要另外打开一个窗口执行ping baidu.com
】
- 注:
tcpdump -i eth1 net baidu.com -nn
host【主机地址】可以换为net【网络地址】,具体有啥区别,感兴趣自己测吧,我是用host的。 - -i 后面网络接口
- host可以是IP,也可以是域名,如我这就用的域名
- -nn是输出
[root@xz-own-httpfxdl-01 ~]
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
17:50:31.716580 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 1, length 64
17:50:31.777902 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 1, length 64
17:50:32.717662 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 2, length 64
17:50:32.778671 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 2, length 64
17:50:33.719080 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 3, length 64
17:50:33.780053 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 3, length 64
17:50:34.720160 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 4, length 64
17:50:34.781057 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 4, length 64
17:50:35.721342 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 5, length 64
17:50:35.782349 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 5, length 64
17:50:36.722542 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 6, length 64
17:50:36.783785 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 6, length 64
17:50:37.723997 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 7, length 64
17:50:37.784894 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 7, length 64
17:50:38.725299 IP 111.11.199.117 > 39.156.66.10: ICMP echo request, id 24497, seq 8, length 64
17:50:38.786279 IP 39.156.66.10 > 111.11.199.117: ICMP echo reply, id 24497, seq 8, length 64
^C
16 packets captured
27 packets received by filter
0 packets dropped by kernel
[root@xz-own-httpfxdl-01 ~]
只取出端口 3333 的联机数据包
tcpdump -i eth0 -nn port 3333
[root@xz-own-httpfxdl-01 ~]
17:57:38.257344 IP 111.11.199.117.3333 > 211.139.70.92.21901: Flags [P.], seq 430192:430348, ack 37, win 261, length 156
17:57:38.258164 IP 211.139.70.92.21901 > 111.11.199.117.3333: Flags [P.], seq 37:73, ack 428840, win 513, length 36
^C
2864 packets captured
2868 packets received by filter
0 packets dropped by kernel
获取指定协议的数据包【如udp】
tcpdump -i eth0 nn tcp
- -i 后面网络接口
- -nn是输出
- tcp是协议,还包括
fddi,ip,arp,rarp,tcp,udp,imcp
等
[root@xz-own-httpfxdl-01 ~]
...
^c
1862 packets captured
1862 packets received by filter
0 packets dropped by kernel
在网口eth1上抓取源端口为80且目的端口为6100的数据包
tcpdump -i eth1 src port 80 and dst port 6100
- -i 后面是网络接口
- src port 80 源端口
- dst port 6100 目的端口
- 不测试了,没有这种场景,用不同的端口是方便理解
进阶用法【关系运算符】
抓取网口eth0上192.168.0.250与除192.168.0.74外的其他主机之间的icmp报文
tcpdump -i eth0 -s 1400 -nn host 192.168.0.250 and ! 192.168.0.74 and icmp -e
抓取网口eth0上192.168.0.250与除192.168.0.74外的所有tcp数据包
这里用到了括号,注意,在tcpdump中使用括号时必须用转义
tcpdump -i eth0 -s 1400 -nn tcp and \(host 192.168.0.250 and ! 192.168.0.74\)
抓取网口eth0上源mac地址或目的mac地址为00:21:85:6C:D9:A3的所有数据包
注意,这里的mac地址格式必须以:
分隔。
tcpdump -i eth0 ether src or dst 00:21:85:6C:D9:A3
linux解析公网地址会卡顿一下解决方法
问题说明
- 主机出公网的时候,刚开始会卡5秒,后面就一切正常。如下我开启抓包,新开一个窗口ping的时候,开始会卡5秒【多次执行都是一样,每次都是刚刚好卡5秒】
- 试了很多方法没解决,网络上也看了没啥问题,就很奇怪。 最后发现如果我将域名和IP添加到/etc/hosts中的话,ping域名就不会卡了,所以问题应该是出在解析上的。
解决方法
- 很简单——给DNS解析配置文件中添加一行
nameserver 127.0.0.1
本地解析即可~~
就是这么简单,搞得我怀疑人生。
[root@xz-own-httpfxdl-01 ~]
nameserver 127.0.0.1
nameserver 114.114.114.114
nameserver 10.233.3.11
[root@xz-own-httpfxdl-01 ~]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)