Tcpdump配合Tcpreplay回放实现网络探测

简介:
  • 实际上,这个需求来自IT的监控,监控的根本目标是随时发现局域网内的非法DHCP服务器,以报警。

  • 实现的具体策略:找一台机器,每分钟跑一次cron,执行检查并在出错时报警(邮件或者短信)。具体的核心策略是:模拟广播DHCP DISCOVER包,在规定时间内给出DHCP REPLY的就是当前有效的DHCP服务器,假设我们局域网内唯一合法的DHCP是192.168.1.1,当给出REPLY的主机列表中没有 192.168.1.1或者又其他的主机回复时,那就报警。整个策略的关键问题其实就是模拟广播DHCP DISCOVER包,其他的问题都很容易做。

  • 前提,不得不说,对于网络编程和C的libnet等库的理解非常少,所以首选的做法不是编写程序,而是打算找一个现成的发包工具。当然,现在想来如果使用 Perl的库来做这件事情似乎也并不难,只不过还没打算用这个办法,事情就已经解决了 smile

  • 为了避免说明有误解,我先把自己的测试环境说明一下:

 OS CentOS 4.7 Tcpdump rpm tcpdump-3.8.2-12.el4_6.1 tcpdump version 3.8 libpcap version 0.8.3 Tcpreplay rpm tcpreplay-3.3.2-1.el4.rf tcpreplay version: 3.3.2 (build 2065) Copyright 2001-2008 by Aaron Turner Cache file supported: 04 Not compiled with libnet. Compiled against libpcap: 0.8.3 64 bit packet counters: enabled Verbose printing via tcpdump: disabled Packet editing: enabled Fragroute engine: enabled

 

DHCP扫盲

 

 

尝试过程

  • 首先我们需要了解自己发送的包应该长成什么样子,最直接的思路就是tcpdump或者wireshark(升级版ethereal) 抓l来看看

 shell> tcpdump -s0 -vv   eth0 -nn port 67  100  yfang.cap  
 
 
  
   
  
  
shell> wireshark
  • 上面的命令是没有问题的,而在实验中开始没有加-s0参数,结果只截取到了一个不完整的包,导致后面replay失败。

  • 这里描述一下replay受挫详细过程

 root@S71[1]~15:28:04
  
  
root@S71[1]~15:28:14
  
sending out eth0 processing file: yfang.cap processing file: yfang.cap processing file: yfang.cap Actual: 3 packets (288 bytes) sent  0.23 seconds Rated: 12007.5 bps, 0.09 Mbps/sec, 125.08 pps Statistics  network device: eth0 Attempted packets: 3 Successful packets: 3 Failed packets: 0 Retried packets (ENOBUFS): 0 Retried packets (EAGAIN): 0 
  [root@S172 ~]
 tcpdump: verbose output suppressed, use  or -vv
  • 现在我们已经知道怎么抓包了,如何简单区分DHCP各个包的具体信息呢,其实这一点上我个人推荐使用wireshark来分析,他不单会帮你抓好包,还会标明DHCP的标志信息,比如是DISCOVER,REQUEST,ACK,OFFER 等等。不用自己去分析标志位。即便如此,这里还是为感兴趣的朋友列一下DHCP Massage Type 的区别


http://blog.csdn.net/lby8203xj/article/details/6552213


科来数据包播放器:http://www.colasoft.com.cn/download/capsa_tool_pktplayer.php

科来数据包生成器:http://www.colasoft.com.cn/download/packet-builder.php


本文转自 stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1885112

相关文章
|
7月前
|
运维 网络协议 安全
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
【Shell 命令集合 网络通讯 】Linux 网络抓包工具 tcpdump命令 使用指南
233 0
|
7月前
|
机器学习/深度学习 网络协议 安全
网络抓包工具 - tcpdump
【1月更文挑战第1天】
260 4
|
存储 JavaScript 前端开发
js实现灵活下载和预览网络链接pdf文件
js实现灵活下载和预览网络链接pdf文件
1094 0
|
4月前
|
机器学习/深度学习 网络协议 安全
在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?
在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?
|
5月前
|
网络协议 Linux Windows
计算机网络抓包工具——tcpdump详解
计算机网络抓包工具——tcpdump详解
|
7月前
|
运维 网络协议 网络架构
网络质量探测
网络质量探测
77 0
|
7月前
|
数据采集 机器学习/深度学习 网络协议
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
133 0
|
Web App开发 存储 网络协议
一篇文章帮你拿下面试八股文之网络三次握手四次挥手, HTTP超文本传输协议重点理论刨析到实现简单的HTTP服务, 思考着图解着学习网络 (咱不死记硬背)
一篇文章帮你拿下面试八股文之网络三次握手四次挥手, HTTP超文本传输协议重点理论刨析到实现简单的HTTP服务, 思考着图解着学习网络 (咱不死记硬背)
一篇文章帮你拿下面试八股文之网络三次握手四次挥手, HTTP超文本传输协议重点理论刨析到实现简单的HTTP服务, 思考着图解着学习网络 (咱不死记硬背)
|
传感器
如何使用Simulink实现一个分布式电子控制单元 (ECU) 网络
如何使用Simulink实现一个分布式电子控制单元 (ECU) 网络
如何使用Simulink实现一个分布式电子控制单元 (ECU) 网络
|
存储 Java 数据库
JAVA实现网络多线程编程小游戏开发
实验总结:五子棋是一个很简单的游戏,但是如果认真对待,一个代码一个代码的去研究,会收获到很多知识,会打好学习基础。方便以后开发更高、更难的项目时打下稳固的基础。在自己开发的过程中会有各种意想不到的bug,通过查阅资料及询问老师同学进行解决对本身的一个代码能力会有一个质的增长,同时这也是一个非常快乐的过程。有进步,总归是好事。
JAVA实现网络多线程编程小游戏开发

热门文章

最新文章