Tcpdump 命令

    tcpdump命令是一个网络的抓包的命令行,他能指定具体的设备,也能制定具体的五元组进行捕获链路上的数据包。它可以再终端上打印出来也可以将捕获到得数据写入到一个文件,文件的格式是二进制形式,所以,我在打开该文件的时候才用的工具是UltraEdit.

 

    tcpdump的命令格式和参数说明:

    tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
      [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
      [ -T 类型 ] [ -w 文件名 ] [表达式 ]

     选型介绍:
         -a     将网络地址和广播地址转变成名字;
   -d     将匹配信息包的代码以人们能够理解的汇编格式给出;
   -dd   将匹配信息包的代码以c语言程序段的格式给出;
   -ddd   将匹配信息包的代码以十进制的形式给出;
   -e     将捕获的包数显示出来 
   -f    将外部的Internet地址以数字的形式打印出来;
   -l    使标准输出变为缓冲行形式;
   -n    不把网络地址转换成名字;
   -t     在输出的每一行不打印时间戳;
   -v    输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
   -vv     输出详细的报文信息;
   -c    在收到指定的包的数目后,tcpdump就会停止;
   -F    从指定的文件中读取表达式,忽略其它的表达式;
   -i     指定监听的网络接口;
   -r    从指定的文件中读取包(这些包一般通过-w选项产生);
   -w   直接将包写入文件中,并不分析和打印出来;
   -T    将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程
调用)和snmp(简单网络管理协议;)

    在使用该命令的时候,我主要使用的主要选项是:  -i [接口名]  -w [文件名]  -v -vv  -c -X -e

    例如:

    我在从eth0捕获100个数据包的时候,并将数据写入到capture.cap文件中,命令格式为:

    tcpdump -i eth0 -w capture.cap -v -vv -c 100 -X -e

    抓取一个一个ip段之间的数据包:

    tcpdump –s 0 –w socket host 10.1.3.9 and host 10.1.3.84

    如果从eth0且通信协议口为22,目标IP为192.168.1.100获取数据: 

    tcpdump -i eth0 port 22 and src host 192.168.1.100

    此外还有其他的一些关键词:host,(主机) , net( 网关), port(端口) , src(源IP) , dst(目的IP), 正则表达式:and , or

### 使用 `tcpdump` 命令进行网络流量捕获与分析 #### 安装 `tcpdump` 为了能够在 Linux 上使用 `tcpdump` 工具,需要先确保该工具已安装。对于不同的发行版,安装方法有所不同: - 对于 CentOS 系统: ```bash yum install -y tcpdump ``` - 对于 Ubuntu 系统: ```bash apt-get install -y tcpdump ``` 这些命令会自动下载并安装最新版本的 `tcpdump` 到系统中[^3]。 #### 捕获特定协议的流量 一旦安装完成,可以通过指定不同参数来捕获各种类型的网络流量。例如,要分别捕获 TCP、UDP 和 ICMP 流量,可执行如下命令: - 捕获 TCP 协议流量: ```bash sudo tcpdump -i eth0 tcp ``` - 捕获 UDP 协议流量: ```bash sudo tcpdump -i eth0 udp ``` - 捕获 ICMP 协议流量: ```bash sudo tcpdump -i eth0 icmp ``` 上述命令中的 `-i eth0` 参数指定了监听哪个网卡接口上的流量;如果不确定具体使用的网卡名称,则可以用 `any` 来代替,表示监控所有可用接口上的流量[^2]。 #### 数据包保存至文件 有时可能希望将捕获到的数据包保存下来以便后续处理或者分享给他人审查。这时可以利用 `-w` 参数把数据流导出成 `.pcap` 文件格式: ```bash sudo tcpdump -i eth0 -w capture.pcap ``` 这条指令会让 `tcpdump` 将从 `eth0` 接收到的所有数据包记录在一个名为 `capture.pcap` 的二进制文件里。之后还可以借助 Wireshark 或其他兼容的应用程序打开此文件来进行更深入的研究[^4]。 #### 高级特性与过滤条件设置 除了基本的功能外,`tcpdump` 还具备强大的过滤能力,允许用户定义复杂的查询表达式以筛选感兴趣的内容。比如只关注某个 IP 地址之间的通信情况或是限定端口号范围内的交互行为等。常见的逻辑运算符有 `and`, `or`, `not`,它们能组合起来形成更加精确的选择标准。 #### 实际应用场景举例 假设现在想要诊断服务器间是否存在连接超时现象,那么就可以尝试运行下面这段脚本,专门查找那些三次握手失败的情况: ```bash sudo tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src host localhost' -n | grep -v "SYN,ACK" ``` 这里运用到了一些高级技巧,包括但不限于位掩码匹配以及排除本地回环地址的影响等等[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值