Linux下DHCP服务器详解.docx

上传人:b****8 文档编号:9475313 上传时间:2023-02-04 格式:DOCX 页数:16 大小:25.23KB
下载 相关 举报
Linux下DHCP服务器详解.docx_第1页
第1页 / 共16页
Linux下DHCP服务器详解.docx_第2页
第2页 / 共16页
Linux下DHCP服务器详解.docx_第3页
第3页 / 共16页
Linux下DHCP服务器详解.docx_第4页
第4页 / 共16页
Linux下DHCP服务器详解.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Linux下DHCP服务器详解.docx

《Linux下DHCP服务器详解.docx》由会员分享,可在线阅读,更多相关《Linux下DHCP服务器详解.docx(16页珍藏版)》请在冰豆网上搜索。

Linux下DHCP服务器详解.docx

Linux下DHCP服务器详解

Linux下配置完整安全的DHCP服务器详解

作者:

曹江华发文时间:

2005.05.19

 

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

二、建立客户租约文件

三、启动和检查DHCP服务器

四、配置DHCP客户端

五、DHCP配置常见错误排除

六、DHCP服务器的安全

DHCP是动态主机配置协议.这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。

网络管理员通常会分配某个范围的IP地址来分发给局域网上的客户机。

当设备接入这个局域网时,它们会向DHCP服务器请求一个IP地址。

然后DHCP服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有IP地址为止。

已经分配的IP地址必须定时地延长借用期。

这个延期的过程称作leasing,确保了当客户机设备在正常地释放IP地址之前突然从网络断开时被分配的地址可以归还给服务器。

本文以RedhatLinux9.0为例,介绍如何建立一个完整和安全的DHCP服务器。

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

可以使用RedhatLinux9.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-hostnamesflag

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

fixed-addressip

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

authritative

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

 

2.DHCP配置文件中的declarations(声明):

用来描述网络布局、提供客户的IP地址等。

主要内容见表2:

声明

解释

shared-network

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

subnet

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

range起始IP终止IP

提供动态分配IP的范围。

host主机名称

参考特别的主机。

group

为一组参数提供声明。

allowunknown-clients﹔denyunknown-client

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

allowbootp;denybootp

是否响应激活查询。

allowbooting﹔denybooting

是否响应使用者查询。

 

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-styleinterim;

ignoreclient-updates;

subnet192.168.1.0netmask255.255.255.0{

 

optionrouters192.168.1.254;

optionsubnet-mask255.255.255.0;

optionbroadcast-address192.168.1.255;

optiondomain-name-servers192.168.1.3;

optiondomain-name""; #DNS名称#

optiondomain-name-servers192.168.1.3;

 

optiontime-offset-18000;

 

rangedynamic-bootp192.168.1.128192.168.1.255;

default-lease-time21600;

max-lease-time43200;

 

hostns{

hardwareethernet52:

54:

AB:

34:

5B:

09;#运行DHCP的网络接口的MAC地址#

fixed-address192.168.1.9;

}

}

二、建立客户租约文件

运行DHCP服务器还需要一个名为dhcpd.leases的文件,保持所有已经分发出去的IP地址。

在RedhatLinux发行版本中,该文件位于/var/lib/dhcp/目录中。

如果您通过RPM安装ISCDHCP,那么该目录应该已经存在。

dhcpd.leases的文件格式为:

Leasesaddress{statement}

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

lease192.168.1.255{#DHCP服务器分配的IP地址#

starts12005/05/0203:

02:

26;#lease开始租约时间#

ends12005/05/0209:

02:

26;#lease结束租约时间#

bindingstateactive;

nextbindingstatefree;

hardwareethernet00:

00:

e8:

a0:

25:

86;#客户机网卡MAC地址#

uid"\001\000\000\350\240%\206";#用来验证客户机的UID标示#

client-hostname"cjh1";#客户机名称#

}

注意lease开始租约时间和lease结束租约时间是格林威治标准时间(GMT),不是本地时间。

第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。

如果不是通过RPM安装ISCDHCP,或者dhcpd已经安装,那么您应该试着确定dhcpd将其lease文件写到何处,并确保该文件存在。

也可以手工建立一个空文件:

#touch/var/lib/dhcp/dhcpd.leases

三、启动和检查DHCP服务器

使用命令启动DHCP服务器:

#servicedhcpdstart

使用ps命令检查dhcpd进程:

#ps-ef|grepdhcpd

root24021014:

25?

00:

00:

00/usr/sbin/dhcpd

root27642725014:

29pts/200:

00:

00grepdhcpd

使用检查dhcpd运行的端口:

#netstat-nutap|grepdhcpd

udp000.0.0.0:

670.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

五、DHCP配置常见错误排除

通常配置DHCP服务器很容易,不过,在这里有一些技巧可以帮助您避免出现问题。

对服务器而言,要确保网卡正常工作,并具备广播功能。

对客户机而言,还要确保客户机的网卡正常工作。

最后,要考虑网络的拓扑,并考虑客户机向DHCP服务器发出的广播消息是否会受到阻碍。

另外如果dhcpd进程没有启动,那么可以浏览syslog消息文件来确定是哪里出了问题。

这个消息文件通常是/var/log/messages。

典型故障:

1.DHCP服务器配置完成,没有语法错误。

但是网络中的客户机却没办法取得IP地址。

通常是LinuxDHCP服务器沒有办法接收來自255.255.255.255的DHCP客户机的Request封包造成的。

一般是LinuxDHCP服务器的网卡没有设置具有MULTICAST功能。

为了让dhcpd(dhcp程序的守护进程)能够正常的和DHCP客户机沟通,dhcpd必须传送封包到255.255.255.255这个IP地址,但是有些Linux系统里255.255.255.255这个IP地址被用来做为监听区域子网域(localsubnet)广播的IP地址,所以需要在路由表(routingtable)里加入255.255.255.255以激活MULTICAST功能;

使用命令:

routeadd-host255.255.255.255deveth0

如果报告错误消息:

255.255.255.255:

Unkownhost

那么请先修改/etc/hosts加入一行:

255.255.255.255dhcp

2.DHCP客户端程序和DHCP服务器不兼容

由于Linux有许多发现版本,不同版本使用DHCP客户端程序和DHCP服务器也不相同。

Linux提供了四种DHCP客户端程序:

pump,dhclient,dhcpxd,和dhcpcd。

了解不同Linux发行版本的服务器端和客户端程序对于常见错误排除是必要的。

笔者曾经遇到过使用SuSELinux9.1DHCP服务器和使用MandrakeLinux9.0客户机不兼容的情况。

此时就必须更换客户端程序。

方法是先停止客户机的网络服务,卸载原程序,安装和服务器端兼容程序。

附表:

主要Linux发行版使用的DHCP客户端。

发行版本

 

缺省DHCP客户端

可选DHCP客户端

DHCP客户端启动

脚本

附加配置文件

RedHatLinux9.0

dhclient

/sbin/ifup

/etc/sysconfig/network,

/etc/sysconfig/network-scripts/ifcfg-eth0

DebianLinux3.0

dhclient

/sbin/ifup

/etc/network/interfaces,

/etc/dhclient.conf

MandrakeLinux9.1

dhclient

dhcpcd,dhcpxd,pump

/sbin/ifup

/etc/sysconfig/network,

/etc/sysconfig/network-scripts/ifcfg-eth0,

/etc/dhclient-eth0.conf

SuSELinux9.1

dhcpcd

dhclient

/sbin/ifup-dhcp

/etc/sysconfig/network/dhcp,

/etc/sysconfig/network/ifcfg-eth0

六、DHCP服务器的安全

1.在指定网络接口启动DHCP服务器

如果你的Linux系统连接了不止一个网络界面,但是你只想让DHCP服务器启动其中之一,你可以配置DHCP服务器只在那个设备上启动。

在/etc/sysconfig/dhcpd中,把界面的名称添加到DHCPDARGS的列表中:

DHCPDARGS=eth0

或者直接使用命令:

Echo“DHCPDARGS=eth0”>>/etc/sysconfig/dhcpd

这样对于带有两个网卡的防火墙机器,更加安全:

一个网卡可以被配置成DHCP客户来从互联网上检索IP地址;另一个网卡可以被用作防火墙之后的内部网络的DHCP服务器。

仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接它的守护进程。

2.让DHCP服务器在监牢中运行

所谓"监牢"就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。

这样即使出现被破坏或被侵入,所受的损失也较小。

将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chrootjail(chroot"监牢")。

如果要在"监牢"中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。

因此需要事先创建目录,并将dhcpd复制到其中。

同时dhcpd需要几个库文件,可以使用ldd(libraryDependencyDisplay缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。

ldddhcpd

libc.so.6=>

/lib/tls/libc.so.6(0x42000000)

/lib/ld-linux.so.2

=>/lib/ld-linux.so.2(0x40000000)

style='font-family:

宋体'>

这意味着还需要在"监牢"中创建lib目录,并将库文件复制到其中。

手工完成这一工作是非常麻烦的,此时可以用jail软件包来帮助简化chroot"监牢"建立的过程。

(1)Jail软件的编译和安装

Jail官方网站是:

,最新版本:

1.9a。

#Wget

#tarxzvfjail.tar.gz;cdjail/src

#make;makeinstall

(2)用jail创建监牢

jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和addjailsw。

mkjailenv:

创建chroot"监牢"目录,并且从真实文件系统中拷贝基本的软件环境。

addjailsw:

从真实文件系统中拷贝二进制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该"监牢"中。

addjailuser:

创建新的chroot"监牢"用户。

首先停止目前dhcpd服务,然后建立chroot目录:

#/sbin/servicedhcpdstart

#mkjailenv/chroot/

mkjailenv

AcomponentofJail(version1.9forlinux)

http:

//www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas

 

Makingchrootedenvironmentinto/chroot

Doingpreinstall()

Doingspecial_devices()

Doinggen_template_password()

Doingpostinstall()

Done.

下面的例子展示为"监牢"添加dhcpd程序的过程:

#addjailsw/chroot/-P/usr/sbin/dhcpd

addjailsw

AcomponentofJail(version1.9forlinux)

http:

//www.gsyc.inf.uc3m.es/~assman/jail/

JuanM.Casillas

 

Guessingdhcpdargs(0)

Warning:

file/chroot//lib/tls/libc.so.6exists.Overwrittingit

Warning:

file/chroot//lib/ld-linux.so.2exists.Overwrittingit

………

Done.

不用在意那些警告信息,因为jail会调用ldd检查dhcpd用到的库文件。

而几乎所有基于共享库的二进制可执行文件都需要上述的几个库文件。

接下来将dhcpd的相关文件拷贝到"监牢"中:

#mkdir-p/chroot/dhcp/etc

#cp/etc/dhcpd.conf/chroot/dhcp/etc/

#mkdir-p/chroot/dhcp/var/state/dhcp

#touch/chroot/dhcp/var/state/dhcp/dhcp.leases

重新启动dhcpd:

[root@wwwroot]#/chroot/usr/sbin/dhcpd

使用ps命令检查dhcpd进程:

#ps-ef|grepdhcpd

root24021014:

25?

00:

00:

00/chroot/usr/sbin/dhcpd

root27642725014:

29pts/200:

00:

00grepdhcpd

注意此时进程名称已经改变,使用检查dhcpd运行的端口:

#netstat-nutap|grepdhcpd

udp000.0.0.0:

670.0.0.0:

*2402/dhcpd

端口号没有改变。

现在dhcpd已经成功运行在"监牢"中。

到此为止一个这样,一个完整和安全的DHCP服务器就完成了。

 

代理服务器之DHCP

.1 简介 

对于那些不太了解网路技术的人来说,配置TCP/IP可能是一件非常复杂的工作,对那些将PC连接到局域网的用户来说只能将配置集中到服务器端,这样可以简化用户端的工作复杂度。

当然,这将在一定程度上,增加管理员的工作量,但是从整体考虑,这样是最优的。

 

本章我将向大家介绍如何配置动态IP分配以及管理,并用通俗易懂的语言解释它是如何工作的,希望大家通过阅读本章,迅速成为一名合格的网络管理员。

DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet 网络工程师任务小组)设计,详尽的协议内容在RFC文档rfc2131和rfc1541里。

目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。

运行DHCP的服务器把TCP/IP网络设置集中起来,动态处理工作站IP地址的配置,用DHCP租约和预置的IP地址相联系,DHCP租约提供了自动在TCP/IP网络上安全地分配和租用IP地址的机制,实现IP地址的集中式管理,基本上不需要网络管理人员的人为干预。

而且,DHCP本身被设计成BOOTP(自举协议)的扩展,支持需要网络配置信息的无盘工作站,对需要固定IP的系统也提供了相应支持。

 

3.2 所需资源 

3.2.1 所需包 

dhcp-2.0-5.i386.rpm 

3.2.2 所需配置文件 

/etc/dhcpd.conf 系统自带,管理员配置 

/var/state/dhcp/dhcpd.leases 系统没有,管理员创建 

3.3 配置方案 

1./etc/dhcpd.conf 

说明:

dhcp主配置文件 

源文件:

 

subnet 192.168.0.0 netmask 255.255.255.0 { # 指定网段和子网掩码 

option routers 192.168.0.1; # 指定默认路由 

option subnet-mask 255.255.255.0; # 指定dhcp的子网掩码 

option domain-name ""; # 指定域名 

option domain-name-servers 192.168.0.1; # 默认DNS服务器 

range dynamic-bootp 192.168.0.10 192.168.0.250; # IP分配范围 

default-lease-time 1200; #如果客户端不能请求一个指定的租用期,就使 

用该参数来定义该地址租用的时间长度 

max-lease-time 87600; # 用来指定租用的最长时间,尽管租用的 

时间长度是根据客户端的请求决定的。

 

# we want the nameserver to appear at a fixed address 

# host ns { 

# next-server ; 

# hardware ethernet 12:

34:

56:

78:

AB:

CD; 

# fixed-address 207.175.42.254; 

# } 

# 以上被注释的部分用来给客户机分配一个永久的IP,也就是可以利用它 

来做网卡和IP的绑定 

2. /var/state/dhcp/dhcpd.leases 

说明:

IP分配记录文件 

通过执行 touch /var/state/dhcp/dhcpd.leases生成 

源文件:

 

空 

3.4 测试及管理办法 

3.4.1 测试方法 

1. 管理员修改完配置文件之后需要执行/etc/rc.d/init.d/dhcpd restart 

来使更改生效。

 

2.在Windows 98的客户端,用户

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1