精华内容
下载资源
问答
  • Linux tcpdump 监听指定网卡udp指定port

    万次阅读 2017-03-25 00:38:28
    tcpdump -i eth0 udp port 12345  Not signed i

    tcpdump -i eth0 udp port 12345
     Not signed i

    展开全文
  • tcpdump命令 – 监听网络流量 tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。 tcpdump命令工作时先要把网卡的工作模式切换到混杂模式。所以tcpdump...

    tcpdump命令 – 监听网络流量

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

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

    语法格式: tcpdump [参数]

    常用参数:

    -a 尝试将网络和广播地址转换成名称
    -c <数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作
    -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
    -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
    -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
    -e 在每列倾倒资料上显示连接层级的文件头
    -f 用数字显示网际网络地址
    -F<表达文件> 指定内含表达方式的文件
    -i<网络界面> 使用指定的网络截面送出数据包
    -l 使用标准输出列的缓冲区
    -n 不把主机的网络地址转换成名字
    -N 不列出域名
    -O 不将数据包编码最佳化
    -p 不让网络界面进入混杂模式
    -q 快速输出,仅列出少数的传输协议信息
    -r<数据包文件> 从指定的文件读取数据包数据
    -s<数据包大小> 设置每个数据包的大小
    -S 用绝对而非相对数值列出TCP关联数
    -t 在每列倾倒资料上不显示时间戳记
    -tt 在每列倾倒资料上显示未经格式化的时间戳记
    -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型
    -v 详细显示指令执行过程
    -vv 更详细显示指令执行过程
    -x 用十六进制字码列出数据包资料
    -w<数据包文件> 把数据包数据写入指定的文件

    【常用关键字】

    tcpdump命令中几种关键字:
    第一种:类型关键字,包括:host,net,port
    第二种:传输方向关键字,包括:src,dst
    第三种:协议关键字,包括: ip,arp,tcp,udp等类型
    第四种:其他关键字,包括:gateway,broadcast,less,greater,not,!,and,&&,or,||

    【备注说明】

    1. 抓取回环网口的包: $ tcpdump -i lo
    2. 防止包截断的方法: $ tcpdump -s 0
    3. 以数字显示主机及端口: $ tcpdump -n

    参考实例
    查看版本
    tcpdump --version
    在这里插入图片描述
    显示TCP包信息

    tcpdump

    监视指定网络接口的数据包:
    tcpdump -i eno16777736
    在这里插入图片描述
    抓取80端口的HTTP报文,以文本形式展示:

    tcpdump -i any port 80 -A在这里插入图片描述在这里插入图片描述
    抓取所有经过eno16777736的网络数据包,当前eno16777736的IP为192.168.23.134

    在192.168.23.142主机执行
    因为执行的为检测命令,如果当时没有输出,可以使用其他机器使用ssh或其他方式触发命令后续的输出内容
    tcpdump -i eno16777736 host 192.168.23.134
    在这里插入图片描述
    截取两台主机之间的数据
    tcpdump -n -i eno16777736 host 192.168.23.136 and 192.168.23.142
    在这里插入图片描述
    截取进入 两台主机 的数据
    tcpdump -n -i eno16777736 dst 192.168.23.136 or 192.168.23.142
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    【命令浅解】

    tcpdump tcp -i eno16777736 -t -s0 -c 100 and dst port ! 22 and src net 192.168.23.0/24 -w ./target.cap

    1)tcp: # ip,icmp,arp,rarp,udp这些选项要放第一个参数,用来过滤数据报的类型
    2)-i eno16777736 # 只抓经过网口eth1的包
    3)-t # 不显示时间戳
    4)-s 0 # 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
    5)-c 100 # 只抓取100个数据包
    6)dst port ! 22 # 不抓取目标端口是22的数据包
    7)src net 192.168.1.0/24 # 数据包的源网络地址为192.168.1.0/24
    8)-w ./target.cap # 保存成cap文件,方便用wireshark工具进行分析
    在这里插入图片描述 通过IP找流量
    tcpdump host 192.168.23.142 -i eno16777736
    在这里插入图片描述

    通过源地址和/或目的地址进行过滤
    如果你只想一个方向上的流量,可以使用 src 或 dst 指定。

    tcpdump src 192.168.23.142 -i eno16777736
    tcpdump dst 192.168.23.142 -i eno16777736

    在这里插入图片描述
    在这里插入图片描述
    通过网段过滤流量
    使用 net 选项查看进出一个网段或子网的进出流量。

    tcpdump net 192.168.23.0/24

    使用十六进制输出流量包的内容
    当要对一些包进行仔细审查其内容的时候,使用十六进制输出的方式来查看包就很有用了。
    -c 1 是指定只抓取一个包。

    tcpdump -c 1 -X icmp -i eno16777736
    tcpdump -c 1 -X tcp port 80 -i eno16777736
    在这里插入图片描述在这里插入图片描述
    查看指定端口上的流量
    通过 port 选项,可以找到指定端口上的进出流量。

    tcpdump port 80 -i eno16777736

    tcpdump src port 80 -i eno16777736
    在这里插入图片描述在这里插入图片描述

    只查看 IPv6 流量

    tcpdump src fe80::20c:29ff:fe7b:cf78 -i eno16777736
    tcpdump -nn dst fe80::20c:29ff:fe7b:cf78 -i eno16777736 -c 2

    使用 ipv6 地址ping使用的是 ping6 命令
    命令格式为
    ping6 ipv6地址%网卡名 #要通过 “%” 指定网卡名
    ping -6 ipv6地址%网卡名 #要通过 “%” 指定网卡名, ping -6 在ubuntu上无效,需要使用ping6

    通过端口范围过滤
    tcpdump portrange 21-233

    查看指定大小的数据包
    可以查看指定大小的数据包,指定数据包的大小的时候还可以使用比较运算符。

    tcpdump less 32
    tcpdump greater 64
    tcpdump <= 128

    从文件中读取抓包信息
    使用 -r 选项从文件中读取,在读取文件的时候,我们可以像正常抓包时一样使用tcpdump.需要注意的是,文件中不存在的数据是抓取不到和解析的。

    tcpdump -r capture_file
    示例

    tcpdump -r capture_file dst 192.168.23.134
    tcpdump -r capture_file src 192.168.23.134

    tcpdump -r capture_file -i ens33 icmp6
    在这里插入图片描述

    下面是 tcpdump 的一些其他进阶选项,抓包时候进行进一步调整。

    -A : Print each packet (minus its link level header) in ASCII. Handy for capturing web pages.
    -X : 十六进制的ASCII编码方式输出显示包内容
    -XX : 同 -X , 但是同时显示一台帧头部信息。
    -D : 显示可用的接口列表。
    -l : 显示行号输出。
    -q : 静默输出(显示最少的信息)。
    -t : 输出的时间戳为人类可读格式(经实验无时间戳输出)。
    -tttt : 输出最详细的时间戳为人类可读格式。
    -i eth0 : 监听 eth0 网卡抓包。
    -vv : 比 -v 有更详细的输出。
    -c : 指定的抓包的数量,之后停止。
    -s : 指定每个抓取的数据包的字节长度,默认是262144字节. 使用 -s0 获取整个数据包的内容。
    -S : 输出绝对数据包的绝对序列号。
    -e : 同时获取以太帧头信息。
    -E : 通过给定的密钥解密 IPSEC 数据流。

    裸视图输出
    下面的组合输出的是:没有主机名和端口解析、使用绝对序号、人类可读时间戳的详细输出。
    tcpdump -ttnnvvS -i eno16777736 -c 1
    在这里插入图片描述
    指定源IP和目的端口的流量
    tcpdump -nnvvS src 192.168.23.142 -i eno16777736 and dst port 80
    在这里插入图片描述

    网段到网段的流量
    下面阿组合输出为:从源为192.168.0.0/16目的为10.0.0.0/8或172.16.0.0/16、不解析主机名、十六进制格式、详细级别为-v级别的抓包信息。

    tcpdump -nvX src net 192.168.23.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

    到指定地址的非ICMP的流量
    tcpdump dst 192.168.23.142 -i eno16777736 and not icmp

    在这里插入图片描述
    关于分组的小结
    我们可以看到,通过合理的组合,我们就可以得到任何想要的结果,关键是要搞清楚想要的信心,并且构建合适的查询语法。

    在构建复杂查询时,可能必须使用单引号对选项进行分组,在下例中是在“()”括号下面。单引号用于告诉tcpdump忽略某些特殊字符。同样的技术也可以用于使用其他表达式(如host、port、net等)进行分组。

    tcpdump ‘src 10.0.2.4 and (dst port 3389 or 22)’

    展开全文
  • 文章目录一、介绍二、基础用法三、进阶用法四、总结和建议 一、介绍 在日常工作中,我们总是能...tcpdumpLinux 系统中最有效的网络工具之一,凡是有网络问题十有八九都可以用它快速定位。它运行在用户态,本质是通

    一、介绍

    在日常工作中,我们总是能遇上各种各样奇怪的网络问题,比如我这台机器怎么 ping 不通了,我的 ssh 怎么又连不上了,这个控制台怎么又访问不了了等等各种网络问题,当然有时候可以通过 ping、telnet、arp 这些命令和工具来排查和解决,但这些都比不上去抓个包来得实在,也就是下面要分享的 tcpdump 命令。

    tcpdump 是 Linux 系统中最有效的网络工具之一,凡是有网络问题十有八九都可以用它快速定位。它运行在用户态,本质是通过调用 libpcap 库的各种 api 来实现数据包的抓取功能。tcpdump 是非常强大的,并且相较其他的 Linux 命令和工具而且要稍微复杂一些,我们没必要完全掌握它,关键是灵活运用,能解决实际问题就好了。

    二、基础用法

    1、监听网卡 eth0,这个方式最简单了,但是用处不多,因为基本上只能看到数据包的信息刷屏,压根看不清,可以使用 ctrl+c 中断退出,如果真有需求,可以将输出内容重定向到一个文件,这样也更方便查看。

    [root@benarchen ~]# tcpdump -i eth0      #如果直接使用 tcpdump 一般是抓取除 lo 外的第一张网卡
    

    2、监听指定的主机的流量,抓包时指定 -nn 选项,不解析主机和端口名。这个参数很关键,会影响抓包的性能,一般抓包时都需要指定该选项。

    [root@benarchen ~]# tcpdump -i eth0 -nn 'host 192.168.1.231'
    这样的话,192.168.1.231 这台主机接收到的包和发送的包都会被抓取。
    [root@benarchen ~]# tcpdump -i eth0 -nn 'src host 192.168.1.231'
    这样只有 192.168.1.231 这台主机发送的包才会被抓取。
    [root@benarchen ~]# tcpdump -i eth0 -nn 'dst host 192.168.1.231'
    这样只有 192.168.1.231 这台主机接收到的包才会被抓取。
    

    3、监听指定端口,用来监听主机的 80 端口收到和发送的所有数据包,结合 -A (以 ascii 的方式显示数据包)参数,在 web 开发中,真是非常有用。

    [root@benarchen ~]# tcpdump -i eth0 -nnA 'port 80'
    

    4、监听指定主机和端口

    [root@benarchen ~]# tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
    #多个条件可以用 and,or 连接。上例表示监听 192.168.1.231 主机通过 80 端口发送的数据包。
    

    5、监听除某个端口外的其它端口

    [root@benarchen ~]# tcpdump -i eth0 -nnA '!port 22'
    #如果需要排除某个端口或者主机,可以使用 “!” 符号,上例表示监听非 22 端口的数据包。
    

    6、抓取指定端口范围的流量

    [root@benarchen ~]# tcpdump -ni eth0 portrange 80-9000
    

    7、抓取指定网段的流量

    [root@benarchen ~]# tcpdump -ni eth0 net 192.168.1.0/24
    

    8、监听指定协议的数据,这个是用来监听 icmp 协议的数据,类似的,如果要监听 tcp或者是 udp 协议,只需要例中的 icmp 就可以了。

    [root@benarchen ~]# tcpdump -i eth0 -nn 'icmp'
    

    9、将数据输出到一个指定的文件

    [root@benarchen ~]# tcpdump -i eth0 -nn port 8000 -w xxx.pcap
    

    三、进阶用法

    这里我说的进阶用法,其实也就是基础用法通过灵活组合的方式以达到解决问题的效果,这也正是 tcpdump 的强大之处。
    1、抓取指定客户端访问 ssh 的数据包

    [root@benarchen ~]# tcpdump -ni eth0 src 113.88.13.223 and dst port 22
    # 也可以反过来,抓取本机 22 端口发送给指定客户端的数据包
    [root@benarchen ~]# tcpdump -ni eth0 src port 22 and dst 113.88.13.223
    

    2、抓取从某个网段来,到某个网段去的流量

    [root@benarchen ~]# tcpdump -nn  src net 113.88.13.223/32 and dst net 10.0.0.0/24 or 172.17.0.0/16  
    

    3、抓取来自某个主机,发往非 ssh 端口的流量

    [root@benarchen ~]# tcpdump -nni eth0 src 113.88.13.223 and not dst port 22
    

    4、在某些复杂查询的时候需要使用引号、单引号告诉 tcpdump 忽略特定的特殊字符,这里的 () 就是特殊符号,如果不用引号的话,就需要使用转义字符

    [root@benarchen ~]# tcpdump -ni eth0 'src 113.88.13.223 and (dst port 3389 or 22)'
    # 或者也可以使用转义
    [root@benarchen ~]# tcpdump -ni eth0 src 113.88.13.223 and \(dst port 3389 or 22\)
    

    5、还可以基于包大小进行筛选,如果你正在查看特定的包大小,可以使用这个参数

    # 小于等于 48 字节
    [root@benarchen ~]# tcpdump -ni less 48
    # 等于 48 字节
    [root@benarchen ~]# tcpdump -ni eth0 length == 48
    # 大于等于 48 字节
    [root@benarchen ~]# tcpdump -ni eth0 greater 48
    

    6、过滤 TCP 特殊标记的数据包,可以帮助快速定位到网络问题

    # 抓取某主机发送的 RST 数据包
    [root@benarchen ~]# tcpdump -ni eth0 src host 113.88.13.223 and 'tcp[tcpflags] & (tcp-rst) != 0'
    # 抓取某主机发送的 SYN 数据包
    [root@benarchen ~]# tcpdump -ni eth0 src host 113.88.13.223 and 'tcp[tcpflags] & (tcp-syn) != 0'
    # 抓取某主机发送的 FIN 数据包
    [root@benarchen ~]# tcpdump -ni eth0 src host 113.88.13.223 and 'tcp[tcpflags] & (tcp-fin) != 0'
    # 抓取 TCP 连接中的 SYN 或 FIN 包
    [root@benarchen ~]# tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'
    

    7、抓取端口是 80,网络层协议为 IPv4, 并且含有数据,而不是 SYN、FIN 以及 ACK 等不含数据的数据包

    [root@benarchen ~]# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
    # 整个 IP 数据包长度减去 IP 头长度,再减去 TCP 头的长度,结果不为 0,就表示数据包有 data
    

    四、总结和建议

    1、常规参数

    # 基础参数
    -i:指定网络接口
    -D:列出可用于抓包的接口
    -s:指定数据包抓取的长度
    -c:指定要抓取的数据包的数量
    -w:将抓包数据保存在文件中
    -r:从文件中读取数据
    -C:指定文件大小,与 -w 配合使用
    -F:从文件中读取抓包的表达式
    -n:不解析主机和端口号,这个参数很重要,一般都需要加上
    -P:指定要抓取的包是流入还是流出的包,可以指定的值in、out、inout
    # 输出参数
    -e:输出信息中包含数据链路层头部信息
    -t:显示时间戳,tttt 显示更详细的时间
    -X:显示十六进制格式
    -v:显示详细的报文信息,尝试 -vvv,v 越多显示越详细
    

    2、组合表达式参数

    # 操作对象
    type,表示对象的类型,比如:host、net、port、portrange,如果不指定 type 的话,默认是 host
    dir:表示传输的方向,可取的方式为:src、dst。
    proto:表示协议,可选的协议有:ether、ip、ip6、arp、icmp、tcp、udp。
    # 组合连接词
    or:表示或操作
    and:表示与操作
    not:表示非操作
    

    3、建议

    • tcpdump 也不是万能的,还是要讲究灵活应用,配合其他的工具(ping、telnet、curl、arp 等)来解决实际问题
    • tcpdump 抓包是对系统性能有不小损耗的,生产环境慎用,并且应该尽量带上 -nn 选择,以降低性能损耗
    • 抓包时尽可能要有针对性的指定过滤规则,减少无效数据包的干扰
    展开全文
  • tcpdumplinux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04。 tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己...
  • Linux下使用tcpdump进行抓包(转)

    千次阅读 2019-07-11 14:51:31
    1、可以通过tcpdump抓取某个网卡的包,然后输出日志文件,通过Wireshark进行分析。 2、可以设置Wifi热点,然后通过手机连接这个热点,然后进行tcpdump的分析。而且在Ubuntu中新建Wifi热点无需额外安装软件,前提是要...
  • 1、抓取 网卡eth0 端口为80的流量(基本这一个命令就够了) tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' 参考文章: ...
  • 001网络基础

    2016-09-21 20:47:00
    4.linux tcpdump监听网卡 eth0,对方主机IP为10.1.1.180,tcp端口为80的数据,相应命令为? A:tcpdump -h eth0 -nn 'tcp and host 10.1.1.180:80' B:tcpdump -i eth0 -nn 'tcp and host 10.1.1.180:80' ...
  • 操作系统linux tcp/ip

    2016-09-20 09:20:48
    linux tcpdump监听网卡 eth0,对方主机IP为10.1.1.180,tcp端口为80的数据,相应命令为? 就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。简单说就是数据包抓包工具 ...
  • 【功能说明】 tcpdump命令是一个截获网络数据包的包分析工具。...tcpdump命令工作时要先把网卡的工作模式切换到混杂模式(promiscuous mode)。因为要修改网络接口的工作模式,所以tcpdump命令需要以root的...
  • Linux下使用tcpdump对网络数据包进行截获与分析概述​ tcpdump可以将网络中传送的数据包完全截获下来供我们分析,它支持网络层、协议、主机、网络或端口号的过滤,并提供了and、or、not等逻辑语句来让我们更进一步...
  • tcpdump-niem2-v-e|grepvlan
  • Linuxtcpdump利用端口和ip抓包方式

    千次阅读 2019-11-18 17:29:56
    tcpdump命令选项: -a #将网络地址和广播地址转变成名字 -A #以ASCII格式打印出所有分组,并将链路层的头最小化 -b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层 -c #指定收取数据包的次数,即在收到指定...
  • 使用 tcpdump监听某一端口数据

    千次阅读 2015-12-22 16:11:10
    tcpdump -i eth1 -nnn udp port 21001-i 表示指定网卡 -nnn 指定通信协议 port 指定端口号
  • tcpdump监听端口

    2013-07-24 16:17:00
    ...tcpdump -i eth0 -s 0 -A port 80 and host 10.1.1.121 -i 指定网卡 -s 包长 host 来源IP /————————————————————————————————— ——————花花世界: ...
  • Linux tcpdump命令详解

    千次阅读 2018-09-01 14:55:40
    用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、...
  • [root@ok Desktop]# yum search tcpdump Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.yun-idc.com * extras: mirrors.yu...
  • tcpdump 抓包

    2013-12-13 00:20:51
    监听网卡eth0 $ tcpdump -i eth0 这个方式最简单了,但是用处不多,因为基本上只能看到数据包的信息刷屏,压根看不清,可以使用ctrl+c中断退出,如果真有需求,可以将输出内容重定向到一个文件,这样也更方便查看。 ...
  • Linux下抓包命令tcpdump

    2021-04-06 10:10:02
    tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump...
  • Linux tcpdump 常用方法

    2020-03-22 11:24:18
    引用 1. A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic ... 2. Linux tcpdump 命令详解 https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html ...
  • tcpdump的命令格式tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己常用的参数:tcpdump[-i网卡]-nnAX'表达式'各参数说明如下:-i:interface 监听网卡。-nn:...
  • 今天总结几个非常常用的Linux命令,其中有几个在面试中很可能问相关命令的原理,比如后台运行命令。希望对大家有所帮助,最好自己去尝试在Linux操作系统中实践一下。1 查看目录以及权限在windows中,使用dir查看当前...
  • tcpdump简义:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。  tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或...
  • 十、linux下抓包 tcpdump命令是一款抓包工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。 1、tcpdump工具需要自行安装: # yum install -y tcpdump ...
  • linux监控网卡抓包

    2020-07-01 23:36:51
    /usr/sbin/tcpdump -n -e -i eth0 tcp port 8090 tcpdump 的抓包保存到文件的命令参数是-w xxx.cap 抓eth1的包 tcpdump -i eth1 -w /tmp/xxx.cap 抓 192.168.1.123的包 tcpdump -i eth1 host 192.168.1.123 -w /...
  • tcpdumpLinux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。本教程对tcpdump...
  • linux tcpdump 命令详解

    2018-04-07 09:34:47
    转载自:https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html简介用简单的话来定义... tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,854
精华内容 1,941
关键字:

linuxtcpdump监听网卡eth0

linux 订阅