本文主要介绍基于FreeBSD系统的DHCP服务的配置及使用。
一、简要认识DHCP
DHCP是DynamicHostConfigurationProtocol(动态主机配置协议)的简称。它主要用于对多个客户计算机集中分配IP地址以及IP地址相关的信息,常用在网络中对众多DOS/Windows计算机的管理方面,节省了网络管理员手工设置和分配地址的麻烦。
任何事物有利也有弊,DHCP同样存在缺点。例如一台DHCP客户计算机没有一个固定的IP地址,而对于提供网络服务的服务器来讲,经常变化的IP地址并不适合。并且当前的DNS协议并不能和DHCP协作,为DHCP客户直接提供主机名解析任务。
二、配置过程
在FreeBSD的PackagesCollection中,有两个不同的DHCP客户机和服务器软件,一个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件,其中ISC-DHCP更为常用一些,以下就以ISC-DHCP为例介绍在FreeBSD上安装和设置DHCP。
同时,要使FreeBSD系统支持DHCP,还得确认系统内核是否支持伪设备bpfilter,它是一个允许应用程序接收网络的原始数据包的界面,这样应用程序就能接收目的地址非本机IP地址的数据包了。
那么DHCP为什么要bpfilter支持呢?因为在DHCP设置好计算机的TCP/IP之前,由于计算机本身没有定义IP地址,而TCP/IP堆栈本身不会接收不具备本机IP地址的数据包。要接收DHCP服务器发送回客户的数据包,就需要绕过TCP/IP堆栈,而必须使用伪设备bpfilter。
第一步:定制bpfilter内核。
第二步:保证/dev/目录下具有对应bpfilter的设备文件。
第三步:从PackagesCollecion包中将DHCP所需文件dhcpd、dhclient、和dhcprelay安装到/usr/local/sbin目录下。
第四步:按下图设置其配置文件/etc/dhcpd.conf。
解释:
“server-identifier192.168.3.1”为本机服务器IP地址。一般不必设置这个参数,dhcpd能自动侦测。
“Subnet”字段项设定了一个子网段。即可供DHCP服务器分配的IP地址范围为192.168.3.10到192.168.3.20,这个地址范围也可以不是连续的,不连续的地址可以使用多个range设置参数来设置。此外,还设置了这一组内分配的IP地址的租期限制default-lease-time和max-lease-time,使用其缺省值600和7200即可。后面的option参数设置是DHCP的附加功能,例如本例中设置DHCP客户的子网掩码为255.255.255.0、广播地址为192.168.3.1、DNS服务器地址为192.168.3.1、域名为exampleorg.org.cn。
“hosta1”字段项针对某个特定主机a1进行的设置。这个主机被绑定为所使用网卡的MAC地址的计算机,将给其分配一个固定地址。这种分配方式实际等价于固定地址分配方式,唯一的好处就是能够对IP地址进行集中管理,不必每个计算机分别设置了。这里同样也可以使用option参数,设置上一字段所述的子网掩码等参数。
第五步:当配置了dhcpd.conf文件后,就能启动dhcpd守护进程了。由于计算机会有多个网络界面,故需要指定dhcpd服务器的网络界面,以便回应相应界面上的DHCP请求。
第六步:此后,dhcpd正常运行的时候,会将每一次客户请求及其回应的IP地址分配的记录,都记录在/var/run/dhcpd.leases文件中。为了使dhcpd能正常进行日志记录,还应该在启动dhcpd之前使用touch命令,生成一个新的日志文件。以便日后查看这个日志文件的内容,得到当前DHCP服务器的状态和客户机IP地址分配的情况。日志文件示例:
后记:
经过以上配置后,就能设置网络中的客户机使用FreeBSD系统的DHCP协议来获取合法的IP地址了。通常Windows计算机的TCP/IP设置中能直接设置支持DHCP协议,而如果客户机系统为Linux等(包括FreeBSD)时,就需要dhclient的支持,本文就不一一详述了。有兴趣的朋友请参阅客户机为Linux等系统的DHCP配置的相关资料进行。