tcpdump命令参数说明和使用实例、linux解析公网地址会卡顿一下解决方法

2023-05-16

文章目录

  • 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语法:
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 -i eth1 host baidu.com  -nn
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 ~]# tcpdump -i eth1 -nn
....
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 -i eth1 host baidu.com  -nn
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
    • port 后面跟端口
    • 额 好像没啥测试的,我ssh
[root@xz-own-httpfxdl-01 ~]# tcpdump -i eth1 -nn port 3333
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 ~]# tcpdump -i eth1 -nn tcp
...
^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 目的端口
    • 不测试了,没有这种场景,用不同的端口是方便理解

进阶用法【关系运算符】

  • 实际上,tcpdump主要包括三种类型的关键字

    • 第一种是关于类型的关键字,主要包括host,net,port
    • 第二种是确定传输方向的关键字,主要包括src,dst,src or dst,src and dst,这些关键字指明了传输的方向。
    • 第三种是协议关键字,包括fddi,ip,arp,rarp,tcp,udp,imcp等,如上面的例。
  • 除了这三种类型的关键字外,还有其他重要的关键字,如:gateway,broadcast,less,greater,还有三种逻辑运算,取非运算是not!,与运算符是and&&,或运算符是or||,这些关键字可以组合起来构成强大的组合条件来满足我们的需求。

抓取网口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 ~]# cat /etc/resolv.conf
#; generated by /usr/sbin/dhclient-script
#search openstacklocal novalocal
nameserver 127.0.0.1
nameserver 114.114.114.114
nameserver 10.233.3.11
[root@xz-own-httpfxdl-01 ~]#

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tcpdump命令参数说明和使用实例、linux解析公网地址会卡顿一下解决方法 的相关文章

随机推荐

  • 前端请求后台报错400

    报错原因 xff1a 前端请求的字段名称或者字段类型和后台编写的实体类不一样 xff0c 或者前端提交的参数和后台需要的参数个数不匹配 xff0c 导致无法封装 xff0c 报错400 解决方法 xff1a 仔细对照前后端字段类型 xff0
  • Ubuntu终端文件管理工具ranger

    一 xff0c 安装 xff1a ubuntu使用apt get 安装 sudo apt get install ranger 二 xff0c 使用 ranger ranger 中有按键和命令两种操作方式 xff0c 按键是直接键入键盘上的
  • C# list根据字段生成排名

    需求分析 xff0c 我们要根据一个变量来生成排名 xff0c 变量数值相同则在同一名 xff0c 名数则跳过 xff0c 比如第一有两个 xff0c 那就不会有第二名 xff0c 直接到第三名 直接上代码 span class token
  • .net 6 web api项目添加日志(Serilog)管理,将日志输出到控制台、文件、数据库

    1 在nuget安装下面几个包 Serilog Serilog AspNetCore 用于日志输出到控制台 Serilog Formatting Compact 用于日志输出到mysql数据库 Serilog Sinks MySQL 用于日
  • GDB调试-新手笔记3

    ldd命令 43 readelf ldd 在制作自己的发行版时经常需要判断某条命令需要哪些共享库文件的支持 xff0c 以确保指定的命令在独立的系统内可以可靠的运行 ldd stack0 可以找到stack0程序使用的共享库 xff0c l
  • Spring源码分析(一)Spring的环境搭建与架构

    目录 一 Spring的基本信息1 1 Spring 概述1 2 架构 二 环境搭建2 1 gradle的安装与配置2 2 Spring源码构建 本图 xff1a 川西旅游中拍摄的 xff08 业余摄影 xff09 官网 xff1a Hom
  • RNA-seq:转录组数据分析处理(上)

    RNA seq xff1a 转录组数据分析处理 xff08 上 xff09 目录 RNA seq xff1a 转录组数据分析处理 xff08 上 xff09 一 流程概括二 准备工作1 fastq测序文件2 注释文件和基因组文件的获取 三
  • STM32串口数据接收 --环形缓冲区

    STM32串口数据接收 环形缓冲区 环形缓冲区简介 在单片机中串口通信是我们使用最频繁的 xff0c 使用串口通信就会用到串口的数据接收与发送 xff0c 环形缓冲区方式接收数据可以更好的保证数据丢帧率第 在通信程序中 xff0c 经常使用
  • Linux下驱动开发

    Linux下驱动开发 1 简介 驱动 xff0c 是指驱动计算机里软件的程序 驱动程序全称设备驱动程序 xff0c 是添加到操作系统中的特殊程序 xff0c 其中包含有关硬件设备的信息 驱动程序是操作系统与硬件连接的桥梁 设备驱动最通俗的解
  • openstack单网卡使用多IP说明、openstack虚拟机IP通网关但同网段IP不互通处理方法

    文章目录 openstack虚拟机IP通网关但同网段IP不互通处理方法问题描述处理方法 Openstack中单网卡使用多ip openstack虚拟机IP通网关但同网段IP不互通处理方法 问题描述 云平台的防火墙虚拟机部署再我们云平台上 x
  • Collections.singletonList使用方法

    方法注释 应用 xff1a 这个方法主要用于只有一个元素的优化 xff0c 减少内存分配 xff0c 无需分配额外的内存 xff0c 可以从SingletonList内部类看得出来 由于只有一个element 因此可以做到内存分配最小化 x
  • 如何修改电脑的MAC地址(手把手更改)

    打开控制面板 xff0c 显示如下 xff0c 然后点击 网络和Internet xff08 windows 43 r xff0c 然后输入control xff0c 按下回车 xff0c 即可打开控制面板 xff09 点击完 网络和Int
  • evo的快速安装Ubuntu 18.04

    由于一键安装成功后打开轨迹后报错 xff1a ERROR evo module evo main traj crashed no logfile written disabled 不会解决 xff0c 索性直接用源码安装方式 xff1a 如
  • 基于 SpringBoot + Vue 的音乐网站系统(源代码+数据库+思路文档)

    一 系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能 xff1a 后台对用户 歌曲 歌手 歌单信息的管理 用户角色包含以下功能 xff1a 音乐播放用户登录注册用户信息编辑 头像修改歌单打分歌单 歌曲评论歌单列表 歌手列
  • Linux下PS1设置

    PS1简介 PS1命令是linux系统中的一个全局变量 xff0c 用于定义用户命令行的字符显示 学名为 xff1a 默认提示符 盲猜Power Shell 1 PS1变量 span class token comment shell查看变
  • Linux内存管理

    Linux中的程序都是在进程中执行的 xff0c 而每个进程都有自己的虚拟地址空间 xff0c 进程中的内存操作 xff0c 比如访问 xff0c 插入数据都是在这块虚拟地址空间上操作的 虚拟地址空间 虚拟地址空间是一个进程所使用的虚拟内存
  • Maven库打包解决方案:No plugin found for prefix ‘install’ in the current project and in the plgin groups

    问题描述 我的外部本地包 xff0c 需要打包到我的maven库里 然后报错如下 No plugin found for prefix install in the current project and in the plgin grou
  • Ant Design Blazor表格高度自适应

    Ant Design Blazor表格高度自适应 一 先导入js 在 Host cshtml导入js lt component type 61 34 typeof App 34 render mode 61 34 ServerPrerend
  • Gson临时文件被删除造成的stackOverflowError

    错误内容 今天使用Gson序列化的时候出现了stackOverflowError的错误 xff0c 内容如下 xff1a at span class token class name span class token namespace c
  • tcpdump命令参数说明和使用实例、linux解析公网地址会卡顿一下解决方法

    文章目录 tcpdumptcpdump的参数选项基本返回值查看基本用法抓取指定网络接口的所有流量抓取指定网络接口指定主机地址 IP 域名 的所有流量只取出端口 3333 的联机数据包获取指定协议的数据包 如udp 在网口eth1上抓取源端口