天天看点

基于树莓派交互抓包洞悉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.gz

libpcap-1.10.0.tar.gz

下载后解压

安装

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

  1. 生成makefile文件

    ./configure

  2. 编译

    make

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也可以查看到这个交互过程。

基于树莓派交互抓包洞悉DHCP协议DHCP协议介绍环境准备抓包过程

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

基于树莓派交互抓包洞悉DHCP协议DHCP协议介绍环境准备抓包过程

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

sudo dhclient -r

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

基于树莓派交互抓包洞悉DHCP协议DHCP协议介绍环境准备抓包过程

然后使用

sudo dhclient

重新从client端申请

继续阅读