linux过滤端口抓包_linux tcpdump命令实现网络抓包分析详解

功能描述

使用tcpdump命令可以实现强大的网络数据抓包分析详解,可以将网络中传送的数据包的头完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来筛选信息。

tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。

tcpdump命令工作时先要把网卡的工作模式切换到混杂模式。所以tcpdump命令需要以root身份运行。tcpdump命令是linux下使用最广泛的网络协议分析工具。使用tcpdump命令时,必须精通TCP/IP协议工作原理。

命令语 法

tcpdump [选项] [表达式]

选项含义

选项

含义

-w

把数据包数据写入指定的文件。

-c

收到指定的数据包数目后,就停止进行倾倒操作。

-p

不让网络界面进入混杂模式。

-r

从指定的文件读取数据包数据。

-n

不把主机的网络地址转换成名字。

-i

使用指定的网络截面送出数据包。

-B

设定作业系统的铺获缓冲区大小

-q

快速输出,仅列出少数的传输协议信息。

-A

指定将每个监听到的数据包以ACSII可见字符打印

-nn

指定将每个监听到的数据包中的域名转换成IP地址,端口从应用名称转换成端口号后显示

-S

用绝对而非相对数值列出 TCP 关联数。

-e

在每列倾倒资料上显示连接层级的文件头。

-s

设置每个数据包的大小。

-t

在每列倾倒资料上不显示时间戳记。

-K

不要试图验证IP、TCP或UDP校验和

-L

在指定的模式列出该接口的已知数据链路类型并退出

-F

指定内含表达方式的文件。

-C

在把原始数据包直接保存到文件之前,检查文件大小是否超过指定文件大小,如果超过将关闭此文件,另外创建一个文件继续用于原始数据包的记录。新创建的文件名与指定的文件名一致,但文件名后多了一个数字。该数字会从1开始随着新创建文件的增多而增加。文件大小的单位是百万字节(1MB)

-m

从文件模块加载SMI MIB模块定义

-M

如果TCP数据包有TCP-MD5选项,那么为其摘要的验证指定一个公共的密钥密码

-T

强制将表达方式所指定的数据包转译成设置的数据包类型。

-W

与-C选项配合使用,限制可以打开的文件数目,并且当文件数据超过这里设置的限制时,依次循环替代之前的文件,这相当于一个文件缓冲池。同时会使得每个文件名的开头会出现足够多并用来占位得的0,这可以方便这些文件被正确地排序

-y

设置数据链接类型

-Z

使tcpdump放弃自己的超级权限(如果以root用户动tcpdump,tcpdump将会有超级用户权限 ),并把当前tcpdump的用户UID设置为指定用户首要所属组群的GID

捕获第一个网络接口上所有流过的数据包

[[email protected]~]# tcpdump

指定监听一个数据包,达到指定数量后自动停止抓包

[[email protected]~]# tcpdump -c 1

将捕获到的数据包写入/root/dumpfile文件中保存

[[email protected]~]# tcpdump -w /root/dumpfile

捕获经过网络接口eth0的数据包

[[email protected]~]# tcpdump -i eth0

捕获主机rhel收到和发出的所有数据包

[[email protected]~]# tcpdump host  rhel

捕获主机192.168.0.2收到和发出的所有数据包。

[[email protected]~]# tcpdump host 192.168.0.2

捕获主机192.168.0.2发送的所有数据包。

[[email protected]~]# tcpdump ip src 192.168.0.2

捕获所有发送到IP地址192.168.0.2的数据包

[[email protected]~]# tcpdump ip dst 192.168.0.2

捕获主机rhel和主机rhel2或rhel3之间的流量

[[email protected]~]# tcpdump host rhell and (rhel2 or rhel3 )

捕获主机192.168.0.2和主机192.168.0.4或192.168.0.5之间的通信

[[email protected]~]# tcpdump host 192.168.0.2 and (192.168.0.4 or 192.168.0.5 )

捕获主机rhel与主机linux之外的任何主机之间的所有IP数据包

[[email protected]~]# tcpdump ip host rhel and not linux

捕获主机192.168.0.2和主机192.168.0.5之外的所有主机通信的IP数据包

[[email protected]~]# tcpdump ip host 192.168.0.2 and ! 192.168.0.5

捕获主机rhel发送的经过网络接口eth0的数据包

[[email protected]~]# tcpdump -i eth0 src host rhel

捕获所有发送到主机rhel的经过网络接口eth0的数据包

[[email protected]~]# tcpdump -i eth0 dst host rhel

捕获本机UDP协议123端口的数据包

[[email protected]~]# tcpdump udp port 123

捕获本地主机与网络地址ucb-ether上的主机之间的所有数据包(网络地址在/etc/networks文件中定义)

[[email protected]~]# tcpdump net ucb-ether

捕获非本地主机的每个TCP对话的开始和结束包(SYN和FIN包)

[[email protected]~]# tcpdump  'tcp[tcpflags]& (tcp-syn|tcp-fin) !=0 and not src and dst net localnet'

显示不是通过以太网广播或多播信息包发送的IP广播或多播数据包

[[email protected]~]# tcpdump 'ether[0] & 1 = 0 and ip[16]>=224'

显示echo request或echo reply类型以外的ICMP包

[[email protected]~]# tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

捕获网络192.168.0.0/24发送的所有数据包

[[email protected]~]# tcpdump src net 192.168.0.0/24

捕获所有发送到网卡MAC地址00:0C:29:FA:19:10的数据包

[[email protected]~]# tcpdump ether dst 00:0C:29:FA:19:10

捕获ARP协议数据包

[[email protected]~]# tcpdump -p arp

捕获UDP协议,端口号为53的数据包

[[email protected]~]# tcpdump -p udp port 53

你可能感兴趣的:(linux过滤端口抓包)