TCPDUMP能不能只抓进入接口的流量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCPDUMP能不能只抓进入接口的流量相关的知识,希望对你有一定的参考价值。
使用TCPDUMP,对指定接口抓包,能不能只抓进入接口的流量,不抓从接口出去的流量,如果可以,命令如何?如果不可以,为什么?
参考技术A 你可以指定抓从某个主机过来的包:tcpdump host hostip -i 你的网卡名还可以加一些参数过滤,要是觉得tcpdump出来的信息部方便看的话,可以将抓到的包另存为pcap文件,然后用wireshark等分析工具打开看。
wireshark过滤器
过滤器分为抓包过滤器和显示过滤器抓包过滤器配置于抓包前,配置后,只抓经过抓包过滤器过滤的包
显示过滤器配置于抓包后,配置后,将已抓取的包进行过滤,得出心仪的包
抓包过滤器:
只抓取以太网类型为0x0800的流量 ether proto 0800
只抓vlan 10 的流量 vlan 10
抓 vlan 10 、vlan 20 、 vlan 30 的流量 vlan 10 and vlan 20 and 30
只抓发往主机10.1.1.1的所有流量 dest host 10.1.1.1
只抓源于192.168.1.0/24的所以流量 src net 192.168.1.0/24 或src net 192.168.1.0 netmask 255.255.255.0
不抓广播或多播 no broadcast 或 no multicast
只抓源于或发往2001::/16的ipv6数据包 net 2001::/16
只抓取icmp流量 ip proto 1
只抓ICMP echo request 流量 icmp[icmptype]==icmp-echo或icmp[icmptype]==8
只抓目的端口为80的数据包 dst port 80 或 dst port http
只抓所有TCP连接中用来发起(SYN标记位置1)连接或终止链接(FIN标记位置1)的数据包(TCP连接属于全双工连接,客户端与服务器之间会建立双向连接 tcp [tcpflags] & (tcp-syn | tcp-fin) != 0
只抓RST标记位置1的TCP数据包 [tcpflags]&(tcp-rst) !=0
抓特定长度的包,长度小于10 len<= 10
只抓源或目的端口范围在2000到2500之间的TCP数据包 tcp portrange 2000-2500
抓取所以TELNET流量,但由主机192.168.1.1发起的除外 tcp port 23 and not src host 192.168.1.1
proto[offset:bytes] 根据字节偏移和净载匹配来过滤
proto(协议类型:ip\udp\tcp等)【从协议头部的开始所偏移的字节数:抓包过滤器所要检查的字节数】
只抓目的端口范围为50-100的TCP数据包 tcp[2:2]>50 and tcp[2:2]<100
只抓窗口大小字段值低于8192的TCP数据包 tcp[14:2]<8192
ipv4多播流量:以太网帧的目的MAC地址必以01:00:5e打头
ipv6多播流量:以太网帧的目的MAC地址必以33:33打头
SYN:打开连接
FIM:拆除连接
ACK: 确认收到数据
RST:立即拆除连接
PSH:表示应将数据提交给末端应用程序(进程)处理
显示过滤器:
包含某个(串)字符 contains //http.host contains cisco
某串字符匹配某个条件 match //http.host matches www.cisco.com
在参数和条件操作符之间可以留空格,也可以不留空格
源和目的IP地址至少一个不为 192.168.1.100 // ip.addr != 192.168.1.100
源和目的ip地址均不为 192.168.1.100 //!(ip.addr == 192.168.1.100)
ETHERNET过滤器:只显示发往或源于具有某MAC地址的主机的数据帧 //eth.src==10:0b:a9:33:64:12
ARP过滤器:只显示请求帧 //arp.opcode==1
IP、ICMP过滤器 //ip.src == 10.1.1.1
只显示交换与一一对IP主机之间的所有IP数据包 //ip.addr==200.1.1.1 and ip.addr==19.168.1.1
只显示发往IP多播目的地址的所有数据包 //ip.dse == 224.0.0.0/4
只显示发往或源于某个IPV6地址的主机的IPV6数据包 //ipv6.addr==::1
显示指定IP子网(10.0.0.0/24)的主机,发往域名中包含指定字符串的网站(比如sohu)的所有IP流量 //ip.src==10.0.0.0/24 and http.host contains "souhu"
显示发源于指定IP子网(10.0.0.0/24)的所有IP广播流量 //ip.src==10.0.0.0/24 and eth.dst==ffff.ffff.ffff
只显示是所有广播包,但主机执行ARP请求操作时所触发的广播包除外 //not arp and eth.dst==ffff.ffff.ffff
显示除ICMP和ARP外所有流量 //not arp && not icmp
根据TCP/UDP端口来筛选包 //tcp.port == 《value》//udp.srcport==<value>
tcp.analysis:分析TCP重传、重复确认、窗口大小、
tcp.analysis.retransmission
tcp.analysis.duplicate_ack
tcp.analysis.zero_window
tcp.flags:检查数据包TCP头部中各标记位的置位情况
tcp.flags.syn==1
tcp.flags.reset==1
tcp.flags.fin==1
tcp.window_size_value<10 //检查头部窗口大小字段值低于10的数据包
HTTP显示过滤器:
显示访问某指定主机名的HTTP协议数据包 //http.host=="www.baidu.com"
显示包含HTTP GET方法的HTTP数据包 //http.request.method=="GET"
显示HTTP客户端发起的包含指定URI请求的HTTP数据包 // http.request.uri == "/v2/rating/mail.goole.com"
显示包含字符串:"mail.google.com"的URI请求的HTTP数据包 //http.request.uri contains "mail.google.com"
显示网络中传播的所有包含COOKIE请求的HTTP协议数据包 //http.cookie
显示所有包含HTTP服务器发送给HTTP客户的COOLIE SET命令的HTTP数据包 //http.set_cookie
显示包含ZIP文件中的HTTP数据包 //http matches ".zip" && http.request.method=="GET"
DNS显示过滤器:
dns.flags.response==0 //DNS查询
dns.flags.response==1 //DNS响应
FTP过滤器:
显示所有包含特定FTP请求命令的FTP数据包 //ftp
显示所有从TCP端口20或从其他端口发出的包含实际FTP数据的FTP数据包 //ftp-data
正则表达式:
^:匹配行开头
$:匹配行结尾
|:二选一
*:0至多次
+:1至多次
?:最多一次
{n}:精确N次
{n,}:至少N次
{n,m}:不低于N次也不高于M次
以上是关于TCPDUMP能不能只抓进入接口的流量的主要内容,如果未能解决你的问题,请参考以下文章