dhcpd.leases是DHCP客户租约的数据库文件,默认目录在/var/state/dhcp/,文件包含租约声明,每次一个租约被获取、更新或释放,它的新值就被记录到文件的的末尾。在DHCPd第一次安装后,并不会生成这个文件。但DHCPd的运行需要这个文件,所以可以建立一个空的文件。
#touch/var/state/dhcp/dhcpd.leases
DHCPd记录这个文件的格式是
leaseip-address{statements...}
每个记录包含一个提供给客户的IP地址,在花括号里的语句包含一些租约信息。具体的租约信息因客户发出不同的DHCP请求而稍有差别。
4.运行DHCPd
要启动DHCPd,简单地键入/usr/sbin/dhcpd或用ntsysv把DHCPd服务自动启动,也可以用
/etc/rc.d/init.d/dhcpdstart,
这样启动后,DHCPd是启动在eth0上,如果DHCPd上的服务器还有另外一块网卡eth1,想在eth1上启动
dhcpd,就键入
#/usr/sbin/dhcpdeth1
以上述例子的dhcpd.conf来启动dhcpd,如果我们启动一Windows95机器,Windows95的网络配置的TCP/IP选项里指定自动获得IP地址,也就是启用Windows95里的DHCP客户程序,这台95机器的主机名叫ONE,进入系统后,用winipcfg查看.
在Windows95机器获得租约后,DHCPd会在dhcp.leases里建一条记录
lease192.168.1.154{
starts12000/05/1513:36:42;
ends12000/05/1521:36:42;
hardwareethernet00:00:21:4e:3f:58;
uid01:00:00:21:4e:3f:58;
client-hostname"one";
}
要注意的是dhcpd.leases的时间记录采用GMT时间,而不是本地时区的时间。要查看本机的GMT时间可以用
date-u
5.进一步说明dhcpd.conf
5.1dhcpd.conf概述
前面说过,dhcpd.conf是个递归下降格式的配置文件,有点象C的源程序风格,由参数和声明两大类语句构
成,参数类语句主要告诉DHCPd网络参数,如租约的时间、网关、DNS等,而声明语句则是描述网络的拓扑,
用来表明网络上的客户、要提供给客户的IP地址、提供一个参数组给一组声明等。
描述网络拓扑的声明语句有shared-network和subnet声明。.如果要给一个子网里的客户动态指定IP地
址,那么在subnet声明里必须有一个range声明,说明地址范围。如果要给DHCP客户静态指定IP地址,那么
每个这样客户都要有一个host声明。对于每个要提供服务的与DHCP服务器连接的子网,都要有一个subnet
声明,即使这是个没有IP地址要动态分配的子网。
一个典型的dhcpd.conf如下
#example
#全局参数
shared-network共享网络名{
共享网络特定参数...
subnet204.254.239.0netmask255.255.255.224{
子网特定参数...
range204.254.239.10204.254.239.30;
}
subnet204.254.239.32netmask255.255.255.224{
子网特定参数...
range204.254.239.42204.254.239.62;
}
}
subnet204.254.239.64netmask255.255.255.224{
子网特定参数...
range204.254.239.74204.254.239.94;
}
group{
组特定参数...
hostws1.domain{
特定主机参数...
}
hostws2.domain{
特定主机参数...
}
hostws3.domain{
特定主机参数...
}
}
5.2语句参考
因为DHCPd的语句很多,不可能一一列出,这里给出最常用和最重要的语句。
声明类语句
share-network语句
shared-networkname{
[参数]
[声明]
}
share-network用于告诉DHCP服务器某些IP子网其实是共享同一个物理网络。任何一个在共享物理网络里的子网都必须声明在share-network语句里。当属于其子网里的客户启动时,将获得在share-network语句里指定参数,除非这些参数被subnet或host里的参数覆盖。用share-network是一种权宜之计,例如某公司用B类网络145.252,公司里的部门A被划在子网145.252.1.0里,子网掩码为255.255.255.0,这里子网号为8个bit,主机号也为8个bit,但如果部门A急速增长,超过了254个节点,而物理网络还来不及增加,就要在原来这个物理网络上跑两个8bit掩码的子网,而这两个子网其实是在同一个物理网络上,
share-network语句可以如下
shared-networkshare1{
subnet145.252.1.0netmask255.255.255.0{
range145.252.1.10145.252.1.253;
}
subnet145.252.2.0netmask255.255.255.0{
range145.252.2.10145.252.1.253;
}
这里的share1是个共享网络名。
subnet语句:
subnetsubnet-numbernetmasknetmask{
[参数]
[声明]
}
subnet语句用于提供足够的信息来阐明一个IP地址是否属于该子网。也可以提供指定的子网参数和指明那些属于该子网的IP地址可以动态分配给客户,这些IP地址必须在range声明里指定。subnet-number可以是个IP地址或能被解析到这个子网的子网号的域名。netmask可以是个IP地址或能被解析到这个子网的掩码的域名。
range语句:
range[dynamic-bootp]low-address[high-address];
对于任何一个有动态分配IP地址的subnet语句里,至少要有一个range语句,用来指明要分配的IP地址的范围。如果只指定一个要分配的IP地址,高地址部分可以省略。
host语句:
hosthostname{
[参数]
[声明]
}
host语句的作用是为特定的客户机提供网络信息。
group语句
group{
[参数]
[声明]
}
组语句给一组声明提供参数。
allow和deny语句
allow和deny语句用来控制DHCPd对客户的请求。
unknown-clients关键字
allowunknown-clients;
denyunknown-clients;
allowunknown-clients允许DHCPd可以动态分配IP给未知的客户,而denyunknown-clients则不允许。
缺省是允许的。
bootp关键字
allowbootp;
denybootp;
指明DHCPd是否响应bootp查询,默认是允许的。
参数类语句
default-lease-time语句
语法
default-lease-timetime;
指定缺省租约时间,这里的time是以秒为单位的。如果DHCP客户在请求一个租约但没有指定租约的失效时间,租约时间就是缺省租约时间。
max-lease-time语句
语法
max-lease-timetime;
最大的租约时间。如果DHCP在请求租约时间时有发出特定的租约失效时间的请求,则用最大租约时间。
hardware语句
语法
hardwarehardware-typehardware-address;
指明物理硬件接口类型和硬件地址。硬件地址由6个8位组构成,每个8位组以“:”隔开。如00:00:E8:1B:54:97
例如:hard
server-name语句
server-name"name";
用于告诉客户服务器的名字。
fixed-address语句
fixed-addressaddress[,address...];
fixed-address语句用于指定一个或多个IP地址给一个DHCP客户。只能出现在host声明里。
选项类语句
选项类语句以option开头,后面跟一个选项名,选项名后是选项数据,选项非常的多,这里列出一些常用的选项供参考
optionroutersip-address[,ip-address];
指明在客户子网内的路由器的地址,可以有多个;
optiontime-serversip-address[,ip-address...];
指明时间服务器的地址。
optiondomain-name-serversip-address[,ip-address...];
指明DNS的地址
optionhost-anmestring;
给客户指定主机名,string是个字符串。
optiondomain-namestring;
指明域名
optioninterface-mtumtu;
指明网络界面的MTU,这里mtu是个正整数
例optioninterface-mtu1500;
optionbroadcast-addressip-address;
指定广播地址
六、总结
以上就是DHCPd常用配置,实际应用DHCP还要考虑IP分配的一些策略问题,同时要保证网络的健壮性,必须至少要有两台DHCP服务器一起工作,如果一台出了故障,另一台可以继续为