查看linux下dhcp服務器分配出去的IP地址及剩余IP地址
怎樣查看linux 下dhcp 服務器分配出去的IP 地址及剩余IP 地址1。你可以查看防火墻信息,如圖,可以清晰的看到,192.1681.200的IP 給了哪個MAC 地址2. /var/lib/d
怎樣查看linux 下

dhcp 服務器分配出去的IP 地址及剩余IP 地址
1。你可以查看防火墻信息,如圖,可以清晰的看到,192.1681.200的IP 給了哪個MAC 地址
2. /var/lib/dhcpd/dhcpd.leases這個文件專門記錄了DHCP 的分配情況
一、介紹
由于 ISC DHCP 沒有提供相應的統(tǒng)計工具,所以只能自己動手寫一個。sourceforge.net 上也有很多,例如
QUOTE:
php DHCP hosts list : 一個php 腳本,用于列出一個 DHCP 服務器上的 host 信息
rogueDetect :發(fā)送一個“誘騙”作用的 DHCP DISCOVER ,并等待非權威的 DHCP 服務器消息,以找出未授權的 DHCP 服務器
phpDHCPAdmin :一個基于 web 界面的管理 DHCP 工具。有認證、錯誤檢查、數(shù)據(jù)庫驅動,簡單易用
Analyzes of behavior of protocol DHCP :dhcpmap 能夠“注入”和捕捉 DHCP 流量
dhcpphp :一個 PHP 腳本,用于顯示一個 DHCP 服務器的 leases 記錄
webDHCP :類似phpDHCPAdmin 的工具
DHCP lease parser :是一個簡單的守護進程,它把 DHCP 服務器的 leases 狀態(tài)的變化記錄到一個數(shù)據(jù)庫,以便歷史查詢。
同時該工具還提供了一個歷史記錄以供查詢
,Lanloard DHCP lease tracker :一個 CGI 程序,用于跟蹤 DHCP leases
ISC DHCP dhcpd.conf parser and editor :以一個友好的界面方便你編輯dhcpd.conf
DHCPdetector :用于檢測網(wǎng)絡上的 DHCP 服務,主要是為了找出 rogue DHCP
reportdhcp.pl :一個用于匯報 DHCP 統(tǒng)計信息的perl 腳本,需要啟用 web 服務
所以俺也動手寫了一個,功能比較簡單,主要有:
1、查詢某個 mac 的租用記錄 (v1.0)
2、查詢某個ip 地址的租用記錄 (v1.0)
3、查詢某個主機名的租用記錄 (v1.0)
4、允許指定查詢的開始時間和結束時間。開始時間默認為當天0點,結束時間默認為當前。(v1.0)
5、列出所有曾經(jīng)被租用的ip 以及它們目前的狀態(tài) (v1.0)
6、許指定某個備份的lease.record.
7、每月15日的0點10分自動把 lease 記錄以lease.record.
二、限制
目前暫時不考慮 DHCP Failover 以及 DHCP Omshell的分析(這兩個東西都會在dhcpd.leases 中寫數(shù)據(jù))。
該腳本只記錄客戶機的 mac 、客戶機的主機名(如果有的話)以及 lease 的開始/結束時間/狀態(tài)。
由于環(huán)境所限,只有1臺客戶機可供測試,所以歡迎各位朋友多多指正
三、腳本組成
a ) lease_wath.sh ,主要是跟蹤 /var/lib/dhcp/dhcpd.leases文件的輸出,并固定輸出到某個文件(默認是 /tmp/lease.record)。
,
每次只能啟動一個

lease_watch.sh ,否則程序會報錯(Error !Another lease_watch is running?。?/p>
b ) parse.sh :完成上述的功能的第1~6 項。
c ) rotate.sh :每月15日的0點10分自動把當前的 /tmp/lease.record備份為 /tmp/lease.record.
四、屏幕截圖
按ip 選擇:
按 mac 選擇:
按 hostname 選擇:
,

指定某個歷史文件進行查詢
列出所有曾經(jīng)被租用的ip 以及其狀態(tài):
,

語法:
========================
從dhcpd.lease 中提取MAC 和IP 地址. 2008-01-10 22:17:26 從DHCP 的log 中提取MAC 和IP 地址.
/var/lib/dhcpd/dhcp.lease中的一段記錄如下:
lease 192.168.1.238 {
starts 0 2007/11/25 11:57:41;
ends 0 2007/11/25 17:57:41;
tstp 0 2007/11/25 17:57:41;
binding state free;
,hardware ethernet 00:0c:29:ac:4e:01;
uid "77eth001016545J04)4N1";
}
# catdhcpd.leases | egrep 'lease|hardware' | sed 's/lease//g' | sed 's/{//g' | s ed 's/hardware ethernet//g
網(wǎng)友給的辦法. 測試了一下. 重復的較多. 主要是出現(xiàn)了. 同一個MAC 多次獲取不同的IP 地址的情況 在CU 上找到更好的命令[url]http://bbs.chinaunix.net/thread-980700-1-1.html[/url]
catdhcpd.leases|awk 'BEGIN{RS=ORS="}"}{print $2,$21,"n"}'
或者
awk 'BEGIN{RS=ORS="}"}{print $2,$21,"n"}' dhcpd.leases
解釋:
RS 輸入的記錄他隔符新行
ORS 輸出的記錄分隔符新行
從頭查找, 遇到}結束, 顯示第2和第21個字段.ip 在第2個字段.mac 在第21個字段.
這樣出來的結果基本符合我們的要求.
All so
}192.168.1.250 00:0c:29:ac:4e:01;
}192.168.1.238 00:0c:29:ac:4e:01;
}192.168.1.241 00:0c:29:ac:4e:01;
}192.168.1.246 00:0c:29:ac:4e:01;
}192.168.1.248 00:0c:29:ac:4e:01;
}192.168.1.251 00:0c:29:05:ac:8a;
}192.168.1.253 00:0c:29:c2:b3:44;
}192.168.1.247 00:0a:eb:f3:39:dd;
}192.168.1.254 00:0c:29:c2:b3:44;
}192.168.1.249 00:0c:29:a8:c7:0a;
}192.168.1.245 00:0c:29:79:e2:aa;
}192.168.1.244 00:0c:29:79:e2:aa;
}192.168.1.243 00:0c:29:9d:e8:d8;
}192.168.1.240 00:0c:29:a8:59:21;
}192.168.1.242 00:0c:29:9d:e8:d8;
}192.168.1.239 00:16:d3:b6:1b:d2;
}
缺點就是第一行多了All so 每一行多了},也就是說我們要把這個結果再處理一下.
去掉第一行和最后一行, 并把它排序.
改進一下命令, 由于dhcpd.lease 前面7行都是注釋的內容, 我們跳過這些行
tail -n 8 dhcpd.lease
從第8行開始顯示dhcpd.lease 文件
#tail -n 8 dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print $2,$21,"n"}' 192.168.1.252 00:0c:29:ac:4e:01;
}192.168.1.250 00:0c:29:ac:4e:01;
}192.168.1.238 00:0c:29:ac:4e:01;
,}192.168.1.241 00:0c:29:ac:4e:01;
}192.168.1.246 00:0c:29:ac:4e:01;
}192.168.1.248 00:0c:29:ac:4e:01;
}192.168.1.251 00:0c:29:05:ac:8a;
}192.168.1.253 00:0c:29:c2:b3:44;
}192.168.1.247 00:0a:eb:f3:39:dd;
}192.168.1.254 00:0c:29:c2:b3:44;
}192.168.1.249 00:0c:29:a8:c7:0a;
}192.168.1.245 00:0c:29:79:e2:aa;
}192.168.1.244 00:0c:29:79:e2:aa;
}192.168.1.243 00:0c:29:9d:e8:d8;
}192.168.1.240 00:0c:29:a8:59:21;
}192.168.1.242 00:0c:29:9d:e8:d8;
}192.168.1.239 00:16:d3:b6:1b:d2;
}
現(xiàn)在還有該死的},我們用sed 命令把它替換掉.
sed 's/}//g'
替換所有的}為空
#tail -n 8 dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print $2,$21,"n"}'|sed 's/}//g'
192.168.1.252 00:0c:29:ac:4e:01;
192.168.1.250 00:0c:29:ac:4e:01;
192.168.1.238 00:0c:29:ac:4e:01;
192.168.1.241 00:0c:29:ac:4e:01;
192.168.1.246 00:0c:29:ac:4e:01;
192.168.1.248 00:0c:29:ac:4e:01;
192.168.1.251 00:0c:29:05:ac:8a;
192.168.1.253 00:0c:29:c2:b3:44;
192.168.1.247 00:0a:eb:f3:39:dd;
192.168.1.254 00:0c:29:c2:b3:44;
192.168.1.249 00:0c:29:a8:c7:0a;
192.168.1.245 00:0c:29:79:e2:aa;
192.168.1.244 00:0c:29:79:e2:aa;
192.168.1.243 00:0c:29:9d:e8:d8;
192.168.1.240 00:0c:29:a8:59:21;
192.168.1.242 00:0c:29:9d:e8:d8;
192.168.1.239 00:16:d3:b6:1b:d2;
我們再把結果排序一下, 讓它看上去舒服一些.
#tail -n 8 dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print $2,$21,"n"}'|sed 's/}//g'|sort -n
192.168.1.238 00:0c:29:ac:4e:01;
192.168.1.239 00:16:d3:b6:1b:d2;
,

subnet 192.168.23.0 netmask 255.255.255.0 { #定義網(wǎng)段IP 范圍,須在本機所處網(wǎng)段范圍內,{}內的信息表示此網(wǎng)段的配置信息
# --- default gateway
option routers 192.168.23.1; #設置客戶端默認網(wǎng)關
option subnet-mask 255.255.255.0; #設置客戶端子網(wǎng)掩碼
option domain-name "domain.org"; #設置域名
option domain-name-servers 192.168.23.128; #設置網(wǎng)絡內部DNS 服務器的IP 地址
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 192.168.23.129 192.168.23.254; #定義DHCP 地址池的服務范圍,需排除靜態(tài)地址 default-lease-time 21600; #設置默認租約時間
max-lease-time 43200; #設置最大租約時間
host ns { #設置靜態(tài)IP 地址,用于網(wǎng)絡內固定服務器IP ,不要置于定義好的DHCP 地址池范圍內,否則會引起IP 沖突。
hardware ethernet 00:0C:29:00:5B:78; #設置靜態(tài)主機的mac 地址,與IP 進行綁定
fixed-address 192.168.23.128;
}
}
配置/etc/dhcpd.conf
#為注釋,除括號一行外,每行都應以;結尾,
設置的項目都具有獨特的名稱。形式為<參數(shù)代號><設置內容>,如default-time 20000
某些項目必須利用option 設置,形式為option<參數(shù)代碼><設置內容>
DHCP 的ip 分為靜態(tài)ip 和動態(tài)ip ,如果設置靜態(tài)ip 需要知道要設置主機的MAC 地址,#ping 目標主機ip ,#arp –n 查看。
parameters (參數(shù)):表明如何執(zhí)行任務,是否要執(zhí)行任務,或將哪些網(wǎng)絡配置選項發(fā)送給客戶 Defaults-lease-time :默認租約時間,默認單位為秒
Max-lease-time :最大租約時間,客戶端超過租約但尚未更新IP 時,最長可以使用該IP 的時間 ddns-update-style 配置DHCP-DNS 互動更新模式
default-lease-time 指定確省租賃時間的長度,單位是秒
hardware 指定網(wǎng)卡接口類型和MAC 地址
server-name 通知DHCP 客戶服務器名稱
get-lease-hostnames flag 檢查客戶端使用的IP 地址