天天看點

基于樹莓派互動抓包洞悉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端申請

繼續閱讀