tcpdump和tcpflow是Linux常用的命令行抓包工具,对于网络分析方面可以起到很大的帮助。
两个工具的差别
-
tcpflow实际上也是一个抓包工具,这个抓包工具与tcpdump不同的是它是以流为单位显示数据内容,而cpdump以包为单位显示数据。我们平常会经常分析HTTP数据,用tcpflow会更便捷,且tcpflow看起来会更加直观些。
-
tcpflow可以理解为是一个抓包工具,其工具看起来更像wireshark的命令行版本,他可以直接从网卡抓包,并且解析出来,支持http ftp这些L7协议,也支持tcp udp抓包,还可以从tcpdump中读取东西,因此是一个非常好的看包工具,有了这个东西以后再也不用把线上服务器上的dump抓下来再用wireshark打开了。
两种工具的具体使用
tcpdump介绍
tcpdump只有在root下才开启混杂模式,非root下不开启。所谓混杂模式就是一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
tcpdump常用的命令方式:tcpdump -i eth0 -nn -X 'port 53'
tcpdump参数详解:
-
-i 是interface含义,监听的网卡
-
-nn 当遇到端口协议号或端口号的时候不要转换为对应的协议名称或端口名称
-
-X 把协议头和包内容都原原本本的显示出来
-
'port 53' 只有源端口和目的端口为53的才会被显示
-
-t 不打印时间戳
-
-v 在原有输出的基础之上,你还会看到tos值、ttl值、ID值、总长度、校验值等。
-
-F 指定过滤表达式所在的文件,例如可以把4向中的port 53写到文件中去,在tcpdump时加-F后面接文件名称
-
tcpdump -i eth0 -w flowdata;-w 将流量保存到文件中去;存储的都是(raw packets)二进制的无法直接查看,需要用-r命令来查看
-
tcpdump -r flowdata;-r 读取用-w保存的数据
-
tcpdump -i eth0 -c 10 \'udp\' 只获取udp协议的包
-
tcpdump -i eth0 \'dst 8.8.8.8\' 查看源地址和目的地址之间的网络包;src 和dst;
-
tcpdump -i eth0 -c 3 \'dst port 53 or dst port 80\' 只查看目标机器端口是53或80的网络包,其它端口不关注;除了端口还支持host,net(指定网络段)、portrange:指定端口区域
-
tcpdump 'port ftp or ftp-data'; tcpdump会根据 /etc/services中协议对应的端口信息去找需要过滤端口条件
-
tcpdump 'ip[2:2] > 576';打印包长超过576字节的网络包
tcpflow介绍
tcpflow和tcpdump差别,tcpflow需要指定参数-p的情况下才会开启混杂模式。
tcpflow常用的命令方式:tcpflow -cp -i eth0
tcpflow参数详解--直接复制tcpflow -h里面的点:
[root@TEST ~]# tcpflow -h
tcpflow version 0.21 by Jeremy Elson
usage: tcpflow [-chpsv] [-b max_bytes] [-d debug_level] [-f max_fds]
[-i iface] [-w file] [expression]
-b: max number of bytes per flow to save
-c: console print only (don't create files)
-d: debug level; default is 1
-f: maximum number of file descriptors to use
-h: print this help message
-i: network interface on which to listen
(type "ifconfig -a" for a list of interfaces)
-p: don't use promiscuous mode ---开启混杂模式
-r: read packets from tcpdump output file
-s: strip non-printable characters (change to '.')
-v: verbose operation equivalent to -d 10
expression: tcpdump-like filtering expression --- 可以和tcpdump一样配置一定规则
阅读(5291) | 评论(0) | 转发(0) |