Tcpdump常用命令及基础故障定位
- 格式:docx
- 大小:17.26 KB
- 文档页数:2
TCPDUMP使用说明tcpdump命令参数解释 (1)Tcpdump使用案例说明: (2)TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误 (3)TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别 (3)TCPDUMP 命令中出现“pcap_loop: Error: Interface packet capture busy”错误信息? (5)tcpdump命令参数解释TcpD ump可以将网络中传送的数据包的“头”完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、o r、not等逻辑语句来帮助你去掉无用的信息。
数据过滤不带任何参数的TcpDu mp将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。
所以,我们应当先想好需要哪些数据,Tc pDu mp提供以下参数供我们选择数据:注:tcpdump命令只针对经过CPU处理的数据包进行捕获,一但在BIGIP中的某个VIP采用的是performance L4的方式,数据包则由四层加层ASIC芯片处理而没有流经CPU,无法捕获数据。
解决该问题的方法是:选取该Virtual Server将type由Performance Layer4临时改为Standard再来用TCPDUMP命令抓包,抓包以后,改回到Performance Layer4。
Tcpdump使用案例说明:举例1:对external接口主机139.212.96.2并且端口为1433的流量进行监控。
端口不指定tcp和udp,默认为同时对tcp和udp进行报文捕获。
本命令不解析IP地址/端口号为主机名/服务名称,同时显示报文十二进制和文本信息,报文最大为1500字节。
f5-1:~# tcpdump -i external -nn -X -s 1600 port 1433 andhost 139.212.96.2tcpdump: listening on external 21:48:41.295546 139.212.96.2.1201 > 10.75.9.44.1433: .302192826:302192827(1) ack 558871968 win 64360 (DF) 0x0000 012c 0800 4500 0029 38cf 4000 7f06c3b2 .,..E..)8.@.....0x0010 8bd4 6002 0a4b 092c 04b1 0599 120318ba ..`..K.,........0x0020 214f b5a0 5010 fb68 a926 000000 !O..P..h.&...21:48:41.296015 10.75.9.44.1433 > 139.212.96.2.1201: . ack1 win 64636 (DF)0x0000 012c 0800 4500 0028 cb2d4000 7f063155 .,..E..(.-@...1U0x0010 0a4b 092c 8bd4 6002 0599 04b1 214fb5a0 .K.,..`.....!O..0x0020 1203 18bb 5010 fc7c a812 0000 00000000 ....P..|........0x0030 0000 .. 21:48:50.701130 139.212.96.2.1206 > 10.75.9.44.1433: .304974934:304974935(1) ack 565108263 win 64882 (DF)0x0000 012c 0800 4500 0029 38f7 4000 7f06c38a .,..E..)8.@.....0x0010 8bd4 6002 0a4b 092c 04b6 0599 122d8c56 ..`..K.,.....-.V0x0020 21ae de27 5010 fd72 0a6b 000000 !..'P..r.k...21:48:50.702567 10.75.9.44.1433 > 139.212.96.2.1206: . ack1 win 65267 (DF)0x0000 012c 0800 4500 0028 d3a6 4000 7f0628dc .,..E..(..@...(.0x0010 0a4b 092c 8bd4 6002 0599 04b6 21aede27 .K.,..`.....!..'0x0020 122d 8c57 5010 fef3 08ea 0000 0000 0000 .-.WP...........0x0030 0000 ..举例2:对internal接口主机172.31.230.53和172.31.230.51之间端口8080的流量进行分组捕获。
tcpdump命令详解⼀、tcpdump简介tcpdump命令是基于unix系统的命令⾏的数据报嗅探⼯具,可以抓取流动在⽹卡上的数据包。
它的原理⼤概如下:linux抓包是通过注册⼀种虚拟的底层⽹络协议来完成对⽹络报⽂(准确的是⽹络设备)消息的处理权。
当⽹卡接收到⼀个⽹络报⽂之后,它会遍历系统中所有已经注册的⽹络协议,如以太⽹协议、x25协议处理模块来尝试进⾏报⽂的解析处理。
当抓包模块把⾃⼰伪装成⼀个⽹络协议的时候,系统在收到报⽂的时候就会给这个伪协议⼀次机会,让它对⽹卡收到的保温进⾏⼀次处理,此时该模块就会趁机对报⽂进⾏窥探,也就是啊这个报⽂完完整整的复制⼀份,假装是⾃⼰接收的报⽂,汇报给抓包模块。
⼆、语法1、查看本地⽹卡状态[root@cnetos daocoder]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgdocker0 1500 40409 0 0 0 20376 0 0 0 BMUens5f0 1500 22999894941 0 0 0 25581016784 0 0 0 BMRUlo 65536 850291094 0 0 0 850291094 0 0 0 LRUIface:存在的⽹卡。
MTU:最⼤传输单元。
RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发⽣错误、流式、碰撞的总数。
TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发⽣错误、流式、碰撞的总数。
2、tcpdump帮助命令[root@centos daocoder]# tcpdump --helptcpdump version 4.9.0libpcap version 1.5.3OpenSSL 1.0.1e-fips 11 Feb 2013Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ][ -Q|-P 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 ](1)、类型的关键字host:指明⼀台主机。
tcpdump常用命令用法tcpdump是一个常用的网络抓包工具,可以用来分析网络流量,下面是一些常见的tcpdump命令用法:1. 抓取指定网卡的所有流量:```tcpdump -i eth0```这里的eth0是网卡的名称,可以根据实际情况替换。
2. 抓取指定源IP和目标IP的流量:```tcpdump src <source_ip> and dst <destination_ip>```source_ip和destination_ip分别是源IP和目标IP地址。
3. 抓取指定端口的流量:```tcpdump port <port_number>```port_number是要抓取的端口号。
4. 抓取指定协议的流量:```tcpdump -v icmp```这里的icmp是要抓取的协议,可以是icmp、tcp、udp等。
5. 抓取指定主机的流量:```tcpdump host <hostname>```hostname是要抓取的主机名。
6. 抓取指定长度的流量:```tcpdump less <length>```length是要抓取的数据包长度。
7. 将抓包结果保存到文件中:```tcpdump -w <output_file>```output_file是保存抓包结果的文件名。
8. 从文件中读取抓包结果进行分析:```tcpdump -r <input_file>```input_file是要读取的抓包结果文件名。
这些命令用法只是tcpdump的一部分功能,更详细的使用方法可以参考tcpdump的帮助文档。
tcpdump常用抓包命令一、什么是tcpdumptcpdump是一款用于抓取网络数据包的功能强大的命令行工具。
它可以通过监听网络接口,捕获和分析传输过程中的数据包,对网络问题进行排查和故障分析。
二、安装tcpdump在大多数Linux发行版中,tcpdump已经默认安装。
如果您的系统没有预装tcpdump,可以通过以下命令进行安装:sudo apt-get install tcpdump # Debian/Ubuntusudo yum install tcpdump # CentOS/RHEL三、tcpdump的基本用法1. 抓取数据包使用tcpdump进行抓包非常简单,只需要在命令行中输入tcpdump命令即可开始捕获所有的数据包。
tcpdump2. 指定网络接口如果有多个网络接口可以选择,可以使用-i参数指定要监听的网络接口。
例如,要监听eth0接口的数据包,可以使用以下命令:tcpdump -i eth03. 保存捕获的数据包默认情况下,tcpdump会将捕获的数据包输出到标准输出。
如果需要将数据包保存到文件中,可以使用-w参数指定文件名。
例如,将数据包保存到capture.pcap文件中:tcpdump -w capture.pcap4. 显示捕获的数据包内容通过默认设置,tcpdump只会以十六进制格式显示捕获的数据包。
如果想要查看更多的信息,可以使用-A参数以ASCII格式显示数据包内容。
例如:tcpdump -A5. 显示源和目标IP地址如果只需要查看数据包的源和目标IP地址,而不关心其他详细内容,可以使用-n 参数。
例如:tcpdump -n四、高级用法1. 指定抓包数量默认情况下,tcpdump会一直抓包直到用户终止程序。
如果只需要抓取固定数量的数据包,可以使用-c参数指定要抓取的包数量。
例如,只抓取10个数据包:tcpdump -c 102. 使用过滤器tcpdump可以使用过滤器来指定要抓取的数据包的条件。
教你怎样利用包分析软件排查网络故障作为IP网络的系统管理员,经常会遇到一些网络连接方面的故障,在排查这些接故障时,除了凭借经验外,使用包分析软件往往会起到事半功倍的效果。
常用的包分析软件非常多,常见的如tcpdump,sniffer,windump,ettercap等。
我们今天就介绍通过包分析软件tcpdump排查网络故障的几个例子,关于tcpdump软件的介绍,安装,基本用法的资料非常多,读者可以查阅,这里不介绍了。
例1:arp故障故障现象:局域网中的一台采用solaris操作系统的服务器A-SERVER网络连接不正常,从任意主机上都无法ping通该服务器。
排查:首先检查系统,系统本身工作正常,无特殊进程运行,cpu,内存利用率正常,无挂接任何形式的防火墙,网线正常。
此时我们借助tcpdump来进行故障定位,首先我们将从B-CLIENT主机上执行ping命令,发送icmp数据包给A-SERVER,如下:[root@redhat log]# ping A-SERVERPING A-SERVER from B-CLIENT : 56(84) bytes of data.此时在A-SERVER启动tcpdump,对来自主机B-CLIENT的数据包进行捕获。
A-SERVER# tcpdump host B-CLIENTtcpdump: listening on hme016:32:32.611251 arp who-has A-SERVER tell B-CLIENT16:32:33.611425 arp who-has A-SERVER tell B-CLIENT16:32:34.611623 arp who-has A-SERVER tell B-CLIENT我们看到,没有收到预料中的ICMP报文,反而捕获到了B-CLIENT发送的arp广播包,由于主机B-CLIENT无法利用arp得到服务器A-SERVER的地址,因此反复询问A-SERVER的MAC地址,由此看来,高层的出问题的可能性不大,很可能在链路层有些问题,先来查查主机A-SERVER的arp 表:A-SERVER# arp -aNet to Media TableDevice IP Address Mask Flags Phys Addr------ -------------------- --------------- ----- ---------------hme0 netgate 255.255.255.255 00:90:6d:f2:24:00hme0 A-SERVER 255.255.255.255 S 00:03:ba:08:b2:83hme0 240.0.0.0 SM 01:00:5e:00:00:00请注意A-SERVER的Flags位置,我们看到了只有S标志。
tcpdump命令详解简介⽤简单的话来定义tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。
tcpdump可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
实⽤命令实例默认启动tcpdump普通情况下,直接启动tcpdump将监视第⼀个⽹络接⼝上所有流过的数据包。
1、tcpdump: no suitable device found问题分析及解决:2种原因:1.权限不够,⼀般不经过处理,只⽤root⽤户能使⽤tcpdump , sudo ./tcpdump2.缺省只能同时使⽤4个tcpdump,如⽤完,则报此类错。
需要停掉多余的tcpdump2、fedora 14 中运⾏make install 命令也要加上 sudo3、出现种提⽰ linux UID or EUID of 0 required也是权限问题,fedora 下加上sudo监视指定⽹络接⼝的数据包tcpdump -i eth1如果不指定⽹卡,默认tcpdump只会监视第⼀个⽹络接⼝,⼀般是eth0,下⾯的例⼦都没有指定⽹络接⼝。
监视指定主机的数据包打印所有进⼊或离开sundown的数据包.tcpdump host sundown也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包tcpdump host 210.27.48.1打印helios 与 hot 或者与 ace 之间通信的数据包tcpdump host helios and \( hot or ace \)截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.tcpdump ip host ace and not helios如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使⽤命令:tcpdump ip host 210.27.48.1 and ! 210.27.48.2截获主机hostname发送的所有数据tcpdump -i eth0 src host hostname监视所有送到主机hostname的数据包tcpdump -i eth0 dst host hostname监视指定主机和端⼝的数据包如果想要获取主机210.27.48.1接收或发出的telnet包,同时本地端⼝是23,使⽤如下命令tcpdump tcp port 23 and host 210.27.48.118:16:52.987746 IP 10.1.210.111.55634 > izwz969829wo6i9nlscjukz.9124: Flags [S], seq 833996115, win 29200, options [mss 1460,sackOK,TS val 1492682208 ecr 0,nop,wscale 7], length 018:16:52.987794 IP izwz969829wo6i9nlscjukz.9124 > 10.1.210.111.55634: Flags [S.], seq 540069507, ack 833996116, win 28960, options [mss 1460,sackOK,TS val 1492698220 ecr 1492682208,nop,wscale 7], length 0 18:16:52.987980 IP 10.1.210.111.55634 > izwz969829wo6i9nlscjukz.9124: Flags [R.], seq 1, ack 1, win 229, options [nop,nop,TS val 0 ecr 1492698220], length 018:16:52.989616 IP 10.1.210.111.55636 > izwz969829wo6i9nlscjukz.9124: Flags [S], seq 236673865, win 29200, options [mss 1460,sackOK,TS val 1492682210 ecr 0,nop,wscale 7], length 018:16:52.989642 IP izwz969829wo6i9nlscjukz.9124 > 10.1.210.111.55636: Flags [S.], seq 2397900505, ack 236673866, win 28960, options [mss 1460,sackOK,TS val 1492698222 ecr 1492682210,nop,wscale 7], length 0 18:16:52.989782 IP 10.1.210.111.55636 > izwz969829wo6i9nlscjukz.9124: Flags [R.], seq 1, ack 1, win 229, options [nop,nop,TS val 0 ecr 1492698222], length 018:16:54.189162 IP izwz969829wo6i9nlscjukz.9124 > 10.1.210.111.55634: Flags [S.], seq 540069507, ack 833996116, win 28960, options [mss 1460,sackOK,TS val 1492699422 ecr 1492682208,nop,wscale 7], length 0 18:16:54.189319 IP 10.1.210.111.55634 > izwz969829wo6i9nlscjukz.9124: Flags [R], seq 833996116, win 0, length 018:16:54.389178 IP izwz969829wo6i9nlscjukz.9124 > 10.1.210.111.55636: Flags [S.], seq 2397900505, ack 236673866, win 28960, options [mss 1460,sackOK,TS val 1492699622 ecr 1492682210,nop,wscale 7], length 0 18:16:54.389374 IP 10.1.210.111.55636 > izwz969829wo6i9nlscjukz.9124: Flags [R], seq 236673866, win 0, length 018:16:56.989896 IP 10.1.210.111.55656 > izwz969829wo6i9nlscjukz.9124: Flags [S], seq 2567997945, win 29200, options [mss 1460,sackOK,TS val 1492686210 ecr 0,nop,wscale 7], length 018:16:56.989959 IP izwz969829wo6i9nlscjukz.9124我的haproxy配置的是4秒,这⾥怎么是2秒呢?看上⾯的标志位对本机的udp 123 端⼝进⾏监视 123 为ntp的服务端⼝tcpdump udp port 123监视指定⽹络的数据包打印本地主机与Berkeley⽹络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley⽹络'的⽹络地址,此表达式最原始的含义可表达为: 打印⽹络地址为ucb-ether的所有数据包)tcpdump net ucb-ether打印所有通过⽹关snup的ftp数据包(注意, 表达式被单引号括起来了, 这可以防⽌shell对其中的括号进⾏错误解析)tcpdump 'gateway snup and (port ftp or ftp-data)'打印所有源地址或⽬标地址是本地主机的IP数据包(如果本地⽹络通过⽹关连到了另⼀⽹络, 则另⼀⽹络并不能算作本地⽹络.(nt: 此句翻译曲折,需补充).localnet 实际使⽤时要真正替换成本地⽹络的名字)tcpdump ip and not net localnet监视指定协议的数据包打印TCP会话中的的开始和结束数据包, 并且数据包的源或⽬的不是本地⽹络上的主机.(nt: localnet, 实际使⽤时要真正替换成本地⽹络的名字))tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'打印所有源或⽬的端⼝是80, ⽹络层协议为IPv4, 并且含有数据,⽽不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'(nt: 可理解为, ip[2:2]表⽰整个ip数据包的长度, (ip[0]&0xf)<<2)表⽰ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, ⽽此域的单位为32bit, 要换算成字节数需要乘以4, 即左移2. (tcp[12]&0xf0)>>4 表⽰tcp头的长度, 此域的单位也是32bit, 换算成⽐特数为 ((tcp[12]&0xf0) >> 4) << 2, 即 ((tcp[12]&0xf0)>>2). ((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0 表⽰: 整个ip数据包的长度减去ip头的长度,再减去tcp头的长度不为0, 这就意味着, ip数据包中确实是有数据.对于ipv6版本只需考虑ipv6头中的'Payload Length' 与 'tcp头的长度'的差值, 并且其中表达⽅式'ip[]'需换成'ip6[]'.)打印长度超过576字节, 并且⽹关地址是snup的IP数据包tcpdump 'gateway snup and ip[2:2] > 576'打印所有IP层⼴播或多播的数据包,但不是物理以太⽹层的⼴播或多播数据报tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'打印除'echo request'或者'echo reply'类型以外的ICMP数据包( ⽐如,需要打印所有⾮ping 程序产⽣的数据包时可⽤到此表达式 .(nt: 'echo reuqest' 与 'echo reply' 这两种类型的ICMP数据包通常由ping程序产⽣))tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'tcpdump 与wiresharkWireshark(以前是ethereal)是Windows下⾮常简单易⽤的抓包⼯具。
TCP连接的状态详解以及故障排查⼀、TCP⽹络常⽤命令了解TCP之前,先了解⼏个命令:linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lsof -i:port 可以检测到打开套接字的状况3)、 sar -n SOCK 查看tcp创建的连接数4)、tcpdump -iany tcp port 9000 对tcp端⼝为9000的进⾏抓包5)、tcpdump dst port 9000 -w dump9000.pcap 对tcp⽬标端⼝为9000的进⾏抓包保存pcap⽂件wireshark分析。
6)、tcpdump tcp port 9000 -n -X -s 0 -w tcp.cap 对tcp/http⽬标端⼝为9000的进⾏抓包保存pcap⽂件wireshark分析。
⽹络测试常⽤命令;1)ping:检测⽹络连接的正常与否,主要是测试延时、抖动、丢包率。
但是很多服务器为了防⽌攻击,⼀般会关闭对ping的响应。
所以ping⼀般作为测试连通性使⽤。
ping命令后,会接收到对⽅发送的回馈信息,其中记录着对⽅的IP地址和TTL。
TTL 是该字段指定IP包被路由器丢弃之前允许通过的最⼤⽹段数量。
TTL是IPv4包头的⼀个8 bit字段。
例如IP包在服务器中发送前设置的TTL是64,你使⽤ping命令后,得到服务器反馈的信息,其中的TTL为56,说明途中⼀共经过了8道路由器的转发,每经过⼀个路由,TTL减1。
2)traceroute:raceroute 跟踪数据包到达⽹络主机所经过的路由⼯具traceroute hostname3)pathping:是⼀个路由跟踪⼯具,它将 ping 和 tracert 命令的功能与这两个⼯具所不提供的其他信息结合起来,综合了⼆者的功能4)mtr:以结合ping nslookup tracert 来判断⽹络的相关特性5) nslookup:⽤于解析域名,⼀般⽤来检测本机的DNS设置是否配置正确。
centos tcpdump 使用CentOS是一种基于Linux的操作系统,而tcpdump是CentOS系统上一款常用的网络抓包工具。
使用tcpdump可以捕获网络中的数据包,并对其进行分析和解读。
本文将介绍如何在CentOS上使用tcpdump,并说明其功能和用途。
一、tcpdump的安装和基本用法1. 安装tcpdump:在CentOS系统上,可以使用以下命令安装tcpdump:```yum install tcpdump```2. 基本用法:使用tcpdump的基本命令格式如下:```tcpdump [options] [filter_expression]```其中,options可以指定一些额外的选项,filter_expression是用于过滤数据包的表达式。
二、捕获数据包使用tcpdump捕获数据包可以帮助我们了解网络中的通信情况,以及排查网络故障。
下面是一些常用的捕获数据包的命令示例:1. 捕获所有网络接口上的数据包:```tcpdump -i any```2. 捕获指定网络接口上的数据包:```tcpdump -i eth0```3. 指定捕获数据包的数量:```tcpdump -c 10```4. 指定捕获数据包的大小:```tcpdump -s 1500```5. 保存捕获的数据包到文件中:```tcpdump -w capture.pcap```三、过滤数据包tcpdump提供了强大的过滤功能,可以根据不同的条件过滤出我们需要的数据包。
下面是一些常用的过滤数据包的命令示例:1. 按源IP地址过滤数据包:```tcpdump src host 192.168.1.100```2. 按目标IP地址过滤数据包:```tcpdump dst host 192.168.1.100```3. 按源端口过滤数据包:```tcpdump src port 80```4. 按目标端口过滤数据包:```tcpdump dst port 80```5. 组合多个条件进行过滤:```tcpdump src host 192.168.1.100 and dst port 80```四、解读捕获的数据包通过捕获数据包,我们可以获取到很多关于网络通信的信息。
tcpdump抓包命令使⽤教程⽬录tcpdump 是Linux系统下的⼀个强⼤的命令,可以将⽹络中传送的数据包完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
⼀、tcpdump 命令格式介绍⾸先我们对Linux系统下tcpdump命令格式进⾏⼀个介绍说明,在下⾯的使⽤教程中讲到tcpdump命令⽰例时,您就可以参考tcpdump命令参数说明进⾏学习。
1.1 语法tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ expression ]1.2 命令⾏参数介绍-A 以ASCII格式打印出所有分组,并将链路层的头最⼩化。
-c 在收到指定的数量的分组后,tcpdump就会停⽌。
-C 在将⼀个原始分组写⼊⽂件之前,检查⽂件当前的⼤⼩是否超过了参数file_size中指定的⼤⼩。
如果超过了指定⼤⼩,则关闭当前⽂件,然后在打开⼀个新的⽂件。
参数 file_size的单位是兆字节(是1,000,000字节,⽽不是1,048,576字节)。
-d 将匹配信息包的代码以⼈们能够理解的汇编格式给出。
tcpdump 命令使⽤tcpdump 命令使⽤tcpdump命令参数解析1.option 可选参数:能够控制tcpdump 命令,⽐如是否解析域名,将结果输出到⽂件,或者从⽂件读包数据,以及打印格式等。
2.protocol 协议过滤:能够根据不同的协议进⾏过滤,常⽤的已经上⾯了。
3.direction ⽅向过滤:能够根据数据的流向来进⾏过滤,也就是src 和dst ,也可以是两者。
4. type 类型过滤:能够根据不同的类型进⾏过滤。
tcpdump 输出结构这是直接不使⽤参数得到的其中⼀条输出1. 第⼀列:代表时间,分别是时分秒毫秒 22:21:43.500014。
2. 第⼆列:代表⽹络协议 IP 。
3. 第三列:代表发送的⽅的地址(IP+port ),其中10.21.11.47是IP ,⽽http 是端⼝,在tcpdump 中http 就代表80端⼝,所以也就是10.21.11.47.80,后⾯可以使⽤-nn 参数来关闭转换。
4. 第四列:代表数据流向,可以看出是10.21.11.47.http 发送数据到11.0.85.18.51352。
5. 第五列:代表接收⽅的地址,格式同第三列,可以看出这次商品是51352。
6. 第六列:代表分隔,冒号。
7. 第七列:代表数据包的相关内容。
包括Flags 标识符,seq 号,ack 号,win 窗⼝⼤⼩,数据长度length ,通信协议HTTP 等。
Flag 标识符[S]:代表SYN ,同步标记,⼀般是在建⽴连接时使⽤,也就是TCP 三次握⼿时使⽤。
[.]:代表没有Flags ,但是除了SYN 包外所有的数据包都有ACK ,所以这个标记也可以代表ACK 。
[P]:代表PUSH ,推送数据,发送⽅通过使⽤PUSH 位来通知接收⽅将所有收到的数据⽴即提交给服务器进程,⽽不需要等待额外数据(将缓存填满)⽽让数据在缓存中停留!这⾥所说的数据包括与此PUSH 包⼀起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。
tcpdump常用参数说明
(一)、学习tcpdump的5个参数初次使用tcpdump时,使用tcpdump -h 命令可以看到它有数十个参数。
根据我们在运维工作中的经验,掌握tcpdump以下5个参数即可满足大部分的工作需要了。
❶-i参数。
使用-i参数指定需要抓包的网卡。
如果未指定的话,tcpdump会根据搜索到的系统中状态为UP的最小数字的网卡确定,一般情况下是eth0。
使用-i参数通过指定需要抓包的网卡,可以有效的减少抓取到的数据包的数量,增加抓包的针对性,便于后续的分析工作。
❷-nnn参数。
使用-nnn参数禁用tcpdump展示时把IP、端口等转换为域名、端口对应的知名服务名称。
这样看起来更加清晰。
❸-s参数。
使用-s参数,指定抓包的包大小。
使用-s 0指定数据包大小为262144字节,可以使得抓到的数据包不被截断,完整反映数据包的内容。
❹-c参数。
使用-c参数,指定抓包的数量。
❺-w参数。
使用-w参数指定抓包文件保存到文件,以便后续使用Wireshark 等工具进行分析。
Tcpdump命令格式System>tcpdump -i any port 23 –n先用这个来确定本地地址,再来抓包tcpdump -i eth0 port 22 and src host 192.168.1.100 –ntcpdump -i eth0 port 22 and dst host 192.168.1.100 –n-i -----interfaceR是接收X是转发根据目的地址抓包TopsecOS# system tcpdump -i any host 172.16.1.20 -ntcpdump: WARNING: Promiscuous mode not supported on the "any" devicetcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on any, link-type LINUX_SLL (Linux cooked), capture size 68 bytes02:13:31.934485 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1241: F 2607699394: 2607699394(0) ack 908633180 win 6512302:13:31.934501 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1241: F 2607699394:260 7699394(0) ack 908633180 win 6512302:13:31.934644 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1243: F 683368251:6 83368251(0) ack 2932894753 win 6512302:13:31.934652 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1243: F 683368251:683368251(0) ack 2932894753 win 6512302:13:31.934850 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1242: F 3204228935: 3204228935(0) ack 378320269 win 6512302:13:31.934863 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1242: F 3204228935:320 4228935(0) ack 378320269 win 6512302:13:31.935053 R@eth0 IP 172.16.1.20.8002 > 198.100.100.200.1239: F 302027424:3 02027424(0) ack 737677523 win 6510002:13:31.935060 X@eth1 IP 172.16.1.20.8002 > 47.17.225.30.1239: F 302027424:302027424(0) ack 737677523 win 65100首先,在“系统”→“开放服务”中,添加需要telnet区域的相应的telnet权限,“开始”→“运行”→“cmd”,输入telnet 10.0.0.1。
TCPDUMP命令详解⼯作中⼀直在⽤tcpdump,感觉⾮常⽅便,今天⼼⾎来潮百度了⼀下tcpdump的⽤法,才发现原来还有这么多强⼤的功能⾃⼰都不知道,那叫⼀个汗啊。
废话不多说,切⼊正题。
命令及解释⽤红⾊字体,命令所需参数的参数值⽤斜体标⽰。
先来看⼀个⽐较基本的⽤法:tcpdump -i eth0其中,eth0为参数值,表⽰需要抓包的⽹⼝,这是个必需参数哦。
tcpdump⽀持很多的关键字,下⾯先看⼏个例⼦:(例1)tcpdump -i eth0 host 192.168.0.250 -----在⽹⼝eth0上抓取主机地址为192.168.0.250的所有数据包。
(例2)tcpdump -i eth0 net 192.168.0.0/24 ------ 在⽹⼝eth0上抓取⽹络地址为192.168.0.0/24的所有数据包(例3)tcpdump -i eth0 port 80 ------ 在⽹⼝eth0上抓取端⼝为80的所有数据包(注意,这⾥不区分是源端⼝还是⽬的端⼝)当然,我们也可以指定源端⼝或⽬的端⼝(例4)tcpdump -i eth0 src port 80 and dst port6100 --- 在⽹⼝eth0上抓取源端⼝为80且⽬的端⼝为6100的数据包,这⾥⽤到了and逻辑运算符,后⾯再介绍(例5)tcpdump -i eth0 icmp --- 在⽹⼝eth0上抓取所有icmp协议的数据包以上⼏个例⼦,可以⼤致体现出tcpdump的基本⽤法。
实际上,tcpdump主要包括三种类型的关键字,第⼀种是关于类型的关键字,主要包括host,net,port,如上⾯的例(1)(2)(3),第⼆种是确定传输⽅向的关键字,主要包括src,dst,src or dst,src and dst,这些关键字指明了传输的⽅向,如上⾯的例(4)。
第三种是协议关键字,包括fddi,ip,arp,rarp,tcp,udp,imcp等,如上⾯的例(5)。
tcpdump常用抓包命令TCPDump是一个基于命令行的抓包工具,它可以帮助网络管理员和安全专家捕获和分析数据包。
在网络故障排除、网络性能分析和网络安全检测等方面都有着广泛的应用。
本文将介绍TCPDump的常用抓包命令。
一、基本使用1.抓取指定网卡的数据包tcpdump -i eth0-i选项后面跟要抓取数据包的网卡名称,这里以eth0为例。
2.保存抓取到的数据包tcpdump -i eth0 -w capture.pcap-w选项后面跟要保存数据包的文件名,这里以capture.pcap为例。
3.读取已保存的数据包文件tcpdump -r capture.pcap-r选项后面跟要读取的数据包文件名,这里以capture.pcap为例。
二、过滤器使用1.根据IP地址过滤数据包tcpdump host 192.168.1.1host选项后面跟要过滤的IP地址,这里以192.168.1.1为例。
2.根据端口号过滤数据包tcpdump port 80port选项后面跟要过滤的端口号,这里以80为例。
3.根据协议类型过滤数据包tcpdump icmpicmp表示Internet控制报文协议。
4.组合使用多个条件进行过滤tcpdump host 192.168.1.1 and port 80and表示“与”的关系,即同时满足两个条件。
tcpdump host 192.168.1.1 or port 80or表示“或”的关系,即满足其中一个条件即可。
5.使用逻辑运算符进行复杂过滤tcpdump 'src net 192.168.1 and (dst net 10 or dst net 172)'这里使用了括号和逻辑运算符进行复杂的过滤,筛选出源IP地址为192.168.1开头,目的IP地址为10或172开头的数据包。
三、高级使用1.抓取指定数量的数据包tcpdump -c 100-c选项后面跟要抓取的数据包数量,这里以100为例。
Tcpdump常用命令及基础故障定位3板斧!(新工程师转正必需掌握)在老4k系统和TOS中的.1平台和.8平台(猎豹)支持TCPDUMP命令。
Tcpdump中and、not、or、host、port、grep、-e、-vv参数的使用:例1:在eth1口抓包,只显示地址为10.1.1.1和icmp协议的报文。
Tcpdump –i eth1 host 10.1.1.1 and icmp例2:在所有的接口抓包,不显示4000端口的管理报文,和23端口的telnet报文。
Tcpdump –i any not port 4000 and not port 23 (在同时管理的时候很实用)例3:在eth1口抓包,显示地址为211.1.1.1或10.1.1.1的报文。
Tcpdump –i eth1 host 211.1.1.1 or host 10.1.1.1 (针对MAP前后的地址同时抓包定位时非常实用)例4:在所有的接口抓包,显示地址为10.1.1.1报文。
Tcpdump |grep host 10.1.1.1 (在adls环境中非常实用,封装了PPPOE的报文也能抓到,但是TOS不支持grep的参数了)在tos系统中,X86的平台下才有抓包的工具,-n表示不需要域名解析,加快抓包的速度。
并且-evv比老的4k系统中,能抓到更多的信息,其中还包括校验和。
例5:System tcpdump –i any –evv -n (TOS系统中最后必须加-n的参数,才能保证抓包的速度)例6:System tcpdump –i ipsec0 -n (TOS支持在ipsec0中抓包,来判断数据流是否进入隧道)例7:System tcpdump –i ppp0 -n (TOS支持在ppp0中抓包,来判断数据流是否进入PPPoE 的封装)现场通过抓包来定位故障原因是最准确高效的方法:下面抓包中,客户端源地址为168.36.126.1 MAP地址为209.136.47.12 服务器真实地址为11.68.21.12对于目的地址转换,天融信也俗称为MAP转换。
tcpdump常用命令TCPDump是一个非常强大的网络抓包工具,它可以用来捕获和分析网络数据包。
在网络故障排除和网络安全方面,TCPDump是非常有用的工具。
在本文中,我们将介绍TCPDump的一些常用命令。
一、基本命令1. tcpdump这是最基本的命令,它会启动TCPDump并开始捕获数据包。
默认情况下,它会捕获所有接口上的数据包。
2. tcpdump -i这个命令可以让你选择要捕获的接口。
例如,如果你想只捕获eth0接口上的数据包,可以使用以下命令:tcpdump -i eth03. tcpdump -n这个命令可以让你禁止DNS解析。
默认情况下,TCPDump会尝试对IP地址进行DNS解析。
但是,在某些情况下,DNS解析可能会导致性能问题。
4. tcpdump -c这个命令可以让你指定要捕获的数据包数量。
例如,如果你只想捕获前10个数据包,则可以使用以下命令:tcpdump -c 105. tcpdump -w这个命令可以将捕获到的数据包保存到文件中。
例如:tcpdump -w capture.pcap二、过滤器命令1. tcpdump host这个命令允许你只捕获与特定主机通信的数据包。
例如,如果你想只捕获与IP地址为192.168.1.1的主机通信的数据包,则可以使用以下tcpdump host 192.168.1.12. tcpdump port这个命令允许你只捕获特定端口上的数据包。
例如,如果你想只捕获TCP端口80上的数据包,则可以使用以下命令:tcpdump port 803. tcpdump src这个命令允许你只捕获从特定源IP地址发送的数据包。
例如,如果你想只捕获从IP地址为192.168.1.1发送的数据包,则可以使用以下命令:tcpdump src 192.168.1.14. tcpdump dst这个命令允许你只捕获发送到特定目标IP地址的数据包。
例如,如果你想只捕获发送到IP地址为192.168.1.1的数据包,则可以使用以下tcpdump dst 192.168.1.15.tcpdump -A这个命令可以在输出时显示ASCII码,它会将每个数据包解析成可读文本。
tcpdump基础
Tcpdump常用命令及基础故障定位3板斧!
在老4k系统和TOS中的.1平台和.8平台(猎豹)支持TCPDUMP命令。
Tcpdump中and、not、or、host、port、grep、-e、-vv参数的使用:
例1:在eth1口抓包,只显示地址为10.1.1.1和icmp协议的报文。
Tcpdump –i eth1 host 10.1.1.1 and icmp
例2:在所有的接口抓包,不显示4000端口的管理报文,和23端口的telnet报文。
Tcpdump –i any not port 4000 and not port 23 (在同时管理的时候很实用)
例3:在eth1口抓包,显示地址为211.1.1.1或10.1.1.1的报文。
Tcpdump –i eth1 host 211.1.1.1 or host 10.1.1.1 (针对MAP前后的地址同时抓包定位时非常实用)
例4:在所有的接口抓包,显示地址为10.1.1.1报文。
Tcpdump |grep host 10.1.1.1 (在adls环境中非常实用,封装了PPPOE的报文也能抓到,但是TOS不支持grep 的参数了)
在tos系统中,X86的平台下才有抓包的工具,-n表示不需要域名解析,加快抓包的速度。
并且-evv比老的4k系统中,能抓到更多的信息,其中还包括校验和。
例5:System tcpdump –i any –evv -n (TOS系统中最后必须加-n的参数,才能保证抓包的速度)
例6:System tcpdump –i ipsec0-n(TOS支持在ipsec0中抓包,来判断数据流是否进入隧道)
例7:System tcpdump –i ppp0-n(TOS支持在ppp0中抓包,来判断数据流是否进入PPPoE的封装)
下面的4个实例,详细阐述了目的地址转换时如何通过TCPDUMP抓包来快速定位故障点。
现场通过抓包来定位故障原因是最准确高效的方法:
下面抓包中,客户端源地址为168.36.126.1MAP地址为209.136.47.12服务器真实地址为11.68.21.12
对于目的地址转换,天融信也俗称为MAP转换。
例1、如果业务、ping都不通,抓包时只有第一个请求报文,没有匹配MAP转换,说明:
A: 防火墙没有到真实服务器的路由,而导致不能匹配MAP策略。
B: 或者是防火墙上没有开放对应的访问策略。
TOS# system tcpdump -i any host 168.36.126.1 -n
04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64
例2、如果业务、ping都不通,抓包是匹配了MAP转换策略,说明:
A: 对方的服务没有回应。
B: 或者对方回应了但是路由错误,回应数据包没有到防火墙。
TOS# system tcpdump -i any host 168.36.126.1 -n
04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64
例3、如果业务、ping都不通,抓包显示最后一个报文没有正常转换,说明:
A: 防火墙上没有回指路由,而导致最后的报文没有发出。
TOS# system tcpdump -i any host 168.36.126.1 -n
04:19:03.400000 IP 168.36.126.1 >209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64
04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64
04:19:03.400000 IP 11.68.21.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64
例4、如果业务、ping都不通,抓包显示报文正常转发,说明
A: TOS发出了数据包,但是匹配了错误的回指路由。
TOS# system tcpdump -i any host 168.36.126.1 -n
04:19:03.400000 IP 168.36.126.1 > 209.136.47.12: ICMP echo request, id 10706, seq 4161, length 64 04:19:03.404216 IP 168.36.126.1 > 11.68.21.12: ICMP echo request, id 10706, seq 4161, length 64
04:19:03.400000 IP 11.68.21.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64
04:19:03.404365 IP 209.136.47.12 > 168.36.126.1: ICMP echo reply, id 10706, seq 4161, length 64
各位现场工程如果能掌握tcpdump的这3板斧,逐步养成遇到故障,自己先抓包分析定位一下,将对自己能力提高有很大的帮助。
接下来我们将给出tcpdump抓包如果来分析应用建立是否正常:
1、TCP建立时的3次握手过程。
syn,syn ack,ack包的判断。
2、TCP传输报文push包的判断。
3、TCP正常拆除连接的4次握手过程。
双向FIN、FIN ack包的判断。
4、TPC非正常拆除连接的报文RST包的判断。
1、TCP建立连接时3次握手的报文。
(syn,syn ack,ack包)
05:03:36.632472 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: S 21321858:21321858(0) win 16384 <mss 1460,nop,nop,sackOK>
05:03:36.632664 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: S 472888645:472888645(0) ack 21321859 win 17520 <mss 1460,nop,nop,sackOK>
05:03:36.649547 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: . ack 1 win 17520
2、TCP连接建立后,传输数据的PUSH报文。
05:03:36.649578 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: P 1:73(72) ack 1 win 17520 05:03:36.650170 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: P 1:33(32) ack 73 win 17448
3、TCP拆除连接时4次握手的报文。
(双向FIN、FIN ack包)
05:03:36.650204 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: F 33:33(0) ack 73 win 17448 05:03:36.666213 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: F 73:73(0) ack 33 win 17488 05:03:36.666241 R@ipsec0 IP 192.168.71.100.1843 > 192.168.21.88.4630: . ack 34 win 17488
05:03:36.666335 R@ipsec0 IP 192.168.21.88.4630 > 192.168.71.100.1843: . ack 74 win 17448。