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解壓後的檔案夾内進行編譯和安裝,基本步驟均如下
- 生成makefile檔案
./configure
- 編譯
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也可以檢視到這個互動過程。
将
tcpdump停下來,将上面的/root/dhcp.pcap考回到pc機,用WireShark打開,就可以觀看到DHCP過程。
如果錯過了這個過程怎麼辦?可以在Client上執行下述指令釋放dhcp租約
sudo dhclient -r
同樣方法抓封包可以看到如下釋放的過程
然後使用
sudo dhclient
重新從client端申請