资源描述
DHCP服务器
DHCP协议
DHCP是Dynamic Host Configuration Protocol(动态主机配置协议)的简称,DHCP服务器使用该协议向网络上的客户端提供相应的TCP/IP配置信息,包括IP地址、子网掩码、默认网关和DNS服务器地址等。
使用DHCP服务器管理TCP/IP配置的优点如下:
(1)可以集中管理网络中的TCP/IP配置,从而减少管理员的工作量;
(2)DHCP服务器不会把同一个IP地址分配给不同的客户机,因此可以减少由于TCP/IP配置错误而引起的网络地址冲突。
从DHCP服务器自动获得地址的客户机在初始化网络配置时,会向DHCP服务器发起申请IP地址的请求,服务接到请求后,会为客户机分配一个IP地址以及设置其他的TCP/IP配置信息。
DHCP提供两种分配IP地址的方式,即自动分配和动态分配。
(1)自动分配(automatic allocation):一旦DHCP客户机第一次成功地从DHCP服务器租用到IP地址,就永远使用这个地址。
(2)动态分配(dynamic allocation):当DHCP客户机第一次从DHCP服务器租用到IP地址后,并非永久使用该地址,而是在租约到期时释放这个IP地址,以便其他客户机使用。当然,此客户机可以比其他客户机优先更新租约,或是租用其他的IP地址。
除了能动态分配IP地址之外,还可以将一些IP保留下来给一些特殊用途的机器使用,可以按照硬件地址(MAC地址)来固定地分配IP地址,这样可以具有更大的设计空间。
在进行TCP/IP初始化配置时,DHCP客户机首先检查本地的租约文件,以查看原来获取的IP地址,如果本地的租约文件中没有相关条目,则会申请新的IP地址。生成新的IP地址租约的过程分为如下4个步骤:
(1)申请租用IP地址。DHCP客户机向网络发出一个DHCPDISCOVER数据包。因为客户机还不知道自己属于哪一个网络,所以数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255,然后再附上DHCPDISCOVER的信息,向网络进行广播。广播包使用UDP端口67和68发送,并且在广播包中把客户机的MAC地址和主机名等信息一同提交给DHCP服务器。
(2)提供IP地址租约。由于客户机以广播的形式发送地址租用申请,网络上的所有DHCP服务器都会给该客户机提供IP地址。当DHCP服务器监听到客户端发出的DHCP DISCOVE广播后,它会从那些还没有租出的地址内,选择最前面的空置IP地址,连同子网掩码、其他的TCP/IP参数和租约长度等信息,按照客户机的MAC地址发送给客户端一个DHCPOFFER数据包。
(3)选择IP地址租约。由于可能会有多个DHCP服务器为单个客户机提供IP地址租约,客户机选择其中一个DHCPOFFER(通常是最先到达的)而拒绝其他的DHCPOFFER,并且会向所选择的DHCP服务器发送DHCPREQUEST信息,表示已获得该服务器提供的租约。同时,客户机还会向网络发送一个ARP数据包,查询网络上有没有其他机器使用该IP地址,如果发现该IP地址已经被占用,则客户机会发送一个DHCPDECLINE数据包给DHCP服务器,拒绝接受其DHCP OFFER,并重新发送DHCPDISCOVER信息。
(4)确认IP地址租约。DHCP服务器收到来自客户机的租约选择请求(DHCPREQUEST)后,如果没有例外,将向客户机发送确认信息,这样客户机就可以利用租约中的信息来配置自己的TCP/IP参数了。
一旦DHCP客户端成功地从服务器那里取得DHCP租约,除非其租约已经失效并且IP地址也重新设定为0.0.0.0,否则就不再发送DHCPDISCOVER信息了,而会直接使用已经租用到的IP地址向原先的DHCP服务器发出DHCPREQUEST信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,DHCP服务器会直接发送DHCPACK来确认。如果该地址已经失效或已经被其他机器使用了,服务器则会发送一个 DHCPNACK数据包包给客户机,要求其重新发送DHCPDISCOVER信息。
从某个DHCP服务器获取IP地址的客户机在租约到期之前就会更新原有的租约,以保证IP地址使用的连续性。具体步骤如下:
(1)租约时间过去50%的时候,客户机向原来使用的DHCP服务器发出租约更新请求,要求续租原来使用的IP地址。这个步骤与上面生成的租约的过程的第三步类似。
(2)DHCP服务器响应客户机的请求,对租约进行刷新。
如果租约时间过去50%的时候更新租约成功,就会开始一个新的租约周期;如果更新失败,客户机继续使用原有地址。租约到期以后,DHCP客户机会立即释放原来租用的IP地址,同时发送DHCPDISCOVER信息,申请一个新的IP地址租约。
配置DHCP服务器
客户机有两种获取IP地址的方法,分别是从DHCP服务器自动获取和静态配置。作为DHCP服务器的计算机必须使用静态IP地址。另外,在配置DHCP服务器之前,应该提前规划DHCP服务器要分配的IP地址的范围以及各种选项。
与DHCP服务器有关的软件包如下:
– dhcp-*:DHCP服务器软件包。
– dhclient-*:DHCP客户机软件包。
– dhcp-devel-*:DHCP开发工具。
配置之前,先确认DHCP服务是否已经安装,可以使用如下命令查看:
rpm -qa | grep dhcp
若没有看到任何信息,说明没有安装DHCP服务,可以从光盘安装。把第二张光盘放入光驱,使用如下命令挂载光盘:
mount –t iso9660 /dev/cdrom /mnt/cdrom
光盘挂载完成后,到光盘里查找DHCP软件包所在的位置,命令如下:
find /mnt/cdrom -name "dhcp * “
显示结果如下:
/mnt/cdrom/RedHat/RPMS/dhcp-3.0pl1-23.i386.rpm
/mnt/cdrom/RedHat/RPMS/dhcp-devel-3.0pl1-23.i386.rpm (此软件包即是所需软件包)
找到位置后,就可以用rpm命令进行安装了。
rpm -ivh /mnt/cdrom/RedHat/RPMS/dhcp-3.0pl1-23.i386.rpm
看到如下信息,说明安装成功了。
warning: dhcp-3.0pl1-23.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
最后卸载光盘,命令如下:
umount /mnt/cdrom
6.2.1 DHCP服务器配置文件
DHCP服务器通过读取配置文件/etc/dhcpd.conf中的信息来提供服务,所以,配置DHCP服务器的过程主要是配置/etc/dhcpd.conf文件。
首次在Red Hat Linux 9中配置DHCP服务器时,默认情况下dhcp.conf文件是不存在的,用户可以手动建立该文件。为了方便操作,可以复制模板文件dhcpd.conf.sample到dhcpd.conf文件。其命令如下:
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
如果此模板文件没有存放在默认的位置,用户可以使用如下命令找到模板的位置:
rpm –ql dhcp
下面的代码就是dhcpd.conf文件的一个示例,为了方便读者理解,并对该文件逐行注释:
ddns-update-style interim;
//使用过渡行(interim)动态更新DNS模式
ignore client-updates;
//忽略客户机更新
subnet 192.168.5.0 netmask 255.255.255.0 {
//声明子网地址以及子网掩码
option routers 192.168.5.1;
//为DHCP客户机提供默认网关
option subnet-mask 255.255.255.0;
//为DHCP客户机提供子网掩码
option domain-name "";
//为DHCP客户机提供DNS域名
option domain-name-servers 192.168.5.2;
//为DHCP客户机提供DNS域名服务器
range dynamic-bootp 192.168.5.100 192.168.5.200;
//声明DHCP服务器的地址范围
default-lease-time 21600;
//设置DHCP客户机默认的租约长度(单位是秒)
max-lease-time 43200;
//设置DHCP客户机可以申请的最大租约长度(单位是秒)
host ns {
//保留地址声明
hardware ethernet 00:0C:29:CC:1C:EF;
//DHCP客户机的MAC地址
fixed-address 192.168.5.101;
//分配给拥有上面MAC地址的主机的IP地址
}
}
也可以通过如下命令查看更多dhcpd.conf文件的配置选项:
man dhcpd.conf
6.2.2 启动和测试DHCP服务器
1.启动DHCP服务
完成对/etc/dhcpd.conf文件的配置后,运行以下命令启动DHCP服务器:
service dhcpd start
对于已经启动的DHCP服务器,如果修改了dhcpd.conf文件,可以使用下面的命令让服务器读取新的配置:
service dhcpd reload
2.测试DHCP服务
当DHCP服务器为某个客户机提供地址租约后,会在/var/lib/dhcp/dhcp.leases文件中保存该租约的信息。当DHCP服务器因为意外故障终止时,重新启动后会读取该租约文件,从而避免原租约内容的丢失,以保证服务的连续性。
服务器的管理员通过查看租约文件,可以了解到哪些客户机从DHCP服务器上获取了IP地址,哪些IP地址已经被分配了等信息,从而能掌握网络中IP地址的分配情况。
DHCP客户端配置
DHCP客户机的配置非常简单。因为客户机通过广播寻找DHCP服务器,所以无须为客户机指定DHCP服务器的地址,只需要将客户机设置为自动获得IP地址即可。
(1)对于Windows系统的客户机,可以通过TCP/IP属性对话框进行配置,如图所示。
(2)对于Linux系统的客户机,可以直接修改网络接口的配置文件。使用vi编辑器打开ifcfg-eth0文件,命令如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
将文件中的“BOOTPROTO”设置为“dhcp”即可。
在Linux系统的图形界面环境中,选择“主菜单”→“系统设置”→“网络”命令,打开网络配置工具。选择要配置的网络接口,单击工具栏上的“编辑”按钮,在打开的“以太网设备”对话框中选中“自动获取IP地址设置使用:”单选按钮,并在后面的下拉列表中选择“dhcp”选项,在“DHCP设置” 选项组中选中“自动从提供商处获取DNS信息”复选框,单击“确定”按钮即可。
展开阅读全文