tcpdump命令怎么在Linux系统中使用

2022年 10月 16日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

摘要:本文介绍了如何在Linux系统中使用tcpdump命令,主要包括示例、应用技巧、基本知识点总结和注意事项,具有一定的参考价值,有需要的朋友可以参考。

什么是Linux系统

Linux是一个类似Unix的操作系统,可以自由使用和自由传播。它是一个基于POSIX的多用户、多任务、多线程、多CPU的操作系统。Linux可以运行主要的UNIX工具软件、应用程序和网络协议。

命令简介

Tcpdump是一个功能强大的网络包捕获工具,运行在Linux平台上。熟悉tcpdump的使用可以帮助我们分析和调试网络数据。但是要想很好的掌握tcpdump,就必须对网络报文(TCP/IP协议)有一定的了解。但是,对于简单的使用,只要有一个网络的基本概念。

tcpdump作为互联网上系统管理员的经典必备工具,凭借其强大的功能和灵活的拦截策略,已经成为每一位高级系统管理员分析网络、排查问题的必备工具之一。在实际工作中,需要以root权限执行这个命令。

Tcpdump是一个非常复杂的命令,各个方面都不太好理解,不值得推荐。用它解决日常工作中的问题是关键。所以在接下来的总结中,我会更加侧重于实际工作,梳理一些在实际工作中经常用到的用法。对于一些冷门的用法,我在这里基本不做赘述。如果以后在工作中用到,我会在这里更新。

详细的命令解释

下面是tcpdump一些常用选项的总结。

-s number:默认情况下,tcpdump仅截取前96个字节。如果您想拦截所有消息内容,您需要使用此选项,其中number是要拦截的消息字节数。如果为0,表示拦截所有消息内容;

-nn:表示域名未解析,直接显示IP。netstat命令中也提供了此选项。

-X:使用十六进制和ascii同时显示消息内容;

-S:显示绝对序号而不是相对序号;

-i:指定要监控的网卡,如果是-i any,表示监控所有网卡;

-v,-vv,-vvv:显示更详细的信息;

-c号码:表示截取号码信息然后结束;

-w:将监控数据包写入文件保存,但不分析打印出来;

-A:只使用ascii打印邮件的所有数据,不要与-X选项一起使用。拦截HTTP请求时可以使用sudo tcpdump -nSA端口80

虽然tcpdump命令有很多选项,但常用的选项也就以上几个。这里我会多注意用例子,用例子学习tcpdump命令。

过滤器

在详细讲解用法举例时,需要掌握一些tcpdump的基本用法理论,先说过滤器。

服务器上有很多不正常的网络信息,很多时候我们只关注与具体问题相关的数据信息,这些有用的信息只占一小部分。为了不在信息的海洋中迷失自我,我们非常有必要学习tcpdump提供的灵活而强大的过滤器。

过滤器也可以简单地分为三类:类型,目录和原型。

类型:主要用于区分过滤报文的来源类型,主要由主机报文、网段报文和端口指定端口的报文组成;

Dir:只过滤报文的源地址和目的地址,主要包括src源地址和dst目的地址;

Proto:只过滤消息的协议类型,支持tcp、udp、icmp使用proto关键字时,可以省略它:

tcpdump -i eth2 arp

tcpdump -i eth2 ip

tcpdump -i eth2 tcp

tcpdump -i eth2 udp

tcpdump -i eth2 icmp

当我们使用tcpdump命令时,这些过滤器是必不可少的。

条件组合

在浩瀚的网络中,依然很难找到自己想要的网络套餐。为了捕获我们想要的网络数据包,我们在数据包捕获命令中包含的限制越多,我们捕获的无关数据包就越少,因此我们可以使用and (AND),or (OR,| |)和not (NOT,)来组合多个条件。这需要我们的基础

于某些条件来分析网络包是非常有用的。

使用实例

命令:tcpdump -i eth2

说明:监视指定网络接口的数据包

命令:tcpdump host 210.27.48.3

说明:截获210.27.48.3主机收到的和发出的所有数据包

命令:tcpdump host 210.27.48.4 and (210.27.48.5 or 210.27.48.6)

说明:截获210.27.48.3主机和210.27.48.5或者210.27.48.6主机进行通信的所有数据包

命令:tcpdump net 192.168.1.0/24

说明:截获192.168.1.0/24整个网络的数据包

命令:tcpdump -i eth0 src host 210.27.48.3

说明:监视eth0网卡上源地址是210.27.48.3的所有网络包

命令:tcpdump -i eth0 dst host 210.27.48.3

说明:监视eth0网卡上目的地址是210.27.48.3的所有网络包

命令:tcpdump tcp port 23 and host 210.27.48.3

说明:获取主机210.27.48.3上端口为23的应用发出和接收的所有TCP协议包

命令:tcpdump udp port 123

说明:获取本机123端口发出和接收的所有UDP协议包

命令:tcpdump src host 10.126.1.222 and dst net 10.126.1.0/24

说明:截获源主地址为10.126.1.222,目的地址是10.126.1.0/24整个网络

命令:tcpdump -i eth0 -s0 -G 60 -Z root -w %Y_%m%d_%H%M_%S.pcap

说明:抓取报文后按照指定时间间隔保存;-G选项后面接时间,单位为秒;上述命令就是每隔60秒生存一个文件

命令:tcpdump -i eth0 -s0 -C 1 -Z root -w eth0Packet.pcap

说明:抓取报文后按照指定报文大小保存;-C选项后接文件大小,单位为MB;上述命令就是每抓包文件达到1MB时就使用一个新的文件保存新抓的报文

到此这篇关于tcpdump命令怎么在Linux系统中使用的文章就介绍到这了,更多相关的内容请搜索亿速云以前的文章或继续浏览下面的相关文章希望大家以后多多支持亿速云!

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: