1。你可以查看防火墙信息,如图,可以清晰的看到,192.1681.200的IP给了哪个MAC地址

2. /var/lib/dhcpd/dhcpd.leases 这个文件专门记录了DHCP的分配情况



一、介绍

由于 ISC DHCP 没有提供相应的统计工具,所以只能自己动手写一个。sourceforge.net 上也有很多,例如

QUOTE:

php DHCP hosts list : 一个 php 脚本,用于列出一个 DHCP 服务器上的 host 信息

rogueDetect :发送一个“诱骗”作用的 DHCP DISCOVER ,并等待非权威的 DHCP 服务器消息,以找出未授权的 DHCP 服务器

phpDHCPAdmin :一个基于 web 界面的管理 DHCP 工具。有认证、错误检查、数据库驱动,简单易用

Analyzes of behavior of protocol DHCP :dhcpmap 能够“注入”和捕捉 DHCP 流量

dhcpphp :一个 PHP 脚本,用于显示一个 DHCP 服务器的 leases 记录

webDHCP :类似 phpDHCPAdmin 的工具

DHCP lease parser :是一个简单的守护进程,它把 DHCP 服务器的 leases 状态的变化记录到一个数据库,以便历史查询。

同时该工具还提供了一个历史记录以供查询

Lanloard DHCP lease tracker :一个 CGI 程序,用于跟踪 DHCP leases

ISC DHCP dhcpd.conf parser and editor :以一个友好的界面方便你编辑 dhcpd.conf

DHCPdetector :用于检测网络上的 DHCP 服务,主要是为了找出 rogue DHCP

reportdhcp.pl :一个用于汇报 DHCP 统计信息的 perl 脚本,需要启用 web 服务


所以俺也动手写了一个,功能比较简单,主要有 :


1、查询某个 mac 的租用记录 (v1.0)

2、查询某个 ip 地址的租用记录 (v1.0)

3、查询某个主机名的租用记录 (v1.0)

4、允许指定查询的开始时间和结束时间。开始时间默认为当天0点,结束时间默认为当前。(v1.0)

5、列出所有曾经被租用的 ip 以及它们目前的状态 (v1.0)

6、许指定某个备份的 lease.record.<date> 进行查询。(v1.1)

7、每月15日的0点10分自动把 lease 记录以 lease.record.<date> 备份,所以意味着默认只能查15天内的数据 (v1.1)



二、限制

目前暂时不考虑 DHCP Failover 以及 DHCP Omshell 的分析(这两个东西都会在 dhcpd.leases 中写数据)。

该脚本只记录客户机的 mac、客户机的主机名(如果有的话)以及 lease 的开始/结束时间/状态。

由于环境所限,只有1台客户机可供测试,所以欢迎各位朋友多多指正


三、 脚本组成

a) lease_wath.sh ,主要是跟踪 /var/lib/dhcp/dhcpd.leases 文件的输出,并固定输出到某个文件(默认是 /tmp/lease.record)。

每次只能启动一个 lease_watch.sh ,否则程序会报错(Error!Another lease_watch is running!)

b) parse.sh :完成上述的功能的第1~6 项 。

c) rotate.sh :每月15日的0点10分自动把当前的 /tmp/lease.record 备份为 /tmp/lease.record.<date> ,同时重启 lease_watch。


四、屏幕截图

按 ip 选择:

怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

按 mac 选择 :

怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

按 hostname 选择:

怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

指定某个历史文件进行查询

怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

列出所有曾经被租用的 ip 以及其状态 :

怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

语法 :
怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址 - zhuzhu - 五事九思

http://carywu.blog.51cto.com/13185/61628

========================

从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 "\377eth0\000\001\000\001\016\354\015J\000\014)\254N\001";
}
# cat dhcpd.leases | egrep 'lease|hardware' | sed 's/lease//g' | sed 's/{//g' | sed 's/hardware ethernet//g
网友给的办法.测试了一下.重复的较多.主要是出现了.同一个MAC多次获取不同的IP地址的情况
cat dhcpd.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行都是注释的内容,我们跳过这些行
tai