首页 > 系统相关 >linux 网络管理之tcpdump命令详解

linux 网络管理之tcpdump命令详解

时间:2023-03-15 09:36:46浏览次数:64  
标签:nop 输出 IP 网络管理 tcpdump 192.168 linux 数据包

一、tcpdump的作用

tcpdump 是linux环境的网络数据采集分析工具, 也就是所谓的抓包工具,与tcpdump只有命令行格式不同,Windows有个图形可视化工具Wireshark
所谓的抓包工具就是从网络数据包中抓取我们需要的数据包,就需要定义一些过滤器,从庞大的网络流量中抓取符合条件的目标数据包,学习抓包工具的使用其实就是了解怎么定义和使用过滤规则

二、语法格式
[root@host114 home]# tcpdump -h
tcpdump version 4.9.3
libpcap version 1.9.1 (with TPACKET_V3)
OpenSSL 1.1.1k  FIPS 25 Mar 2021
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]

命令选项

-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组,并将链路层的头最小化
-b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd  #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F #从指定的文件中读取表达式,忽略其他的表达式
-i #指定监听网络接口
-l #使标准输出变为缓冲形式,可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N 不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出,即只输出较少的协议信息
-r #从指定的文件中读取数据,一般是-w保存的文件
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出,而不是相对值
-T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv#输出相信的保报文信息
三、参数解析


图片来自网络,把过滤规则分为几类:按协议、按类型、按数据流向

  • 协议过滤:包括 tcp, udp, icmp, ip, ip6, arp, rarp,ether
  • 类型过滤:包括host, net, port, portrange
  • 流向过滤:包括src, dst
  • 还可以用以上几种类型组合成过滤条件:当用到多个过滤器进行过滤时,有可能用到括号,而括号在shell中是特殊符号,还需要在括号外添加引号
3.1 显示数据包的头部
  • -x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部)
  • -xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部)
  • -X:以16进制和 ASCII码形式打印出每个包的数据(但不包括连接层的头部),这在分析一些新协议的数据包很方便。
  • -XX:以16进制和 ASCII码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便。
3.2 控制时间的显示
  • -t:在每行的输出中不输出时间
  • -tt:在每行的输出中会输出时间戳
  • -ttt:输出每两行打印的时间间隔(以毫秒为单位)
  • -tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
3.3 常用的逻辑表达式
  • 非 : ! or "not"
  • 且 : && or "and"
  • 或 : || or "or"
四、输出解析

输出实例

20:52:07.384759 IP 192.168.190.113.45020 > 439e3f58d19ff2d.samdom.znas.com.ssh: Flags [P.], seq 1405:1441, ack 2334348, win 9155, options [nop,nop,TS val 2882487051 ecr 3923644672], length 36
  • 第一列:抓包时间,如果在输出的每一行不打印时间戳,可以添加-t
  • 第二列:使用的网络协议
  • 第三列:源地址和端口号,可能是主机名或者IP地址
  • 第四列的箭头> :表示数据流向
  • 第五列:目的地址和端口号
  • 第6列:冒号
  • 第7列:剩余数据为数据包内容,包括Flags标识符号、seq序列号、ack号、Win窗口、以及最后表示的数据长度
Flag 标识
  • [S] : SYN(开始连接)
  • [P] : PSH(推送数据)
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)
  • [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
五、使用实例
  • tcpdump 默认抓取流经第一个网络接口的数据包
[root@host114 home]# tcpdump
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s1, link-type EN10MB (Ethernet), capture size 262144 bytes
20:58:50.538560 IP 439e3f58d19ff2d.samdom.znas.com.ssh > 192.168.190.113.45020: Flags [P.], seq 4119706794:4119707022, ack 374
5487054, win 304, options [nop,nop,TS val 3924048273 ecr 2882890622], length 228
20:58:50.538760 IP 192.168.190.113.45020 > 439e3f58d19ff2d.samdom.znas.com.ssh: Flags [.], ack 228, win 9155, options [nop,nop
,TS val 2882890652 ecr 3924048273], length 0
  • tcpdump -i 网络接口 抓取流经指定网络接口的数据包
[root@host114 home]# tcpdump -i enp2s1
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s1, link-type EN10MB (Ethernet), capture size 262144 bytes
20:59:29.768941 IP 10.229.37.245.57553 > 228.0.168.245.ha-cluster: UDP, length 202
20:59:29.775424 IP 439e3f58d19ff2d.samdom.znas.com.48620 > 192.168.190.129.49159: Flags [P.], seq 114548774:114548942, ack 298
308690, win 253, options [nop,nop,TS val 3618941989 ecr 52696109], length 168
20:59:29.776702 IP 192.168.190.129.49159 > 439e3f58d19ff2d.samdom.znas.com.48620: Flags [P.], seq 1:217, ack 168, win 513, opt
ions [nop,nop,TS val 52700349 ecr 3618941989], length 216
20:59:29.776767 IP 439e3f58d19ff2d.samdom.znas.com.48620 > 192.168.190.129.49159: Flags [.], ack 217, win 261, options [nop,no
p,TS val 3618941991 ecr 52700349], length 0
  • tcpdump host 指定IP 抓取流经指定IP的数据包,此时默认是流经当前主机第一个网络接口的数据包,示例是enp2s1
[root@host114 home]# tcpdump host 192.168.190.126
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s1, link-type EN10MB (Ethernet), capture size 262144 bytes
21:01:32.179594 IP 192.168.190.126.55203 > 439e3f58d19ff2d.samdom.znas.com.ctdb: Flags [S], seq 636612926, win 29200, options
[mss 1460,sackOK,TS val 1754330146 ecr 0,nop,wscale 7], length 0
21:01:32.179659 IP 439e3f58d19ff2d.samdom.znas.com.ctdb > 192.168.190.126.55203: Flags [R.], seq 0, ack 636612927, win 0, leng
th 0
  • tcpdump host 192.168.190.126 -X -X以十六进制和ASCII格式显示数据包的头部
09:36:31.833101 IP BHBGSTOR01.58048 > 10.2.32.11.ldap: UDP, length 104
	0x0000:  4500 0084 8e77 4000 4011 5857 0a02 1f8c  E....w@[email protected]....
	0x0010:  0a02 200b e2c0 0185 0070 541c 3066 0203  .........pT.0f..
	0x0020:  008b 9363 5f04 000a 0100 0a01 0002 0100  ...c_...........
	0x0030:  0201 0001 0100 a040 a30d 0405 4e74 5665  [email protected]
	0x0040:  7204 0406 0000 00a3 2204 0944 6e73 446f  r......."..DnsDo
	0x0050:  6d61 696e 0415 4342 4842 2e52 4f4f 542e  main..CBHB.ROOT.
	0x0060:  4342 4842 414e 4b2e 4e45 54a3 0b04 0341  CBHBANK.NET....A
	0x0070:  4143 0404 0000 0000 300a 0408 4e65 744c  AC......0...NetL
	0x0080:  6f67 6f6e                                ogon
  • 条件组合过滤抓包 多个条件组合,括号外须用引号
tcpdump  '((tcp) and (port 80) and ((dst 192.168.190.113) or (dst host 192.168.1.1)))'
六、参考资料

标签:nop,输出,IP,网络管理,tcpdump,192.168,linux,数据包
From: https://www.cnblogs.com/fyusac/p/16135523.html

相关文章

  • Linux history 命令使用技巧
    history命令使用起来非常简单。默认情况下,该命令读取文件​​~/.bash_history​​并在终端中打印内容。要查看历史执行的命令,请执行以下操作:history然后您可以滚动浏览输......
  • Linux提权的四个脚本发布啦!
    简介Metasploit中拥有各种奇淫巧计,让你能远程系统下尝试获取受害者电脑的系统级权限。除此之外,当你在目标机器上尝试提升权限时还有一些Linux脚本可供使用,通常它们针对的......
  • 如何访问Linux服务器上的图片资源呢
    一、Nginx实现图片访问这里是用的nginx搭建编辑nginx下conf目录下的nginx.conf文件找到对应的server,我这里端口设置的为8000添加location~.*\.(gif|jpg|pdf|jpeg|......
  • linux目录详解
    目录 /bin存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。/etc存放系统管理和配置文件/home存放所有用户文件的根目录,是......
  • Linux目录详解
    bin      包含应用程序的可执行文件dev      存储声卡,磁盘,光驱home     包含用户资料lib64      于存放64位系统标准程序......
  • 一条超级简单的故意让linux死机/宕机的命令
    转载自:https://blog.csdn.net/masterbee/article/details/101159135========== 最近因为测试需要,需要观察机器在死机状态下其它外设的反应,学习到了一条超级简单的能让L......
  • Rock Linux 系列4 --- SSH
    一、概要1.环境(1)RockyLinux9.12.概念SSH(SecureShell)是用于两台计算机进行网络通信和数据传输的协议,使用SSH进行通信的两台计算机其通信内容已被加密,这意味着......
  • Linux网络服务:DNS域名服务系统
    DNS域名系统服务1.DNS介绍1.1什么是域名?域名(DomainName),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计......
  • Linux网络服务:DHCP
    网络服务-DHCP1.DHCP简介 DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是一个工作在应用层的局域网网络协议,数据传输时使用UDP不可靠传输协议工作,通常被应......
  • vsftpd的一点SELinux设置
    在开了SELinux和防火墙的情况下,使用chroot_local_user=YES锁定用户在自己的home目录中,没想到vsftp的问题。FTP登录报错:500OOPS:cannotchangedirectory。下面来看看产......