F5负载均衡器用tcpdump命令抓包的方法
- 格式:doc
- 大小:110.00 KB
- 文档页数:5
tcpdump用法tcpdump是一个功能强大的网络分析工具,能够捕获网络上的数据包,用于网络故障排除、网络性能监控以及网络安全审计等目的。
它支持多种网络协议,支持文本输出和二进制输出。
本文将介绍tcpdump的使用方法,以及它的参数详解。
#### 一、基本用法tcpdump的基本用法非常简单:```tcpdump [options]```它默认以单个模式运行,在一次持续抓包过程中,一直以标准输出格式显示网络数据包,每条信息显示一个数据包信息,直到用户中断或者网络停止发包为止。
#### 二、抓包参数tcpdump参数繁多,但常用参数主要有以下几类:**1.滤参数*** -net据子网抓包,支持IPv4和IPv6,比如`-net192.168.1.0/24`* -host据网络主机抓包,支持IPv4和IPv6,比如`-host 192.168.1.1`* -port据端口号抓包,比如`-port 80`**2.示参数*** -X示数据包的十六进制与ASCII文本,通常用于检测网络攻击和病毒* -v示更详细的抓取信息,比如IP地址、端口号等* -vv示更详细的抓取信息,同时把协议中的详细信息也显示出来**3.能参数*** -r 以二进制文件的方式读取已保存的抓包数据,一般用于进行离线分析* -w 以二进制文件的方式将抓取的数据保存下来,方便以后分析* -c定抓包的数量,比如`-c 1000`表示只抓前1000条数据包 #### 三、高级用法tcpdump还支持一些高级参数,用于更加精确的抓包,主要有:**1.络接口*** -i定抓包的网络接口,比如`-i eth0`表示从eth0接口抓包 * -B定抓包的带宽,比如`-B 500K`表示最高抓取500K的数据 **2.滤表达式*** -e取数据的过滤表达式,比如`-e tcp[14:2]==0x0514`表示过滤TCP标志和序号为0x0514的数据包* -d取数据的过滤表达式,等效于-e参数**3.符编码*** -n取数据时,不解析DNS和hostname* -t 不显示时间戳* -S示源地址和目的地址* -c定抓取数据包个数* -q 以简单的形式显示,不显示协议头信息####、实战以抓取IP地址为192.168.1.1的80端口的HTTP请求为例,使用tcpdump命令如下:```tcpdump -i eth0 -nn -s 0 -XS host 192.168.1.1 and port 80```以上命令的含义为,从网卡eth0接口上抓取长度为0的数据包,目标地址为192.168.1.1,且端口号为80的数据包,并以十六进制与ASCII格式显示出来。
tcpdump使用方法tcpdump是一种网络封包分析工具,使用命令行界面进行操作。
它可以监听网络接口传输的数据包,并将其显示在终端上。
tcpdump是一个功能强大的工具,可以用于网络排错、协议分析、安全审计等多种用途。
下面将详细介绍tcpdump的使用方法。
1. 安装tcpdump```sudo apt-get install tcpdump```2. 使用tcpdump命令```sudo tcpdump [options] [expression]```其中,options是一些可选项,expression是过滤器表达式。
3.监听所有网络接口使用tcpdump监听所有网络接口的数据包,可以使用以下命令:```sudo tcpdump```这将显示所有接口传输的数据包。
4.监听指定网络接口使用tcpdump监听指定网络接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```这将监听名为eth0的网络接口的数据包。
5.保存数据包到文件使用tcpdump将捕获到的数据包保存到文件,可以使用以下命令:```sudo tcpdump -w output.pcap```这将将数据包保存到名为output.pcap的文件中。
6.读取保存的数据包文件使用tcpdump读取保存的数据包文件,可以使用以下命令:```sudo tcpdump -r input.pcap```这将读取名为input.pcap的文件中的数据包。
7.过滤数据包使用tcpdump可以根据特定的条件对数据包进行过滤,只显示满足条件的数据包。
以下是一些常用的过滤器表达式示例:-过滤源IP地址:```sudo tcpdump src 192.168.1.1```-过滤目标IP地址:```sudo tcpdump dst 192.168.1.1```-过滤源和目标IP地址:```sudo tcpdump host 192.168.1.1```-过滤指定端口:```sudo tcpdump port 80```-过滤指定协议:```sudo tcpdump icmp```8.显示数据包详细信息使用tcpdump可以显示每个数据包的详细信息。
⽹络抓包教程之tcpdump现在的移动端应⽤⼏乎都会通过⽹络请求来和服务器交互,通过抓包来诊断和⽹络相关的bug是程序员的重要技能之⼀。
抓包的⼿段有很多:针对http和https可以使⽤Charles设置代理来做,对于更⼴泛的协议可以使⽤tcpdump或者wireshark。
wireshark提供GUI,⽅便做深⼊全⾯的数据分析。
tcpdump则输出原始的包内容,好处是快速⾼效,之前写过⼀篇简单的,就是⽤tcpdump来操作的。
这篇⽂章主要介绍tcpdump的基本使⽤⽅法,阅读⽬标是能基本掌握并运⽤tcpdump解决⽹络相关的问题。
阅读前提是对有初步的了解。
1.启动tcpdumpiOS设备上启动tcpdump⽐较⽅便。
apple在mac上有个叫rvictl的程序,可以通过iOS设备的udid创建⼀个虚拟⽹卡,然后通过这个虚拟⽹卡监听设备上所有的⽹络流量。
步骤如下:获取itunes获取设备udid打开终端(terminal),创建虚拟⽹卡在终端输⼊rvictl -s udid,创建虚拟⽹卡。
启动tcpdump监控流量在终端继续输⼊sudo tcpdump -i rvi0 -AAl,启动tcpdump监控。
Android设备没办法通过rvictl创建虚拟⽹卡,但是可以把tcpdump的可执⾏⽂件上传到android设备上,然后通过mac远程登录android设备运⾏tcpdump,前提是这台android 设备必须已经root过。
步骤如下:下载android版本的tcpdump从可以下载到专门为android系统编译的tcpdump版本。
通过adb将tcpdump上传到android设备通过adb push将tcpdump⽂件上传到特定的⽬录,这⾥我们选择/sdcard/data⽬录。
在android设备上运⾏tcpdump通过adb shell登陆设备,并执⾏tcpdump,最后⼀步执⾏./tcpdump即可。
Linux命令高级技巧使用tcpdump进行网络抓包TCPDump是一种常用的网络抓包工具,可以在Linux系统中使用。
它可以捕获网络数据包,并提供详细的分析和监测功能。
本文将介绍一些高级技巧,帮助您更好地使用tcpdump工具进行网络抓包。
1. 安装和基本使用要使用tcpdump,首先需要在Linux系统上安装它。
在终端中输入以下命令来安装tcpdump:```sudo apt-get install tcpdump```安装完成后,输入以下命令来开始抓包:```sudo tcpdump -i <interface>```其中,<interface>是要抓取网络流量的网络接口,如eth0或wlan0。
2. 抓取指定端口的数据包有时候,我们只对某个特定端口的网络流量感兴趣。
您可以使用以下命令来抓取指定端口的数据包:```sudo tcpdump -i <interface> port <port_number>```其中,<port_number>是您感兴趣的端口号。
3. 根据源IP或目标IP过滤数据包如果您只想抓取特定源IP或目标IP的数据包,可以使用以下命令进行过滤:```sudo tcpdump -i <interface> src <source_IP>```或```sudo tcpdump -i <interface> dst <destination_IP>```其中,<source_IP>是源IP地址,<destination_IP>是目标IP地址。
4. 保存抓包结果为文件您可以将抓到的数据包保存到文件中,以便稍后分析。
使用以下命令将数据包保存到文件:```sudo tcpdump -i <interface> -w <output_file>```其中,<output_file>是保存数据包的文件名。
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可以使用过滤器来指定要抓取的数据包的条件。
tcpdump抓包命令使⽤抓包⼯具使⽤1.作⽤:(1)捕获⽹络协议包(2)分析⽹络协议包2.分类:(1)命令⾏⼯具,如tcpdump(2)图像界⾯⼯具,wireshark3.tcpdump命令⾏⼯具的使⽤3.1格式:tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -w file ] [ expression ]3.2选项分类抓包选项-c:指定要抓取的包数量-i interface:指定tcpdump需要监听的接⼝,-I 后⾯直接跟⽹卡名即可,如-I ens33-n:对地址以数字⽅式显式,否则显式为主机名-nn:除了-n的作⽤外,还把端⼝显⽰为数值输出选项-e:输出的每⾏中都将包括数据链路层头部信息,例如源MAC和⽬标MAC。
-q:快速打印输出。
即打印很少的协议相关信息,从⽽输出⾏都⽐较简短。
-X:输出包的头部数据,会以16进制和ASCII两种⽅式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种⽅式同时输出,更详细。
-v:当分析和打印的时候,产⽣详细的输出。
-vv:产⽣⽐-v更详细的输出。
-vvv:产⽣⽐-vv更详细的输出其他功能选项-D:列出可⽤于抓包的接⼝-F:从⽂件中读取抓包的表达式-w:将抓包数据输出到⽂件中⽽不是标准输出,如-w node1.cap-r:从给定的数据包⽂件中读取数据。
如tcmdump -r node1.cap4.tcpdump的表达式tcpdump的表达式由⼀个或多个"单元"组成,每个单元⼀般包含ID的修饰符和⼀个ID(数字或名称)。
有三种修饰符:type:指定ID的类型。
可以给定的值有host/net/port/portrange。
例如"host foo","net 128.3","port 20","portrange 6000-6008"。
F5 BIG-IP负载均衡器配置指导书目录添加“只读”权限的管理员帐号对某一Virtual Server用TCPDUMP命令无法抓到包如何处理一、网络结构与IP地址规划本手册以移动WAP/彩信网关为例网络拓扑结构如下图所示:整个数据网络设备,采用两台防火墙、两台BIG-IP 3400负载均衡器、及两台交换机、网络设备都采用主、备设备,以实现设备、链路的冗余备份,以消除单点故障。
这里部署负载均衡器的目的主要是为了增加服务器的数量,以提升系统的处理能力。
但对外仍然是一个IP地址。
相关的IP地址规划如下:注:以上的IP地址规划是测试环境的IP地址设置,需要根据现网环境中的IP地址规划进行修改。
注:建议现场工程师先填写以下规范表:、配置 BIGIP3400 负载均衡设备本章将主要描述BIGIP3400 负载均衡设备的配置方法及配置内容。
旁路/直连的选择2.1.1 路由/直连模式的介绍网络连接的物理结构如下结构:Ip 规划说明:图中bigip 为负载均衡交换机,bigip 上面使用公开的ip 地址,bigip 下面同负载均衡的服务器使用不公开的ip 地址。
但对外提供服务则使用公开的ip。
2.1.2 旁路模式的介绍网络连接的物理结构如下结构:Ip 规划说明:图中bigip 为负载均衡交换机,bigip 和负载均衡的服务器均使用公开的ip 地址。
2.1.3 路由/直连模式同旁路模式的比较(1 )流量走向不一样;路由/直连模式的流量走向如下:如上图,bigip 同客户端的流量在bigip 的上联接口,bigip 同服务器的流量在下面的接口。
旁路模式的流量走向如下:如上图,bigip 无论同客户端还是同服务器的通讯流量均在bigip 的一个接口上。
(2)接口流量压力不一样见图:路由/直连情况下,bigip 同客户端的流量在bigip 的上联接口,bigip 同服务器的流量在下联的接口,故bigip 单一接口压力较小。
F5负载均衡抓包方法作者:易隐者发布于:2012-10-17 12:48 Wednesday 分类:参考资料登录F51,超级终端的登录:通过Console电缆一端连接BIGIP,一端连接PC机的串口,然后打开超级终端,建立一个连接,超级终端中COM的参数设置如图:不论是从Console口登陆,还是用SSH从网络登陆,BIG-IP的缺省登陆帐号与密码如下:缺省登陆帐号:root缺省登陆密码:default输入帐号和密码后,将见到以下界面:缺省的终端类型为vt100,回车后如图:F5下的tcpdump的使用1,web管理界面下的抓包Tcpdump 工具在V4.5 之前只能在CLI 下使用,V9 提供了图形界面下的Tcpdump,在System->support 界面下,我们可以直接使用tcpdump 工具:2,F5命令行下Tcpdump的使用示例:当业务无法正常工作时,经常需要在BIG-IP上抓包进行分析定位是什么原因导致数据包没有被常转发。
BIG-IP上提供了TCPDUMP抓包分析工具。
TCPDUMP是Unix系统常用的报文分析工具,TCPDUMP经常用于故障定位,如会话保持失效、SNAT通信问题等。
本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。
命令语法:tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ][ -i interface ] [ -m module ] [ -r file ][ -s snaplen ] [ -T type ] [ -w file ][ -E algo:secret ] [ expression ]其中:⌝-i 报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括loop- back 接口),一般对指定Vlan名称进行监控,如-i external 是对external vlan进行监控;也可以对指定端口进行监控如–i 1.1。
使用tcpdump命令捕获和分析网络数据包在网络中,数据包是网络通信的基本单位。
了解和分析网络数据包的内容和结构,对于网络管理员和安全专家来说是非常重要的。
tcpdump是一款功能强大的网络数据包分析工具,它能够捕获网络数据包并提供详细的分析信息。
本文将介绍如何使用tcpdump命令捕获和分析网络数据包。
一、安装tcpdump在开始使用tcpdump之前,首先需要在你的计算机上安装tcpdump。
tcpdump在大多数Linux和UNIX系统中都是默认安装的,可以使用以下命令来检查是否已经安装了tcpdump:```tcpdump -v```如果已经安装,则会显示tcpdump的版本信息;如果未安装,则需要使用以下命令来安装tcpdump:```sudo apt-get install tcpdump```二、捕获网络数据包使用tcpdump捕获网络数据包非常简单,只需在终端中输入以下命令:```sudo tcpdump```该命令将会开始捕获所有经过计算机网络接口的数据包。
然而,这样会产生大量的输出信息,不便于分析。
为了提高分析效率,可以使用一些选项来限制捕获的数据包范围。
1. 指定网络接口如果你有多个网络接口,可以使用-i选项指定要捕获的网络接口。
例如,要捕获eth0接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```2. 指定捕获数量使用-c选项可以指定要捕获的数据包数量。
例如,要只捕获10个数据包,可以使用以下命令:```sudo tcpdump -c 10```3. 指定捕获过滤器可以使用过滤器来指定要捕获的数据包类型。
例如,要只捕获HTTP协议的数据包,可以使用以下命令:```sudo tcpdump port 80```以上命令将只捕获目标端口为80的数据包。
三、分析网络数据包捕获到网络数据包后,可以使用tcpdump提供的一些选项来进行数据包分析。
服务器抓包命令:tcpdump详解简介:tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。
⼀个No-GUI的抓包分析⼯具。
tcpdump,可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
Linux已经⾃动安装,可直接使⽤。
概要:tcpdump采⽤命令⾏⽅式,它的命令格式为:tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ][ -c count ] [ -C file_size ][ -E spi@ipaddr algo:secret,... ][ -F file ] [ -G rotate_seconds ] [ -i interface ][ --immediate-mode ] [ -j tstamp_type ] [ -m module ][ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ --version ][ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ][ -z postrotate-command ] [ -Z user ][ --time-stamp-precision=tstamp_precision ][ expression ]tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F file ][ -i interface ] [ -m module ] [ -M secret ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -Z user ][ expression ]-A 以ASCII码⽅式显⽰每⼀个数据包(不会显⽰数据包中链路层头部信息). 在抓取包含⽹页数据的数据包时, 可⽅便查看数据(nt: 即Handy for capturing web pages).-b 使⽤ASDOT表⽰法在BGP数据包中打印AS号,⽽不是ASPLAIN表⽰法-B buffer_size--buffer-size=buffer_size将操作系统捕获缓冲区⼤⼩设置为buffer_size,单位为KiB(1024字节)-c counttcpdump将在接受到count个数据包后退出.-C file-size (nt: 此选项⽤于配合-w file 选项使⽤)该选项使得tcpdump 在把原始数据包直接保存到⽂件中之前, 检查此⽂件⼤⼩是否超过file-size. 如果超过了, 将关闭此⽂件,另创⼀个⽂件继续⽤于原始数据包的记录. 新创建的⽂件名与-w 选项指定的⽂件名⼀致, 但⽂件名后多了⼀个数字.该数字会-d 以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停⽌.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印⼀些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)-dd 以C语⾔的形式打印出包匹配码.-ddd 以⼗进制数的形式打印出包匹配码(会在包匹配码之前有⼀个附加的'count'前缀).-D 打印系统中所有tcpdump可以在其上进⾏抓包的⽹络接⼝. 每⼀个接⼝会打印出数字编号, 相应的接⼝名字, 以及可能的⼀个⽹络接⼝描述. 其中⽹络接⼝名字和数字编号可以⽤在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓此选项在不⽀持接⼝列表命令的系统上很有⽤(nt: ⽐如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接⼝的数字编号在windows 2000 或其后的系统中很有⽤, 因为这些系统上的接⼝名字⽐较复杂, ⽽不易使⽤.如果tcpdump编译时所依赖的libpcap库太⽼,-D 选项不会被⽀持, 因为其中缺乏 pcap_findalldevs()函数.-e 每⾏的打印输出中将包括数据包的数据链路层头部信息-E spi@ipaddr algo:secret,...可通过spi@ipaddr algo:secret 来解密IPsec ESP包(nt | rt:IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, ⼀整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的⼯作模式称为需要注意的是, 在终端启动tcpdump 时, 可以为IPv4 ESP packets 设置密钥(secret).可⽤于加密的算法包括des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc, 或者没有(none).默认的是des-cbc(nt: des, Data Encryption Standard, 数据加密标准, 加密算法未知, 另需补充).secret 为⽤于ESP 的密钥, 使⽤ASCII 字符串⽅式表达该选项中ESP 的定义遵循RFC2406, ⽽不是 RFC1827. 并且, 此选项只是⽤来调试的, 不推荐以真实密钥(secret)来使⽤该选项, 因为这样不安全: 在命令⾏中输⼊的secret 可以被其他⼈通过ps 等命令查看到.除了以上的语法格式(nt: 指spi@ipaddr algo:secret), 还可以在后⾯添加⼀个语法输⼊⽂件名字供tcpdump 使⽤(nt:即把spi@ipaddr algo:secret,... 中...换成⼀个语法⽂件名). 此⽂件在接受到第⼀个ESP 包时会打开此⽂件, 所以最好此时把赋予tcp -f 显⽰外部的IPv4 地址时(nt: foreign IPv4 addresses, 可理解为, ⾮本机ip地址), 采⽤数字⽅式⽽不是名字.(此选项是⽤来对付Sun公司的NIS服务器的缺陷(nt: NIS, ⽹络信息服务, tcpdump 显⽰外部地址的名字时会⽤到她提供的名称服务): 此NIS服务由于对外部(foreign)IPv4地址的测试需要⽤到本地⽹络接⼝(nt: tcpdump 抓包时⽤到的接⼝)及其IPv4 地址和⽹络掩码. 如果此地址或⽹络掩码不可⽤, 或者此接⼝根本就没有设置相应⽹络地址和⽹络掩码(nt: linux 下的 'any' ⽹络接⼝就不需要设置地-F file使⽤file ⽂件作为过滤条件表达式的输⼊, 此时命令⾏上的输⼊将被忽略.-i interface指定tcpdump 需要监听的接⼝. 如果没有指定, tcpdump 会从系统接⼝列表中搜寻编号最⼩的已配置好的接⼝(不包括 loopback 接⼝).⼀但找到第⼀个符合条件的接⼝, 搜寻马上结束.在采⽤2.2版本或之后版本内核的Linux 操作系统上, 'any' 这个虚拟⽹络接⼝可被⽤来接收所有⽹络接⼝上的数据包(nt: 这会包括⽬的是该⽹络接⼝的, 也包括⽬的不是该⽹络接⼝的). 需要注意的是如果真实⽹络接⼝不能⼯作在'混杂'模式(promiscuou 如果 -D 标志被指定, tcpdump会打印系统中的接⼝编号,⽽该编号就可⽤于此处的interface 参数.-l 对标准输出进⾏⾏缓冲(nt: 使标准输出设备遇到⼀个换⾏符就马上把这⾏的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有⽤. ⽐如, 可通过以下命令组合来达到此⽬的:``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使⽤tee来把tcpdump 的输出同时放到⽂件dat和标准输出中, ⽽后者通过重定向操作'>', 把tcpdump的输出放到dat ⽂件中, 同时通过tail把dat⽂件中的内容放到标准输出中) -L 列出指定⽹络接⼝所⽀持的数据链路层的类型后退出.(nt: 指定接⼝通过-i 来指定)-m module通过module 指定的file 装载SMI MIB 模块(nt: SMI,Structure of Management Information, 管理信息结构MIB, Management Information Base, 管理信息库. 可理解为, 这两者⽤于SNMP(Simple Network Management Protoco)协议数据包的抓取. 具此选项可多次使⽤, 从⽽为tcpdump 装载不同的MIB 模块.-M secret 如果TCP 数据包(TCP segments)有TCP-MD5选项(在RFC 2385有相关描述), 则为其摘要的验证指定⼀个公共的密钥secret.-n 不对地址(⽐如, 主机地址, 端⼝号)进⾏数字表⽰到名字表⽰的转换.-N 不打印出host 的域名部分. ⽐如, 如果设置了此选现, tcpdump 将会打印'nic' ⽽不是 ''.-O 不启⽤进⾏包匹配时所⽤的优化代码. 当怀疑某些bug是由优化代码引起的, 此选项将很有⽤.-p ⼀般情况下, 把⽹络接⼝设置为⾮'混杂'模式. 但必须注意 , 在特殊情况下此⽹络接⼝还是会以'混杂'模式来⼯作;从⽽, '-p' 的设与不设, 不能当做以下选现的代名词:'ether host {local-hw-add}' 或 'ether broadcast'(nt: 前者表⽰只匹配以太⽹地址为ho -q 快速(也许⽤'安静'更好?)打印输出. 即打印很少的协议相关信息, 从⽽输出⾏都⽐较简短.-R 设定tcpdump 对 ESP/AH 数据包的解析按照 RFC1825⽽不是RFC1829(nt: AH, 认证头, ESP,安全负载封装, 这两者会⽤在IP包的安全传输机制中). 如果此选项被设置, tcpdump 将不会打印出'禁⽌中继'域(nt: relay prevention field). 另外,由于ES-r file从⽂件file 中读取包数据. 如果file 字段为 '-' 符号, 则tcpdump 会从标准输⼊中读取包数据.-S 打印TCP 数据包的顺序号时, 使⽤绝对的顺序号, ⽽不是相对的顺序号.(nt: 相对顺序号可理解为, 相对第⼀个TCP 包顺序号的差距,⽐如, 接受⽅收到第⼀个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序-s snaplen设置tcpdump的数据包抓取长度为snaplen, 如果不设置默认将会是68字节(⽽⽀持⽹络接⼝分接头(nt: NIT, 上⽂已有描述,可搜索'⽹络接⼝分接头'关键字找到那⾥)的SunOS系列操作系统中默认的也是最⼩值是96).68字节对于IP, ICMP(nt: Internet C -T type强制tcpdump按type指定的协议所描述的包结构来分析收到的数据包. ⽬前已知的type 可取的协议为:aodv (Ad-hoc On-demand Distance Vector protocol, 按需距离向量路由协议, 在Ad hoc(点对点模式)⽹络中使⽤),cnfp (Cisco NetFlow protocol), rpc(Remote Procedure Call), rtp (Real-Time Applications protocol),rtcp (Real-Time Applications con-trol protocol), snmp (Simple Network Management Protocol),tftp (Trivial File Transfer Protocol, 碎⽂件协议), vat (Visual Audio Tool, 可⽤于在internet 上进⾏电视电话会议的应⽤层协议), 以及wb (distributed White Board, 可⽤于⽹络会议的应⽤层协议).-t 在每⾏输出中不打印时间戳-tt 不对每⾏输出的时间进⾏格式处理(nt: 这种格式⼀眼可能看不出其含义, 如时间戳打印成1261798315)-ttt tcpdump 输出时, 每两⾏打印之间会延迟⼀个段时间(以毫秒为单位)-tttt 在每⾏打印的时间戳之前添加⽇期的打印-u 打印出未加密的NFS 句柄(nt: handle可理解为NFS 中使⽤的⽂件句柄, 这将包括⽂件夹和⽂件夹中的⽂件)-U 使得当tcpdump在使⽤-w 选项时, 其⽂件写⼊与包的保存同步.(nt: 即, 当每个数据包被保存时, 它将及时被写⼊⽂件中,⽽不是等⽂件的输出缓冲已满时才真正写⼊此⽂件)-U 标志在⽼版本的libcap库(nt: tcpdump 所依赖的报⽂捕获库)上不起作⽤, 因为其中缺乏pcap_cump_flush()函数.-v 当分析和打印的时候, 产⽣详细的输出. ⽐如, 包的⽣存时间, 标识, 总长度以及IP包的⼀些选项. 这也会打开⼀些附加的包完整性检测, ⽐如对IP或ICMP包头部的校验和.-vv 产⽣⽐-v更详细的输出. ⽐如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码.-vvv 产⽣⽐-vv更详细的输出. ⽐如, telent 时所使⽤的SB, SE 选项将会被打印, 如果telnet同时使⽤的是图形界⾯,其相应的图形选项将会以16进制的⽅式打印出来(nt: telnet 的SB,SE选项含义未知, 另需补充).-w 把包数据直接写⼊⽂件⽽不进⾏分析和打印输出. 这些包数据可在随后通过-r 选项来重新读⼊并进⾏分析和打印.-W filecount此选项与-C 选项配合使⽤, 这将限制可打开的⽂件数⽬, 并且当⽂件数据超过这⾥设置的限制时, 依次循环替代之前的⽂件, 这相当于⼀个拥有filecount 个⽂件的⽂件缓冲池. 同时, 该选项会使得每个⽂件名的开头会出现⾜够多并⽤来占位的0, 这可-x 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据(但不包括连接层的头部).总共打印的数据⼤⼩不会超过整个数据包的⼤⼩与snaplen 中的最⼩值. 必须要注意的是, 如果⾼层协议数据没有snaplen 这么长,并-xx tcpdump 会打印每个包的头部数据, 同时会以16进制打印出每个包的数据, 其中包括数据链路层的头部.-X 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据(但不包括连接层的头部).这对于分析⼀些新协议的数据包很⽅便.-XX 当分析和打印时, tcpdump 会打印每个包的头部数据, 同时会以16进制和ASCII码形式打印出每个包的数据, 其中包括数据链路层的头部.这对于分析⼀些新协议的数据包很⽅便.-y datalinktype设置tcpdump 只捕获数据链路层协议类型是datalinktype的数据包-Z user使tcpdump 放弃⾃⼰的超级权限(如果以root⽤户启动tcpdump, tcpdump将会有超级⽤户权限), 并把当前tcpdump的⽤户ID设置为user, 组ID设置为user⾸要所属组的ID(nt: tcpdump 此处可理解为tcpdump 运⾏之后对应的进程)此选项也可在编译的时候被设置为默认打开.(nt: 此时user 的取值未知, 需补充)命令实例:⼀、默认启动tcpdump:直接启动tcpdump将监视第⼀个⽹络接⼝上所有流过的数据包。
F5负载均衡器用tcpdump命令的抓包方法作者:邹善部门:业务与软件技术服务器支撑技术团队参考文档:<<F5负载均衡器配置指导书>> 林浩泓本文简单介绍在F5负载均衡器上用tcpdump命令进行抓包的方法,希望能对调试F5负载均衡器时有所帮助。
用tcpdump命令可以观察到从client端发出来的数据包有没有到F5负载均衡器,F5负载均衡器有没有把收到的数据包按设置发送出去,F5负载均衡器有没有收到后面真实服务器发过来的数据包。
Tcpdump命令可以对从client端到F5再到真实服务器的数据流进行跟踪。
Tcpdump命令是F5本身自带的命令,不需要额外安装其他软件包。
1 Tcpdump命令本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。
命令语法:tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ][ -i interface ] [ -m module ] [ -r file ][ -s snaplen ] [ -T type ] [ -w file ][ -E algo:secret ] [ expression ]其中:➢-e在输出行打印出数据链路层的头部信息➢-i报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括loop-back接口)➢-n不将IP地址或端口号转化为域名或协议名称➢-r从文件中读取(该文件由-w选项创建)➢-s确定捕获报文大小➢-w直接将捕获报文写入文件,而不是对其进行解析并通过屏幕显示(与-r选项对应)➢-x每个报文以十六进制方式显示➢-X每个报文同时以文本和十六进制显示➢expression匹配表达式的分组将进行解析。
如果不指定表达式,系统对所有分组进行捕获分析。
复杂表达式可以使用“and”与、“or”或以及“not”非操作进行组合。
表达式有三种:✓type三种种类:host、net和port。
比如:host 10.1.1.1。
如果不指定类型,默认为host。
✓dir有src、dst、src or dst和src and dst四种方向。
默认为src or dst,即双向。
proto常见协议有:ip、arp、tcp、udp、icmp等。
如果不指定协议类型,默认为所有协议。
2 在F5上用tcpdump抓包示例以上图数据流为例,在F5上可以用tcpdump命令分别定位手机的数据流有没有到达F5负载均衡器、F5负载均衡器是否把收到的数据包发真实的服务器上及真实服务器有没有把数据返回给F5。
上图中,手机的IP地址为10.139.0.0/16,F5上的做的VIP为10.0.0.174:9201,后台的真实IP地址为:10.0.0.196/26。
F5上有两个vlan,一个为external vlan,用于接F5的外网,另一个为internal vlan,用于接F5的内网,在本例中,port 2.1接外网,port 1.9接真实服务器。
注意:在采用F5的双机时,要在数据流流经的F5上进行抓包,如果在数据流不经过的F5上抓包,是抓不到数据包的。
●在F5上用tcpdump定位手机的数据流有没有到达F5:因手机过来的地址是不定的,只是限定在一个地址池:10.139.0.0/16中,所以在F5上可以采用对源地址为10.139.0.0/16 (src net 10.139.0.0/16)进行抓包;F5是在通过port 2.1与外网相连,所以可以对interface 2.1进行抓包,所以抓包语句可写为如下:JSNJ-B-SW001-WAP:~# tcpdump -i 2.1 src net 10.139.0.0/16tcpdump: listening on 2.122:26:54.032326 10.139.110.6.49153 > 10.0.0.174.9201: udp 23522:26:54.046591 10.139.110.6.49153 > 10.0.0.174.9201: udp 422:26:54.273444 10.139.110.6.49153 > 10.0.0.174.9201: udp 23522:26:55.626692 10.139.110.6.49153 > 10.0.0.174.9201: udp 3从以上抓到的包看,10.139.110.6已经把数据包送到VIP:10.0.0.174:9201上来。
前面22:26:54.032326是时间标记。
如果在外连接口上抓不到数据,则要检查从手机到F5之间的路由是否可达了。
●在F5上用tcpdump定位手机的数据流有没有从F5上发向真实的服务器(10.0.0.196)F5的port 1.9是连接真实服务器10.0.0.196的接口,可以在此接口上对目的地址为10.0.0.196 ,端口号为9201的数据进行抓包。
JSNJ-B-SW001-WAP:~# tcpdump -i 1.9 dst 10.0.0.196 and port 9201tcpdump: listening on 1.922:31:19.575618 10.139.110.6.49153 > 10.0.0.196.9201: udp 23722:31:20.989582 10.139.110.6.49153 > 10.0.0.196.9201: udp 322:31:27.854904 10.139.110.6.49153 > 10.0.0.196.9201: udp 23722:31:29.271142 10.139.110.6.49153 > 10.0.0.196.9201: udp 3从结果上看:10.139.110.6的数据包已离开F5,发到10.0.0.196上。
注意的是:此数据包的源IP地址还是手机的地址。
结果从接服务器的接口上看不到离开F5的数据包,则需要检查F5的配置有没有问题。
●在F5上用tcpdump定位真实服务器的数据流有没有返回F5F5的port 1.9是连接真实服务器10.0.0.196的接口,可以在此接口上对源地址为10.0.0.196 ,端口号为9201的数据进行抓包JSNJ-B-SW001-WAP:~# tcpdump -i 1.9 src 10.0.0.196 and port 9201tcpdump: listening on 1.922:32:26.302664 10.0.0.196.9201 > 10.139.110.6.49153: udp 3 (DF)22:32:26.393834 10.0.0.196.9201 > 10.139.110.6.49153: udp 1403 (DF)22:32:26.394014 10.0.0.196.9201 > 10.139.110.6.49153: udp 176 (DF)22:32:27.273660 10.0.0.196.9201 > 10.139.110.6.49153: udp 1403 (DF)22:32:28.672322 10.0.0.196.9201 > 10.139.110.6.49153: udp 4 (DF)22:32:29.832202 10.0.0.196.9201 > 10.139.110.6.49152: udp 4 (DF)如果没有抓到相应的数据包,则有可能是真实服务器没有把数据包发回到F5上,此时,应当检查真实服务器配置,可以在真实服务器本地检查服务是否正常(如是IE应用在本地服务器上用IE浏览则可)。
从以上抓到的数据包可以看出数据包的目的地址不是F5,而是手机的真实地址,所以要注意检查真实服务器的网关有没有设置好,一般情况下真实服务器的网关要设置成F5 internal vlan 的self IP或share IP(双机情况)。
现场已碰到很多因为没有设置真实服务器网关而造成访问不通的情况。
●在F5上用tcpdump定位F5有没有把数据流返回到手机上:在F5上对port 2.1 目的地址为10.139.0.0/16的网段抓包:JSNJ-B-SW001-WAP:~# tcpdump -i 2.1 dst net 10.139.0.0/16tcpdump: listening on 2.112:25:24.899435 10.0.0.174.9201 > 10.139.110.6.8502: udp 3 (DF)12:25:25.170922 10.0.0.174.9201 > 10.139.110.6.8502: udp 1569 (frag 60525:1480@0+) 12:25:25.170933 10.0.0.174 > 10.139.110.6: (frag 60525:97@1480)12:25:27.479392 10.0.0.174.9201 > 10.139.110.6.8502: udp 3 (DF)12:25:28.520496 10.0.0.174.9201 > 10.139.110.6.8502: udp 1290 (DF)如果F5没有把数据包发送到外网去,则要检查F5的配置,同时也要非常注意F5有没有到外网的路由。
检查F5到外网的路由可以在F5上用netstat –rn命令查看:JSNJ-B-SW001-WAP:~# netstat -rnRouting tablesInternet:Destination Gateway Flags MTU Ifdefault 10.0.0.140 UGS 1500 vlan010.0.0.128/26 link#29 UC 1500 vlan010.0.0.131 0.1.d7.23.21.b1 UHLc 1500 lo010.0.0.140 0.10.db.ff.20.70 UHLc 1500 vlan0查看是否有default的路由。
如果没有default路由,则需要到F5上用config进入配置菜单,配置gateway。