DHCP 是动态主机配置协议。这个协议用于向计算机自动提供 IP 地址 , 子网掩码和路由信息。网络管理员通常会分配某个范围的 IP 地址来分发给局域网上的客户机。当设备接入这个局域网时,它们会向 DHCP 服务器请求一个 IP 地址。然后 DHCP 服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有 IP 地址为止。已经分配的 IP 地址必须定时地延长借用期。这个延期的过程称作 leasing ,确保了当客户机设备在正常地释放 IP 地址之前突然从网络断开时被分配的地址可以归还给服务器。本文以 Redhat Linux 9.0 为例,介绍如何建立一个完整和安全的 DHCP 服务器。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、建立 DHCP 服务器配置文件

  可以使用 Redhat Linux 9.0 自身携带 rpm 包安装。安装结束后 , DHCP 端口监督程序 dhcpd 配置文件是 /etc 目录中的名为 dhcpd.conf 的文件。下面手工建立 /etc/dhcpd.conf 文件。 /etc/dhcpd.conf 通常包括三部分: parameters declarations option

   1.DHCP 配置文件中的 parameters (参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。主要内容见表 1

ddns-update-style

配置 DHCP-DNS 互动更新模式。

default-lease-time

指定确省租赁时间的长度,单位是秒。

max-lease-time

指定最大租赁时间长度,单位是秒。

hardware

指定网卡接口类型和 MAC 地址。

server-name

通知 DHCP 客户服务器名称。

get-lease-hostnames flag

检查客户端使用的 IP 地址。

fixed-address ip

分配给客户端一个固定的地址。

authritative

拒绝不正确的 IP 地址的要求。

   2. DHCP 配置文件中的 declarations (声明):用来描述网络布局、提供客户的 IP 地址等。主要内容见表 2

shared-network

用来告知是否一些子网络分享相同网络。

subnet

描述一个 IP 地址是否属于该子网。

range 起始 IP 终止 IP

提供动态分配 IP 的范围。

host 主机名称

参考特别的主机。

group

为一组参数提供声明。

allow unknown-clients;deny unknown-client

是否动态分配 IP 给未知的使用者。

allow bootp;deny bootp

是否响应激活查询。

allow booting;deny booting

是否响应使用者查询。

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

为客户端设定和格林威治时间的偏移时间,单位是秒。

  注意:如果客户端使用的是视窗操作系统,不要选择 "host-name" 选项,即不要为其指定主机名称。

  下面是一个笔者使用的 DHCP 配置文件,这是一个C类网络,共 126 IP 地址可以分配的例子。读者可以复制后使用,注意红色部分是必须要修改的。

ddns-update-style interim;

ignore client-updates;

 

subnet 192.168.1.0 netmask 255.255.255.0 {

 

    option routers          192.168.1.254;

    option subnet-mask      255.255.255.0;

    option broadcast-address        192.168.1.255;

    option domain-name-servers      192.168.1.3;

    option domain-name          " www.cao.com ";   #DNS 名称 #

    option domain-name-servers  192.168.1.3;

 

    option time-offset      -18000;

 

    range dynamic-bootp 192.168.1.128 192.168.1.255;

    default-lease-time 21600;

    max-lease-time 43200;

 

        host ns {

        hardware ethernet 52:54:AB:34:5B:09 ;# 运行 DHCP 的网络接口的 MAC 地址 #

        fixed-address 192.168.1.9;

    }

}


二、启动和检查 DHCP 服务器

  使用命令启动 DHCP 服务器:

#service dhcpd start


  使用 ps 命令检查 dhcpd 进程:

#ps -ef | grep dhcpd
root      2402     1  0 14:25 ?        00:00:00 /usr/sbin/dhcpd
root      2764  2725  0 14:<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />29 pts/2    00:00:00 grep dhcpd


  使用检查 dhcpd 运行的端口:

# netstat -nutap | grep dhcpd
udp   0  0 0.0.0.0:67         0.0.0.0:*              2402/dhcpd

三、配置 DHCP 客户端

  通常网管员使用选择手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做 ifcfg-eth 的配置文件, eth ?是网络设备的名称。 eth0 等。如果你想在引导时启动联网, NETWORKING 变量必须 被设为 yes 除了此处之外 /etc/sysconfig/network 文件应该包含以下行:

NETWORKING=yes
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes