查看linux下dhcp服务器分配出去的IP地址及剩余IP地址.docx
《查看linux下dhcp服务器分配出去的IP地址及剩余IP地址.docx》由会员分享,可在线阅读,更多相关《查看linux下dhcp服务器分配出去的IP地址及剩余IP地址.docx(15页珍藏版)》请在冰点文库上搜索。
查看linux下dhcp服务器分配出去的IP地址及剩余IP地址
怎样查看linux下dhcp服务器分配出去的IP地址及剩余IP地址
1。
你可以查看防火墙信息,如图,可以清晰的看到,192.1681.200的IP给了哪个MAC地址
2./var/lib/dhcpd/dhcpd.leases这个文件专门记录了DHCP的分配情况
一、介绍
由于ISCDHCP没有提供相应的统计工具,所以只能自己动手写一个。
上也有很多,例如
QUOTE:
phpDHCPhostslist:
一个php脚本,用于列出一个DHCP服务器上的host信息
rogueDetect:
发送一个“诱骗”作用的DHCPDISCOVER,并等待非权威的DHCP服务器消息,以找出未授权的DHCP服务器
phpDHCPAdmin:
一个基于web界面的管理DHCP工具。
有认证、错误检查、数据库驱动,简单易用
AnalyzesofbehaviorofprotocolDHCP:
dhcpmap能够“注入”和捕捉DHCP流量
dhcpphp:
一个PHP脚本,用于显示一个DHCP服务器的leases记录
webDHCP:
类似phpDHCPAdmin的工具
DHCPleaseparser:
是一个简单的守护进程,它把DHCP服务器的leases状态的变化记录到一个数据库,以便历史查询。
同时该工具还提供了一个历史记录以供查询
LanloardDHCPleasetracker:
一个CGI程序,用于跟踪DHCPleases
ISCDHCPdhcpd.confparserandeditor:
以一个友好的界面方便你编辑dhcpd.conf
DHCPdetector:
用于检测网络上的DHCP服务,主要是为了找出rogueDHCP
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.进行查询。
(v1.1)
7、每月15日的0点10分自动把lease记录以lease.record.备份,所以意味着默认只能查15天内的数据(v1.1)
二、限制
目前暂时不考虑DHCPFailover以及DHCPOmshell的分析(这两个东西都会在dhcpd.leases中写数据)。
该脚本只记录客户机的mac、客户机的主机名(如果有的话)以及lease的开始/结束时间/状态。
由于环境所限,只有1台客户机可供测试,所以欢迎各位朋友多多指正
三、脚本组成
a)lease_wath.sh,主要是跟踪/var/lib/dhcp/dhcpd.leases文件的输出,并固定输出到某个文件(默认是/tmp/lease.record)。
每次只能启动一个lease_watch.sh,否则程序会报错(Error!
Anotherlease_watchisrunning!
)
b)parse.sh:
完成上述的功能的第1~6项。
c)rotate.sh:
每月15日的0点10分自动把当前的/tmp/lease.record备份为/tmp/lease.record.,同时重启lease_watch。
四、屏幕截图
按ip选择:
按mac选择:
按hostname选择:
指定某个历史文件进行查询
列出所有曾经被租用的ip以及其状态:
语法:
========================
从dhcpd.lease中提取MAC和IP地址.2008-01-1022:
17:
26
从DHCP的log中提取MAC和IP地址.
/var/lib/dhcpd/dhcp.lease中的一段记录如下:
lease192.168.1.238{
starts02007/11/2511:
57:
41;
ends02007/11/2517:
57:
41;
tstp02007/11/2517:
57:
41;
bindingstatefree;
hardwareethernet00:
0c:
29:
ac:
4e:
01;
uid"\377eth0\000\001\000\001\016\354\015J\000\014)\254N\001";
}
#catdhcpd.leases|egrep'lease|hardware'|sed's/lease//g'|sed's/{//g'|sed's/hardwareethernet//g
网友给的办法.测试了一下.重复的较多.主要是出现了.同一个MAC多次获取不同的IP地址的情况
在CU上找到更好的命令[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个字段.
这样出来的结果基本符合我们的要求.
Allso
}192.168.1.25000:
0c:
29:
ac:
4e:
01;
}192.168.1.23800:
0c:
29:
ac:
4e:
01;
}192.168.1.24100:
0c:
29:
ac:
4e:
01;
}192.168.1.24600:
0c:
29:
ac:
4e:
01;
}192.168.1.24800:
0c:
29:
ac:
4e:
01;
}192.168.1.25100:
0c:
29:
05:
ac:
8a;
}192.168.1.25300:
0c:
29:
c2:
b3:
44;
}192.168.1.24700:
0a:
eb:
f3:
39:
dd;
}192.168.1.25400:
0c:
29:
c2:
b3:
44;
}192.168.1.24900:
0c:
29:
a8:
c7:
0a;
}192.168.1.24500:
0c:
29:
79:
e2:
aa;
}192.168.1.24400:
0c:
29:
79:
e2:
aa;
}192.168.1.24300:
0c:
29:
9d:
e8:
d8;
}192.168.1.24000:
0c:
29:
a8:
59:
21;
}192.168.1.24200:
0c:
29:
9d:
e8:
d8;
}192.168.1.23900:
16:
d3:
b6:
1b:
d2;
}
缺点就是第一行多了Allso每一行多了},也就是说我们要把这个结果再处理一下.
去掉第一行和最后一行,并把它排序.
改进一下命令,由于dhcpd.lease前面7行都是注释的内容,我们跳过这些行
tail-n+8dhcpd.lease
从第8行开始显示dhcpd.lease文件
#tail-n+8dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print$2,$21,"\n"}'
192.168.1.25200:
0c:
29:
ac:
4e:
01;
}192.168.1.25000:
0c:
29:
ac:
4e:
01;
}192.168.1.23800:
0c:
29:
ac:
4e:
01;
}192.168.1.24100:
0c:
29:
ac:
4e:
01;
}192.168.1.24600:
0c:
29:
ac:
4e:
01;
}192.168.1.24800:
0c:
29:
ac:
4e:
01;
}192.168.1.25100:
0c:
29:
05:
ac:
8a;
}192.168.1.25300:
0c:
29:
c2:
b3:
44;
}192.168.1.24700:
0a:
eb:
f3:
39:
dd;
}192.168.1.25400:
0c:
29:
c2:
b3:
44;
}192.168.1.24900:
0c:
29:
a8:
c7:
0a;
}192.168.1.24500:
0c:
29:
79:
e2:
aa;
}192.168.1.24400:
0c:
29:
79:
e2:
aa;
}192.168.1.24300:
0c:
29:
9d:
e8:
d8;
}192.168.1.24000:
0c:
29:
a8:
59:
21;
}192.168.1.24200:
0c:
29:
9d:
e8:
d8;
}192.168.1.23900:
16:
d3:
b6:
1b:
d2;
}
现在还有该死的},我们用sed命令把它替换掉.
sed's/}//g'
替换所有的}为空
#tail-n+8dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print$2,$21,"\n"}'|sed's/}//g'
192.168.1.25200:
0c:
29:
ac:
4e:
01;
192.168.1.25000:
0c:
29:
ac:
4e:
01;
192.168.1.23800:
0c:
29:
ac:
4e:
01;
192.168.1.24100:
0c:
29:
ac:
4e:
01;
192.168.1.24600:
0c:
29:
ac:
4e:
01;
192.168.1.24800:
0c:
29:
ac:
4e:
01;
192.168.1.25100:
0c:
29:
05:
ac:
8a;
192.168.1.25300:
0c:
29:
c2:
b3:
44;
192.168.1.24700:
0a:
eb:
f3:
39:
dd;
192.168.1.25400:
0c:
29:
c2:
b3:
44;
192.168.1.24900:
0c:
29:
a8:
c7:
0a;
192.168.1.24500:
0c:
29:
79:
e2:
aa;
192.168.1.24400:
0c:
29:
79:
e2:
aa;
192.168.1.24300:
0c:
29:
9d:
e8:
d8;
192.168.1.24000:
0c:
29:
a8:
59:
21;
192.168.1.24200:
0c:
29:
9d:
e8:
d8;
192.168.1.23900:
16:
d3:
b6:
1b:
d2;
我们再把结果排序一下,让它看上去舒服一些.
#tail-n+8dhcpd.leases|less|awk'BEGIN{RS=ORS="}"}{print$2,$21,"\n"}'|sed's/}//g'|sort-n
192.168.1.23800:
0c:
29:
ac:
4e:
01;
192.168.1.23900:
16:
d3:
b6:
1b:
d2;
192.168.1.24000:
0c:
29:
a8:
59:
21;
192.168.1.24100:
0c:
29:
ac:
4e:
01;
192.168.1.24200:
0c:
29:
9d:
e8:
d8;
192.168.1.24300:
0c:
29:
9d:
e8:
d8;
192.168.1.24400:
0c:
29:
79:
e2:
aa;
192.168.1.24500:
0c:
29:
79:
e2:
aa;
192.168.1.24600:
0c:
29:
ac:
4e:
01;
192.168.1.24700:
0a:
eb:
f3:
39:
dd;
192.168.1.24800:
0c:
29:
ac:
4e:
01;
192.168.1.24900:
0c:
29:
a8:
c7:
0a;
192.168.1.25000:
0c:
29:
ac:
4e:
01;
192.168.1.25100:
0c:
29:
05:
ac:
8a;
192.168.1.25200:
0c:
29:
ac:
4e:
01;
192.168.1.25300:
0c:
29:
c2:
b3:
44;
192.168.1.25400:
0c:
29:
c2:
b3:
44;
如果只是单纯要IP或者MAC
列出IP
catdhcpd.leases|grep-o'\<[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\>'
列出MAC
catdhcpd.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\}\>'
本文出自“风吹云动”博客,请务必保留此出处
1.DHCP配置文件中的parameters(参数):
表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。
主要内容见表1
参数
解释
ddns-update-style
配置DHCP-DNS互动更新模式。
default-lease-time
指定确省租赁时间的长度,单位是秒。
max-lease-time
指定最大租赁时间长度,单位是秒。
hardware
指定网卡接口类型和MAC地址。
server-name
通知DHCP客户服务器名称。
get-lease-hostnamesflag
检查客户端使用的IP地址。
fixed-addressip
分配给客户端一个固定的地址。
authritative
拒绝不正确的IP地址的要求。
2.DHCP配置文件中的declarations(声明):
用来描述网络布局、提供客户的IP地址等。
主要内容见表2:
声明
解释
shared-network
用来告知是否一些子网络分享相同网络。
subnet
描述一个IP地址是否属于该子网。
range起始IP终止IP
提供动态分配IP的范围。
host主机名称
参考特别的主机。
group
为一组参数提供声明。
allowunknown-clients﹔denyunknown-client
是否动态分配IP给未知的使用者。
allowbootp;denybootp
是否响应激活查询。
allowbooting﹔denybooting
是否响应使用者查询。
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地址。
time-offset
为客户端设定和格林威治时间的偏移时间,单位是秒。
++++++++++++++++++++
rpm-qa |grepdhcpd#查看主机是否安装dhcp包
#cp/usr/share/doc/dhcp*/dhcpd.conf.sample/etc/dhcpd.conf
/var/lib/dhcpd/dhcpd.leases为dhcp服务器和客户端租约建立的启动和到期时间的记录文件。
#cat/etc/dhcpd.conf
ddns-update-stylenone;#设置不要更新DDNS的设置
subnet192.168.23.0netmask255.255.255.0{#定义网段IP范围,须在本机所处网段范围内,{}内的信息表示此网段的配置信息
#---defaultgateway
optionrouters192.168.23.1; #设置客户端默认网关
optionsubnet-mask255.255.255.0;#设置客户端子网掩码
optiondomain-name"domain.org";#设置域名
optiondomain-name-servers192.168.23.128;#设置网络内部DNS服务器的IP地址
optiontime-offset-18000;#EasternStandardTime
rangedynamic-bootp192.168.23.129192.168.23.254;#定义DHCP地址池的服务范围,需排除静态地址
default-lease-time21600;#设置默认租约时间
max-lease-time43200;#设置最大租约时间
hostns{#设置静态IP地址,用于网络内固定服务器IP,不要置于定义好的DHCP地址池范围内,否则会引起IP冲突。
hardwareethernet00:
0C:
29:
00:
5B:
78;#设置静态主机的mac地址,与IP进行绑定
fixed-address192.168.23.128;
}
}
配置/etc/dhcpd.conf
#为注释,除括号一行外,每行都应以;结尾,
设置的项目都具有独特的名称。
形式为<参数代号><设置内容>,如default-time20000
某些项目必须利用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-hostnamesflag检查客户端使用的IP地址
fixed-addressip分配给客户端一个固定的地址
authritative拒绝不正确的IP地址的要求
option(选项):
用来配置DHCP可选参数,全部用option关键字作为开始
optionrouters:
为客户端设定默认网关
optionsubnet-mask:
为客户端设定子网掩码
optiondomain-name:
为客户端指明DNS名字
optiondomain-name-servers:
为客户端指明DNS服务器IP地址
optiontime-offset:
为客户端设定和格林威治时间的偏移时间,单位是秒
optionntp-server:
为客户端设定网络时间服务器IP地址
optionhost-name为客户端指定主机名称。
若客户端使用windows,不要选择host-name,即不要为其指定主机名称。
optionbroadcast-address为客户端设定广播地址
declarations(声明):
描述网络布局、提供客户的IP地址等
shared-network:
告知是否一些子网络分享相同网络
subnet:
描述一个IP地址是否属于该子网
range:
起始IP终止IP提供动态分配IP的范围
host:
主机名称参考特别的主机
group:
为一组参数提供声明
allowunknown-clients/denyunknown-client:
是否动态分配IP给未知的使用者
allowbootp/denybootp:
是否响应激活查询
allowbooting/denybooting:
是否响应使用者查询
filename:
开始启动文件的名称,应用于无盘工作站
next-server:
设置服务器从引导文件中装如主机名,应用于无盘工作站。
配置文件修改完成后,#/usr/sbin/dhcpd即可运行dhcpd服务,如有错误则会将错误信息显示在屏幕上。
可以通过netstat–unlt|grep67查看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地址的过程
Oct521:
50:
39masterdhcpd:
DHCPDISCOVERfrom00:
0c:
29:
54:
6b:
77viaeth0
Oct521:
50:
39masterdhcpd:
DHCPOFFERon192.168.23.132to00:
0c:
29:
54:
6b:
77(win2003)viaeth0
Oct521:
50:
39masterdhcpd:
DHCPREQUESTfor192.168.23.132(192.168.23.254)from00:
0c:
29:
54:
6b:
77(win2003)viaeth0
Oct521:
50:
39masterdhcpd:
DHCPACKon192.168.23.132to00:
0c:
29:
54:
6b:
77(win2003)viaeth0
dhcpd.leases:
#cat/var/db/dhcpd.leases#dhcp服务器和客户端租约建立的启动和到期时间的记录文件,仅在客户端申请IP地址之后才会有:
………