网络通信 频道

【网管成长历程】IP地址规划DHCP篇

    【IT168 专稿】 DHCP(Dynamic Host Configuration Protocol)服务就是指每台客户机(工作站)都没有自己的固定IP地址,而这个地址是在启动了系统之后,从DHCP服务器上取得的、一个暂时提供给这台机器使用的IP地址。在DHCP服务器上为这些IP地址指定了子网掩码、DNS、网关等信息。在客户机启动时取得这个IP地址,当客户机关闭系统后就自动地退回这个IP地址。

    在客户机比较多的情况下,企业网络一旦出现了什么变化的话,我们只是需要在DHCP服务器上进行一下修改,整个网络就又可以重新使用了,而客户端就仅仅需要重新启动一次,重新获得IP就达到了网络设置的修改。

    网络中的计算机可以通过DHCP服务器自动获取IP地址信息。DHCP服务器维护着一个容纳有许多IP地址的地址池,并根据计算机的请求而出租。如果计算机设置为自动获取IP地址,当它在启动时,将自动向DHCP服务器申请IP地址。DHCP服务器接收到此消息后,就会从IP地址池中选择一个尚未使用的地址分配给该计算机,并且规定了租赁期限。

    当约定的使用期限过半时,计算机需向DHCP服务器申请续租,如获得DHCP服务器同意,计算机将继续持有该IP地址。否则,计算机将在其后再次申请续租。如仍未得到回应,那么在到达租赁期限时,计算机将自动放弃该IP地址,并每隔一段时间后再次向DHCP服务器申请新的租约。当计算机关机后,该IP地址被自动释放,DHCP服务器将其重新放入IP地址池中,等待下一个客户端使用。

    DHCP这种分配IP地址的方式提供了安全、可靠、简便的TCP/IP网络配置,既减轻了网络设置的负担,又有效地防止因键入错误而导致的网络通信故障,并能够有效地避免地址冲突,而且也有助于节约IP地址资源。但是,由于该方式采用客户端/服务器模式,客户端与服务器之间要不时地进行交流,因此在一定程度上降低了网络的整体性能。

    二、配置DHCP服务器

    下面以Red Hat Linux 9来说明建立动态主机配置协议(DHCP)服务器的配置过程。
   在服务器上安装Red Hat Linux 9可以选中安装DHCP服务(图1)或者使用Redhat Linux 9.0自身携带rpm包安装。安装结束后, DHCP 端口监督程序 dhcpd配置文件是/etc目录中的名为dhcpd.conf的文件。

图1(点击看大图)

    1、配置文件说明

    /etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。
DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户;DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等;DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始。

    配置DHCP 服务器的第一步是创建贮存客户网络信息的配置文件。全局选项可以为所有客户声明,可选选项可以为每个客户系统声明。
该配置文件可以使用任何附加的制表符或空行来进行简单格式化。关键字是区分大小写的,起首为井号(#)的行是注释。

    ddns-update-style interim;
    ignore client-updates;
    subnet 192.168.5.0 netmask 255.255.255.0 {
    option routers          192.168.5.254;
    option subnet-mask      255.255.255.0;
    option broadcast-address        192.168.5.255;
    option domain-name-servers      192.168.5.1;
    option domain-name          "www.ghq.com"; 
    option domain-name-servers  192.168.5.1;
    option time-offset      -18000; # Eastern Standard Time
    range dynamic-bootp 192.168.5.10 192.168.5.250;
    default-lease-time 600;
    max-lease-time 7200;
        host ns {
        hardware ethernet 00:A0:78:8E:9E:AA;
       fixed-address 192.168.5.6;
    }
}

    配置简单说明如下:

    目前Linux实现了两种 DNS 更新方案:特殊 DNS 更新模式和过渡性 DHCP-DNS 互动草图更新模式。如果这两种模式被接受为 IETF 标准进程的一部分,就会出现第三个模式:标准 DNS 更新方法。DHCP 服务器必须配置使用这两种当前方案中的一种。版本 3.0b2pl11 以及更早的版本使用特殊模式;不过,这种模式已经过时。要使用推荐的模式,在配置文件的开头添加以下一行: ddns-update-style interim;后面的一行含义是忽略客户端升级的变化。

    在这里我们是采用C类地址192.168.5网段做DHCP服务器,共239个IP地址可以分配的例子。DNS是www.ghq.com对应的ip地址为192.168.5.1,网关为192.168.5.254,子网掩码是255.255.255.0,广播地址为192.168.5.255;它为客户声明一个默认租期、最长租期、以及网络配置值,上例中把 range 192.168.5.10 和 192.168.5.250之间的 IP 地址分配给客户。
host ns 声明表明:网卡的 MAC 地址为 00:A0:78:8E:9E:AA 的系统所分配的 IP 地址将一直是 192.168.5.6。

    2、租期数据库

    在DHCP 服务器上,/var/lib/dhcp/dhcpd.leases 文件中存放着 DHCP 的客户租期数据库。该文件不应该被手工修改。每个新近分配的 IP 地址的 DHCP 租期信息都会自动储存在租期数据库中。该信息 包括租期的长度;IP 地址被分配的对象;租期的开始和终止日期; 以及用来检索租期的网卡的 MAC 地址。

    租期数据库中所用的时间是格林威治标准时间(GMT),不是本地时间。租期数据库不时被重建,因此它不算太大。首先,所有已知的租期会被储存到一个临时的租期数据库中,dhcpd.leases 文件被重命名为 dhcpd.leases~,然后,临时租期数据库被写入 dhcpd.leases 文件。

    在租期数据库被重命名为备份文件,新文件被写入之前,DHCP 守护进程有可能被杀死,系统也有可能会崩溃。如果发生了这种情况,启动服务所需的 dhcpd.leases 文件就不会存在。这时,请不要创建新租期文件。因为这样做会丢失所有原有的旧租期文件,从而导致更多问题。正确的办法是把 dhcpd.leases~ 备份文件重命名为 dhcpd.leases,然后再启动守护进程。

    一个典型的dhcpd.leases文件内容如下:

    lease 192.168.5.220 {             #DHCP服务器分配的IP地址#
    starts 1 2005/07/01 09:10:30;       # lease 开始租约时间#
    ends 1 2005/07/30 09:10:30;        # lease 结束租约时间# 
    binding state active;
    next binding state free;
    hardware ethernet 00:00:f8:a0:15:78;  #客户机网卡MAC地址#
    uid "\001\000\000\250\140%\306";    #用来验证客户机的UID标示#
    client-hostname "ghq123";           #客户机名称#
}

    3、启动和停止DHCP服务器

    在我们首次启动 DHCP 服务器之时,除非系统上存在 dhcpd.leases 文件,服务器将无法被启动。 如果这个文件不存在的话,使用 touch /var/lib/dhcp/dhcpd.leases 命令来创建一个。

    要启动 DHCP 服务,使用 /sbin/service dhcpd start 命令;要停止 DHCP 服务器,使用 /sbin/service dhcpd stop 命令。

    4、DHCP 转发代理

    DHCP 的转发代理(dhcrelay)允许你把无 DHCP 服务器的子网内的 DHCP 和 BOOTP 请求转发给其它子网内的一个或多个 DHCP 服务器。

    当某个 DHCP 客户请求信息时,DHCP 转发代理把该请求转发给 DHCP 转发代理启动时所指定的一列 DHCP 服务器。当某个 DHCP 服务器返回一个回应 时,该回应被广播或单播给发送最初请求的网络。

    除非使用 INTERFACES 指令在 /etc/sysconfig/dhcrelay 文件中指定了接口,DHCP 转发代理监听所有接口上的 DHCP 请求。

    要启动 DHCP 转发代理,使用 service dhcrelay start 命令。

    三、配置DHCP客户

    配置 DHCP 客户的第一步是确定内核能够识别网卡。多数网卡会在安装过程中被识别,系统会为该卡配置恰当的内核模块。如果我们在安装后安装了一张网卡,Kudzu(它是在系统引导时运行的硬件探测工具,它用来判定系统上增加或移除了哪些硬件。)应该会识别它,并提示我们为它配置相应的内核模块。

    要手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做 ifcfg-eth0 的配置文件,这里的 eth0 是网络设备的名称。

    /etc/sysconfig/network 文件应该包含以下行: 
    NETWORKING=yes

    这个文件中可能有更多信息,但是如果我们想在引导时启动联网,NETWORKING 变量必须被设为 yes。

    /etc/sysconfig/network-scripts/ifcfg-eth0 文件应该包含以下几行: 
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes

    我们也可以选择图形化界面来配置 DHCP 客户,使用网络管理工具来配置网络接口使用 DHCP (图2)。

图2(点击看大图)

    至此基于Linux局域网构建的DHCP服务器就全部完成了。

0
相关文章