十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
linux抓包命令是“tcpdump”
站在用户的角度思考问题,与客户深入沟通,找到龙凤网站设计与龙凤网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖龙凤地区。
,可以抓取流动在网卡上的数据包,可以将网络中传送的数据包的“头”完全截获下来提供分析;它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
在Linux中输入命令man tcpdump给出的定义如下所示:
是不是感觉很懵?我们用通俗、形象、学术的表达方式来全方位描述tcpdump:
常用选项如下所示:
1、第一个抓包示例
-i : 指定用来抓包的网络接口,这个参数在服务器有多个网卡的时候非常有效
-nn : 不转换协议和端口号,当tcpdump遇到协议号或端口号,不需要将这些数字转换为对应的协议名称或端口名称,如22端口SSH端口,我们希望显示22,而非SSH
-X : 将协议头和包内容原原本本的显示出来,tcpdump会同时以16进制和ASCII的形式进行显示,在协议分析时非常好用。
'port 22' : 告诉tcpdump要有选择的显示所抓到的包,在该示例中,只显示源端口或目的端口是22的数据包,其他的数据包则不显示。
-c : 用来指定抓包的个数,示例设置的个数为1,则代表仅抓取一个包之后就退出不再抓包了。
2、-e 增加数据链路层的头部信息
通过两个命令的输出对比,可以看到增加-e选项后,输出的结果中增加MAC地址信息。而且在输出内容中会有 oui Unknown ,OUI即Organizationally unique identifier(组织唯一标识符),在任何一块网卡中烧录的6字节MAC地址中,前3个字节体现了OUI,其表明了网卡的制造组织,通常情况下,该标识符是唯一的。在本例中,由于没有识别出网卡的制造商,因此显示为Unknown。
3、-l 将输出变为行缓冲模式
-l的作用是将tcpdump的输出行为变为 行缓冲 方式,这样可以保证tcpdump遇到换行符,就立即将缓冲的内容输出到标准输出(stdout),方便利用管道或重定向方式进行后续处理,而不会造成延迟。
在Linux的标准I/O中提供了 全缓冲 、 行缓冲 、 无缓冲 三种缓冲方式。标准错误是不带缓冲的,而终端设备常为行缓冲,其他默认则为全缓冲。
在该例中,将tcpdump输出的内容通过管道提取第5列,可以用来查看详细的连接信息。而如果不加 -l 选项时,则只有当缓冲区全部占满时,tcpdump才会将缓冲区中的内容输出,这样就有可能导致输出不连续的,如果强行结束,则会影响下一行的完整性。
4、-t 输出不加时间戳
在增加选项 -t 选项后,时间23:48:03.193526就消失了。tcpdump默认情况下是按微秒来计时,因此最一个时间精确到了第6位。
5、 -v 显示详细信息
在增加 -v 选项后,会在输出的内容中增加 tos 、 ttl 、 id 、 offset 、 协议编号 、 总长度 等,如需要理解这些信息,就需要了解TCP/IP协议中的头的具体定义了。
6、-F 指定过滤表达式所在的文件
在第一个示例中,命令行增加了 'port 22' ,而这一项就叫 过滤条件 ,如果设置了过滤条件,则tcpdump只抓取满足过滤条件的数据包。如需要设置较为复杂的过滤条件或复用过滤条件时,这时可以将过滤条件保存为文件,然后通过-F加载该过滤文件。
7、 -w 将原始数据包信息保存到文件中
当我们查看保存的文件时,出现的是乱码。则代表无法直接查看,很有可能是二进制文件。那么怎么查看保存的文件了?请看下一个示例。
7、 -r 从文件中读取原始数据包
通过-w和-r选项即可实现抓包的录制回放功能。
众所周知,在Windows下开发运行环境下,在调试网络环境时,可以可以很方便的借助wireshark等软件进行抓包分析;并且在linux或者Ubuntu等桌面版里也可以进行安装抓包工具进行抓包分析,但总有一些情况,无法直接运用工具(比如一些没有界面的linux环境系统中),则此时我们就需要使用到最简单的tcpdump命令进行网络抓包。
一般的,linux下抓包时,抓取特定的网络数据包到当前文件夹下的文件中,再把文件拷贝出来利用Windows下的wireshark软件进行分析。
tcpdump命令详解:(简单举例)
1、抓取到的文件为filename.cap,然后将此文件拷贝到Windows下,使用wireshar打开后,即可对此文件进行分析。
2、eth0 是主机的网络适配器名称,具体的参数值可以在linux命令行窗口中通过 ifconfig 指令查询。
Linux系统中traceroute命令可以追踪到网络数据包的路由途径。下面由我为大家整理了linux系统中traceroute命令使用详解,希望对大家有帮助!
Linux系统中traceroute命令使用详解
1.命令格式:
traceroute[参数] [主机]
2.命令功能:
traceroute 指令让你追踪网络数据包的路由途径,预设数据包大小是40 Bytes, 用户可另行设置。
具体参数格式:traceroute [-dFlnrvx] [-f存活数值] [-g网关][-i网络界面][-m存活数值][-p通信端口][-s来源地址][-t服务类型][-w超时秒数][主机名称或IP地址][数据包大小]
3.命令参数
-d使用socket 层级的排错功能
-f设置第一个检测数据包的存活数值TTL的大小
-F设置勿离段位 ----我也不知道啥是勿离段位,查了下没查到什么信息^^
-g设置来源路由网关,最多可设置8个
-i使用指定的网络界面送出数据包
-I使用ICMP回应取代UDP资料信息
-m设置检测数据包的最大存活数值TTL 的大小
-n直接使用IP地址而非主机名称
-p设置UDP传输协议的通信端口
-r忽略普通的routing table ,直接将数据包送到远端主机上
-s设置本地主机送出数据包的IP地址
-t设置检测数据包的TOS数值
-v详细显示指令的执行过程
-w设置等待远端主机回报的时间
-x开启或关闭数据包的正确性检验
linux系统中traceroute命令实例
实例1:traceroute 用法简单,最常用的用法
命令:traceroute
说明:
记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是 -q 的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 , 表示向每个网关发送4个数据包
有时我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这种情况,可能是防火墙封掉了 ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因,当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加 -n 参数来避免DNS 解析,以 IP格式 输出数据。
如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;但目前看来国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
实例2:跳数设置
命令:
traceroute -m 10
实例3:只显示IP 地址,不查主机名DNS
命令:traceroute -n
实例4:探测包使用的基本UDP端口设置6888
命令:traceroute -p 6888
实例5:把探测包的个数设置为4个
命令:traceroute -q 4
实例6:绕过正常的路由表,直接发送到网络相连的主机
命令:traceroute -r
实例7:把对外发探测包的等待响应时间设置为3秒
命令:traceroute -w 3
补充:linux系统中traceroute 的工作原理
traceroute 程序的设计是利用 ICMP 及IP header 的TTL(time to live)栏位(field)。首先,traceroute 送出一个 TTL 是1 的IP datagram(每次送的的是3个 40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个 datagram 时,它将TTL减少 1,此时,TTL变为0了,所以该路径会将次 datagram 丢掉,并送回一个 【ICMP time exceeded】消息,traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个 TTL为 2 的 datagram ,发现第二个路由器,然后一直重复执行这种操作,直到某个datagram 抵达目的地。
在traceroute 送出 UDP datagram 到目的地时,它所选择送达的 port number 是一个一般应用程序都不会用的号码,所以当此UDP datagram到达目的地后该主机会送回一个 ICMP port unreachable 的消息,而当traceroute 收到这个消息时,便知道目的地已经到达,所以 traceroute 在 server 端也就没有所谓的 daemon 程式。
traceroute 通过计算 ICMP TTL 到期消息设备的IP 地址并做域名解析。每次,traceroute 都打印出一系列数据,包括所经过的路由设备的域名及 IP 地址,三个包每次来回所花时间。
linux上有两种比较好的抓包工具:ethereal和tcpdump
对于ethereal,有图形界面和字符界面两种方式。
到linux系统上执行rpm -qa | grep ethereal-gnome可查看是否安装了图形版本
但是如果服务器上没有xwin图形环境,那么就只能用字符界面了
命令:tethereal
可选参数:-V、-f
如果只执行tethereal,那么将只抓取数据包的包头,不显示里边的内容。加上-V参数后,即可显示内容。
-f 参数用于过滤,默认情况下将抓取tcp和udp所有协议。
如果想抓取UDP数据包并显示内容,则执行tethereal -V -f udp 即可
另外还可以配合grep命令提取需要的关键内容
tcudump命令是另外一个有用的工具,只能在字符下使用,
tcpdump -n -nn -vv -XX -tttt -c 10 -e
参数:
-n:数字端口
-nn:数字地址
-vv:输出详细信息
-c:抓取包的数量
-e:打印以太网报头信息
-i:选择适配器