基于树莓派交互抓包洞悉DHCP协议

简介: DHCP, 树莓派,

DHCP协议介绍

环境准备

交换机(关闭了DHCP的家用路由器也可以),DHCP Server(使用了树莓派3B,下文称树莓派),DHCP Client(普通能上网的设备,包括树莓派,甚至PC均可以。笔者刚好还有一台树莓派2,用来做client,下文称Client)

设置静态IP

DHCPServer作为DHCPServer,一定要先设置好静态IP地址。比如我们用网段10.0.0.0/24,将作为DHCP Server的树莓派设置静态IP:
vi /etc/dhcpcd.conf
添加内容如下

interface eth0
static ip_address=10.0.0.4/24                                                                                                                                                                                                                
static routers=10.0.0.1                                                                                                                                                                                                                      
static domain_name_servers=10.0.0.1 8.8.8.8 114.114.114.114  

然后重启生效。

树莓派DHCP Server的安装

安装DHCP Server

在作为Server的树莓派上安装DHCP Server:
apt-get install isc-dhcp-server

配置DHCP网卡

编辑配置文件, 指定开启dhcp Server的网卡INTERFACESv4, 我们用了其中的以太网卡
vi /etc/default/isc-dhcp-server
内容如下

INTERFACESv4="eth0"
#INTERFACESv6=""

配置DHCP配置文件

vi /etc/dhcp/dhcpd.conf
主要增加如下内容

default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.2 10.0.0.30;    #分配网段
        option domain-name-servers 10.0.0.1;   #DNS服务
        option domain-name "internal.example.org";
        option routers 10.0.0.1;  #路由地址
        option broadcast-address 10.0.0.255;  #广播地址
}

启动DHCP服务

systemctl start isc-dhcp-server 启动服务

systemctl statuc isc-dhcp-server 查看服务状态

如果遇到下面错误
Starting ISC DHCPv4 server: dhcpddhcpd service already running (pid file /var/run/dhcpd.pid currenty exists…Failed!
执行rm -rf /var/run/dhcpd.pid 删除后重启服务即可以

抓包过程

在树莓派上安装tcpdump工具

使用tcpdump命令可以在linux侧抓包,甚至可以将抓包内容拿到desktop上使用工具进行解析。树莓派默认是没有安装tcpdump工具的,下面先介绍如何在树莓派上安装tcpdump,然后介绍基于tcpdump抓包的过程。tcpdump和依赖的运行库libpcap均是开源工具,我们可以下载源码后进行编译获取。编译的方式可以在自己的PC机采用交叉编译,也可以直接在树莓派上进行编译。本文使用后面这种方式。

安装tcpdump前准备工作

安装c编译所需包

apt-get install build-essential

安装libpcap的前置包

apt-get install flex
apt-get install bison

下载libpcap和tcpdump

官网可以获得软件源码包.
到LATEST RELEASES部分下载压缩包,笔者下载的是
tcpdump-4.99.0.tar.gzlibpcap-1.10.0.tar.gz
下载后解压

安装

分别进入上述libpcap和tcpdump解压后的文件夹内进行编译和安装,基本步骤均如下

  1. 生成makefile文件
    ./configure
  2. 编译
    make
  3. 安装

make install

确认是否安装成功

root@raspberrypi:/home/pi/soft/tcpdump-4.99.0# tcpdump --version
tcpdump version 4.99.0
libpcap version 1.10.0 (with TPACKET_V3)
OpenSSL 1.1.1d  10 Sep 2019

开始抓包

执行下面命令开始监听数据包
tcpdump -i eth0 -w /root/dhcp.pcap -s 0 port 67 and port 68

此时上电client并接入到交换机,则会有DHCP租赁过程出现。我们用dhcp status也可以查看到这个交互过程。
image.png

tcpdump停下来,将上面的/root/dhcp.pcap考回到pc机,用WireShark打开,就可以观看到DHCP过程。

image.png

如果错过了这个过程怎么办?可以在Client上执行下述命令释放dhcp租约
sudo dhclient -r

同样方法抓报文可以看到如下释放的过程
image.png

然后使用
sudo dhclient 重新从client端申请

目录
相关文章
|
网络协议 网络虚拟化
网络协议与攻击模拟-14-DHCP协议-DHCP snooping
网络协议与攻击模拟-14-DHCP协议-DHCP snooping
67 1
|
网络协议 Windows
网络协议与攻击模拟-11-DHCP协议原理
网络协议与攻击模拟-11-DHCP协议原理
77 0
|
2月前
|
网络协议 网络虚拟化 网络架构
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
67 1
|
2月前
|
网络协议 数据安全/隐私保护 网络虚拟化
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(下)
60 0
|
4月前
|
监控 安全 网络协议
DHCP 协议及其优缺点
【8月更文挑战第20天】
210 0
|
7月前
|
监控 安全 网络协议
|
7月前
|
负载均衡 安全 网络虚拟化
NewH3C—链路聚合、DHCP协议
NewH3C—链路聚合、DHCP协议
NewH3C—链路聚合、DHCP协议
|
7月前
|
网络协议 Linux iOS开发
|
7月前
|
域名解析 网络协议 Linux
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
|
7月前
|
网络协议
DHCP-动态主机配置协议
DHCP协议工作流程包括四个阶段:发现、提供、选择和确认。在发现阶段,客户端广播DHCP Discover报文寻找服务器。服务器在提供阶段回应DHCP Offer报文,包含可用IP地址及配置信息。客户端在选择阶段接收多个Offer并发送DHCP Request给选定服务器。最后,服务器发送DHCP Ack报文确认IP地址分配,客户端应用配置并接入网络。
72 0