linux下dhcp服务器分配出去的IP地址及剩余IP地址

我认为有2种办法

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

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

**************************************************************************************

作者 :ailms <ailms{@}qq{dot}com>

版本 :v1.1

完成时间  :2008/02/02 0:28

**************************************************************************************


一、介绍

  由于 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行都是注释的内容,我们跳过这些行
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; 
现在还有该死的},我们用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; 
192.168.1.240 00:0c:29:a8:59:21; 
192.168.1.241 00:0c:29:ac:4e:01; 
192.168.1.242 00:0c:29:9d:e8:d8; 
192.168.1.243 00:0c:29:9d:e8:d8; 
192.168.1.244 00:0c:29:79:e2:aa; 
192.168.1.245 00:0c:29:79:e2:aa; 
192.168.1.246 00:0c:29:ac:4e:01; 
192.168.1.247 00:0a:eb:f3:39:dd; 
192.168.1.248 00:0c:29:ac:4e:01; 
192.168.1.249 00:0c:29:a8:c7:0a; 
192.168.1.250 00:0c:29:ac:4e:01; 
192.168.1.251 00:0c:29:05:ac:8a; 
192.168.1.252 00:0c:29:ac:4e:01; 
192.168.1.253 00:0c:29:c2:b3:44; 
192.168.1.254 00:0c:29:c2:b3:44;
如果只是单纯要IP或者MAC
列出IP
cat dhcpd.leases|grep -o '\<[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\>'
 
 
列出MAC
cat dhcpd.lease|grep -o '\<[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}:[0-9a-f]\{2\}\>' 

本文出自 “风吹云动” 博客,请务必保留此出处http://coolerfeng.blog.51cto.com/133059/58773

1.DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。主要内容见表1 

 参数< XMLNAMESPACE PREFIX ="O" />

解释

ddns-update-style

配置DHCP-DNS 互动更新模式。

default-lease-time

指定确省租赁时间的长度,单位是秒。

max-lease-time

指定最大租赁时间长度,单位是秒。

hardware

指定网卡接口类型和MAC地址。

server-name

通知DHCP客户服务器名称。

get-lease-hostnames flag

检查客户端使用的IP地址。

fixed-address ip

分配给客户端一个固定的地址。

authritative

拒绝不正确的IP地址的要求。

2. DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等。主要内容见表2:

声明

解释

shared-network

用来告知是否一些子网络分享相同网络。

subnet

描述一个IP地址是否属于该子网。

range 起始IP 终止IP

提供动态分配IP 的范围。

host 主机名称

参考特别的主机。

group

为一组参数提供声明。

allow unknown-clients ﹔deny unknown-client

是否动态分配IP给未知的使用者。

allow bootp;deny bootp

是否响应激活查询。

allow booting﹔deny booting

是否响应使用者查询。

 

filename

开始启动文件的名称,应用于无盘工作站。

next-server

设置服务器从引导文件中装如主机名,应用于无盘工作站。



3. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始,主要内容包括见表3: 

选项

解释

subnet-mask

为客户端设定子网掩码。

domain-name

为客户端指明DNS名字。

domain-name-servers

为客户端指明DNS服务器IP地址。

host-name

为客户端指定主机名称。

routers

为客户端设定默认网关。

broadcast-address

为客户端设定广播地址。

ntp-server

为客户端设定网络时间服务器IP地址。

ime-offset

为客户端设定和格林威治时间的偏移时间,单位是秒。

++++++++++++++++++++

rpm -qa | grep dhcpd   #查看主机是否安装dhcp包

# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcpd.conf

/var/lib/dhcpd/dhcpd.leases为dhcp服务器和客户端租约建立的启动和到期时间的记录文件。

# cat /etc/dhcpd.conf

ddns-update-style none;                        #设置不要更新DDNS的设置

subnet 192.168.23.0 netmask 255.255.255.0 {    #定义网段IP范围,须在本机所处网段范围内,{}内的信息表示此网段的配置信息

# --- default gateway                    

option routers 192.168.23.1;            #设置客户端默认网关

option subnet-mask 255.255.255.0;        #设置客户端子网掩码

option domain-name "domain.org";          #设置域名

option domain-name-servers 192.168.23.128;        #设置网络内部DNS服务器的IP地址

option time-offset -18000; # Eastern Standard Time

range dynamic-bootp 192.168.23.129 192.168.23.254;    #定义DHCP地址池的服务范围,需排除静态地址

default-lease-time 21600;                   #设置默认租约时间

max-lease-time 43200;                       #设置最大租约时间

host ns {                                          #设置静态IP地址,用于网络内固定服务器IP,不要置于定义好的DHCP地址池范围内,否则会引起IP冲突。

hardware ethernet 00:0C:29:00:5B:78;            #设置静态主机的mac地址,与IP进行绑定

fixed-address 192.168.23.128;

}

}

配置/etc/dhcpd.conf

#为注释,除括号一行外,每行都应以;结尾,

设置的项目都具有独特的名称。形式为<参数代号><设置内容>,如default-time 20000

某些项目必须利用option设置,形式为option<参数代码><设置内容>

DHCP的ip分为静态ip和动态ip,如果设置静态ip需要知道要设置主机的MAC地址,#ping 目标主机ip,#arp –n查看。

parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户

Defaults-lease-time:默认租约时间,默认单位为秒

Max-lease-time:最大租约时间,客户端超过租约但尚未更新IP时,最长可以使用该IP的时间

ddns-update-style 配置DHCP-DNS 互动更新模式

default-lease-time 指定确省租赁时间的长度,单位是秒

hardware 指定网卡接口类型和MAC地址

server-name 通知DHCP客户服务器名称

get-lease-hostnames flag 检查客户端使用的IP地址

fixed-address ip 分配给客户端一个固定的地址

authritative 拒绝不正确的IP地址的要求

option(选项):用来配置DHCP可选参数,全部用option关键字作为开始

option routers:为客户端设定默认网关

option subnet-mask:为客户端设定子网掩码

option domain-name:为客户端指明DNS名字

option domain-name-servers:为客户端指明DNS服务器IP地址

option time-offset:为客户端设定和格林威治时间的偏移时间,单位是秒

option ntp-server:为客户端设定网络时间服务器IP地址

option host-name 为客户端指定主机名称。若客户端使用windows,不要选择host-name,即不要为其指定主机名称。

option broadcast-address 为客户端设定广播地址

declarations (声明):描述网络布局、提供客户的IP地址等

shared-network:告知是否一些子网络分享相同网络

subnet:描述一个IP地址是否属于该子网

range:起始IP 终止IP 提供动态分配IP 的范围

host:主机名称参考特别的主机

group:为一组参数提供声明

allow unknown-clients/deny unknown-client:是否动态分配IP给未知的使用者

allow bootp/deny bootp:是否响应激活查询

allow booting/deny booting:是否响应使用者查询

filename:开始启动文件的名称,应用于无盘工作站

next-server:设置服务器从引导文件中装如主机名,应用于无盘工作站。

配置文件修改完成后,#/usr/sbin/dhcpd即可运行dhcpd服务,如有错误则会将错误信息显示在屏幕上。可以通过netstat –unlt|grep 67查看dhcp的信息。也可以通过查看/var/log.messages查看dhcp的日志信息

DHCP客户端

  1. 配置网卡设置dhcp方式获取IP地址。
  2. 然后重启网卡获取IP地址,在服务器端可以查看/var/log/messages日志信息查看客户端是否在向DHCP客户端申请IP地址,可以查看/var/db/dhcp.leases查看租约申请记录。
  3. #/var/log/messages服务器端日志查看dhcp客户端申请IP地址的过程

Oct 5 21:50:39 master dhcpd: DHCPDISCOVER from 00:0c:29:54:6b:77 via eth0

Oct 5 21:50:39 master dhcpd: DHCPOFFER on 192.168.23.132 to 00:0c:29:54:6b:77 (win2003) via eth0

Oct 5 21:50:39 master dhcpd: DHCPREQUEST for 192.168.23.132 (192.168.23.254) from 00:0c:29:54:6b:77 (win2003) via eth0

Oct 5 21:50:39 master dhcpd: DHCPACK on 192.168.23.132 to 00:0c:29:54:6b:77 (win2003) via eth0

dhcpd.leases:

# cat /var/db/dhcpd.leases        #dhcp服务器和客户端租约建立的启动和到期时间的记录文件,仅在客户端申请IP地址之后才会有:

………………………………………………

lease 192.168.23.129 {                        #linux客户端申请IP地址

starts 2 2010/10/05 13:24:26;                # lease 开始租约时间

ends 2 2010/10/05 19:24:26;                # lease 结束租约时间

cltt 2 2010/10/05 13:24:26;

binding state active;

next binding state free;

hardware ethernet 00:0c:29:3e:1b:f2;        #客户机网卡MAC地址

}

server-duid "\000\001\000\001\024=\257w\000\014)\000[x";

lease 192.168.23.132 {                        #windows客户端申请ip地址

starts 2 2010/10/05 13:50:39;

ends 2 2010/10/05 19:50:39;

cltt 2 2010/10/05 13:50:39;

binding state active;

next binding state free;

hardware ethernet 00:0c:29:54:6b:77;

uid "\001\000\014)Tkw";                    #用来验证客户机的UID标示

client-hostname "win2003";                #客户机名称

}

注意:lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间

Dhcp客户端重新获取IP地址:#dhclient eth0

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值