网络管理的DHCP服务器(精选6篇)
网络管理的DHCP服务器 篇1
为了便于理解,我们把DHCP客户机比做餐馆里的客人,DHCP 服务器 比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物,可以这样描述整个过程: 客人走进餐馆,问:“有没有服务员啊?”(DHCP discover), 多个服务员同时回答:“有,我
为了便于理解,我们把DHCP客户机比做餐馆里的客人,DHCP服务器比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物。可以这样描述整个过程:
客人走进餐馆,问:“有没有服务员啊?”(DHCP discover),
多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCP offer),
客人说:“好吧,我要一份汉堡”(DHCP request,这个客人比较死板,总是选择第一次听到的食物),
端着汉堡的服务员回应了一声:“来啦”(DHCP ack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。
客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCP request),如果还有汉堡,服务员会再次确认并上菜(DHCP ack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCP nack)。
当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。
原文转自:www.ltesting.net
网络管理的DHCP服务器 篇2
DHCP (动态主机设置协议, Dynamic Host Configuration Protocol) 服务器可以方便地为网络中的新用户配置IP地址和网络参数, 这给经常需要移动的合法用户带来了很多的方便。
同时DHCP协议是在UDP和IP协议的基础上运行, 有很多不安全因素。而且DHCP的运作机制中, 通常服务器和客户端没有认证机制, 如果网络上存在多台DHCP服务器将会给网络照成混乱。
二、DHCP Snooping技术
DHCP Snooping技术是DHCP安全特性, 通过建立和维护DHCP Snooping绑定表过滤不可信任的DHCP信息, 这些信息是指来自不信任区域的DHCP信息。DHCP Snooping绑定表包含不信任区域的用户MAC地址、IP地址、租用期、VLAN-ID接口等信息。
当交换机开启了DHCP Snooping后, 会对DHCP报文进行侦听, 并可以从接收到的DHCP Request或DHCP Ack报文中提取并记录IP地址和MAC地址信息。另外, DHCP Snooping允许将某个物理端口设置为信任端口或不信任端口。信任端口可以正常接收并转发DHCP Offer报文, 而不信任端口会将接收到的DHCP Offer报文丢弃。这样, 可以完成交换机对非法DHCP Server的屏蔽作用, 确保客户端从合法的DHCP Server获取IP地址。
三、典型交换机DHCP SNOOPING配置
(一) DHCP服务器配置
利用内部服务器或核心交换机开启DHCP功能。
(二) 接入交换机配置
所有接入交换机通过Gigabit Ethernet 0/1端口与核心交换机级联, 各接入交换机配置如下:
1、在接入交换机上开启dhcp snooping功能
Switch>enable
Switch#configure terminal
Switch (config) #ip dhcp snooping//开启DHCP snooping功能
2、连接DHCP服务器的接口配置为可信任口
Switch (config) #interface Gigabit Ethernet 0/1
Switch (config-Gigabit Ethernet 0/49) #ip dhcp snooping trust//开启DHCP snooping的交换机所有接口缺省为untrust口, 交换机只转发从trust口收到的DHCP响应报文 (offer、ACK)
3、保存配置
Switch (config-Gigabit Ethernet 0/1) #end
Switch#write//确认配置正确, 保存配置
(三) 配置说明
完成以上配置, 即打开了交换机dhcp snooping功能, 除与核心交换机相连的Gigabit Ethernet 0/1外, 所有端口默认状态下, 变成了untrust端口, 即非信任接口, 只能够通过dhcp的请求报文, 但是不能通过dhcp的其他报文, 例如dhcp的offer报文。这样就能够实现图1中房客所连接的接入交换机对来自便携无线路由器的DHCP的offer报文的拒绝, 便携无线路由器的DHCP服务就不会影响整个宾馆网络的正常运行。
参考文献
[1]史罕初, 彭毓涛.基于IP DHCP Snooping的大型局域网安全策略研究[J].网络安全技术与应用, 2009年, 11期.
[2]李果果, 刘志权.基于DHCP SNOOPING的中小型企业网络接入系统研究[J].中小企业管理与科技 (中旬刊) , 2014年, 02期.
网络管理的DHCP服务器 篇3
情况1: 现在有一个router 上做了多个DHCP 域.
然后在switch 上划VLAN 。那么那个交换机上的ip help-address 的IP 是什么呢?是router 上哪个口的IP 呢? 如:在router 上的配制:
ip dhcp excluded-address 10.0.199.200 10.0.199.254 ! ip dhcp pool test 1 network 10.0.199.0 255.255.255.0 default-router 10.0.199.1 dns-server 10.0.199.252 lease 0 0 5
ip dhcp pool test 2 network 10.0.200.0 255.255.255.0 default-router 10.0.200.1 dns-server 10.0.199.252 lease 0 0 5
在交换机上:
interface Vlan199 ip address 10.0.199.1 255.255.255.0 ip helper-address ???????????????
int vlan 200
ip address 10.0.200.1 255.255.255.0 ip helper-address ??????????? 这时在这里指定的helper-address 是什么呢?才能把vlan199 和vlan200 里的电脑取得相
应DHCP scope???
第二种情况:利用局域网中的win’s DHCP server 假如dhcp server 的ip 192.168.10.1 在DHCP 上划分两个scope.
第一个scope 192.168.10.10 -----192.168.10.255 第二个scope 192.16.20.10 ------192.16.20.255.
交换机划分VLAN 之后,如何保证DHCP 服务器使用仍然在其它区域起作用。即VLAN10 里的机器取得第一个scope 里的ip: 即从192.168.10.10 -----192.168.10.255 同样,vlan20 取得相应第二个scope 里的IP. 这时在这里指定的helper-address 是什么呢? 才能把vlan199 和vlan200 里的电脑取得相应DHCP scope???
第三种情况:假如在一个3550emi 上划分多个DHCP 域。由于它本身就可路由。并能划VLAN。那么这时在这里指定的helper-address 是什么呢?才能把vlan199 和vlan200 里的电脑取得相应DHCP scope???
FW:ip dhcp pool valn x
network x.x.x.x x.x.x.x
default-router x.x.x.x
其中vlan x 这个pool 是全局pool 的子集
interface vlan x
ip helper-address x.x.x.x
The helper address can be a specific DHCP server address, or it can be the network address
if other DHCP servers are on the destination network segment. Using the network address enables other servers to respond to DHCP requests.
If you have multiple servers, you can configure one helper address for each server.
DHCP relay:
www.cisco.com/en/US/products...00800c6ed2.html
浅析DHCP服务器的构建过程 篇4
DHCP和BOOTP
DHCP是自引导规程Bootstrap协议(BOOTP)的扩展。BOOTP(定义于RFC1532)是为两个目的而设计的:其一是客户机能请求一个IP地址和其他TCP/IP设置信息,其二则是使无盘工作站在通过TFTP协议获得映像以后可以请求得到引导文件信息的位置,以便客户机可以从那里启动。但是,BOOTP并不支持租用期的概念,每台客户机的硬件地址必须和一个实际的IP地址相联系。
因为windows 计算机支持DHCP但不支持BOOTP,所以没有理由在纯windows 环境下使用BOOTP。但因为windows NT是支持DHCP的,而DHCP基于BOOTP,windows NT4.0ServicePack2也支持BOOTP客户机。这意味着DHCP服务器可以响应UNIX客户机或无盘工作站的DHCP请求以及BOOTP请求。该特性在混合的而DHCP/BOOTP服务器又存在冲突的环境中是十分有用的。有了DHCP,windows 可以对配置中继代理的远程子网提供BOOTP服务。但是windows 没有提供用于传送启动映像文件的可配置的TFTP服务。
这种部分的支持可能看起来有些奇怪,但是如果考虑网络服务中启动环境的使用,这种限制看起来就不那么重要了,它对windows 客户端是肯定没有影响的。DHCP选项(或者这里称为BOOTP选项)用于通知BOOTP客户端启动映像文件名和客户端。windows 2000 DHCP忽略BOOTP请求除非BOOTP表中已经配置了至少一个启动映像文件的信息。而且windows 2000 一个特色是对没有专门请求选项的BOOTP客户端不提供任何信息。
windows 2000 中的动态BOOTP扩展通过将IP地址在BOOTP作用域共用从而减化了管理。在BOOTP作用域中,对于使用保留的客户端将硬件地址和IP地址链接在一起是不必要的。除非该BOOTP客户端不支持动态BOOTP或者需要特定的选项。BOOTP作用域像普通的作用域一样创建,但是必须被标记为用做BOOTP请求。标记的方法如图15-13所示,在作用域的属性
对话框的Advanced选项卡中选择“Both”或“BOOTPonly”,值得注意的是在DNS选项卡中关于使用动态DNS更新的所有选项都可为BOOTP客户端所用。
要配置启动文件,首先要改变DHCP服务器属性的“General”选项卡中的缺省值,使“showtheBOOTPTableFolder复选框被选中,如图15-14所示。
1)打开DHCP服务器管理界面。
2)单击服务器节点,然后右键单击弹出菜单以选择服务器属性对话框。
3)在General选项卡中,选中标签为“showtheBOOTPTableFolder”的复选框,
4)单击OK关闭属性对话框。
因为当BOOTP表为空的时候服务器将忽略BOOTP请求,所以这是一个必要的步骤。此后就可能在服务器控制台中的BOOTP表节点的上下文菜单中选择“NewBootImage”以提供启动映像信息。在响应BOOTP请求时,DHCP服务器将表中的信息返回给客户端。
1)打开DHCP服务器管理界面。
2)展开服务器节点。
3)单击BOOTP表节点。如果看不到该节点,就使用上面提到的操作在服务器属性对话框中启用BOOTP表。
4)已定义的BOOTP映像文件将在右边的细节框中列出。在BOOTP表节点的上下文菜单中选择“NewBootImage”添加一个映像文件。
5)输入TFTP服务器,映像文件名,TFTP服务器上的映像路径,然后单击“Add”。
BOOTP和DHCP报文的格式几乎是一样的,缺省的时候两者在服务器和客户端分别使用UDP67和68号端口。BOOTP服务器响应的大小固定,比DHCP响应可能要小一些,这意味着在配置用于支持BOOTP的作用域的返回选项时必须谨慎。BOOTP客户端没有租借的概念。在传统的BOOTP使用中所有的BOOTP客户端都使用保留,所以没有租借并不是一个问题。已经看到windows 2000 DHCP服务器允许定义一个提供BOOTP服务的作用域,并且动态地分配IP地址。如果使用了动态BOOTP扩展,DHCP服务器将使用基于在超时后测试该IP是否未被使用的方法回收租借给BOOTP客户端的IP地址。BOOTP在服务器和客户端之间采用两步的交换而不是四步的交换,并且没有周期性的更新,但这些并没有什么影响。
如果要为各BOOTP客户端分别提供选项信息,就必须借助MAC地址对BOOTP客户端实行保留。对于DHCP客户端也是如此。表15-2列出了所支持的一些BOOTP客户端选项。BOOTP客户端必须请求发送选项,否则不会收到任何选项。
小结
许多人不能或不敢使用DHCP,因为在DHCP的早期历史中DHCP一般没有和DNS集成在一起。尽管早先微软使用WINS的解决方案允许DHCP,WINS早期版本的不稳定和WINS的专有性使许多人认为该方案不是一个通用的解决方案。
本章说明了若综合使用微软DHCP和DNS且允许动态更新,则网络上的计算机可以动态得到IP地址分配,也仍能正常在DNS下工作,且不需要许多管理工作。要使用DHCP,应考虑DHCP服务器的数量和位置,以及对DNS的影响,比如对清理的影响。然后要建立和授权DHCP服务器,定义和使能作用域和选项,并配置客户端成为DHCP客户端。当存在一定的DHCP客户端时,对客户端网络配置的重新设置由所传送的DHCP选项集中管理。
编辑推荐TCP/IP协议专题
TCP/IP(传输入控制地议/网际协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与..
网络管理的DHCP服务器 篇5
dhcpd.conf-dhcpd 配置文件
描述
dhcpd.conf 文件包括ISC DHCP的dhcpd的配置信息。
dhcpd.conf文件是一个普通格式的ASCII码文档,它由内置的递归解析器解释。
dhcpd.conf文件可能会包含许多额外的tab和空格、空行,它们的目的是让文件更容易阅读。其中的关键字对大小写不敏感。注释语句可以放在任何位置(除了引号中)注释语句用# 开头,这一行结束时注释语句自然结束。
文件包括一组语句,语句在一对大括号中,包含参数和声明。
参数语句说明如何做一件事(例如,租期是多长时间),或者是否做一件事情。(例如,dhcpd 是否为未知客户提供地址),或者给客户提供哪种参数(例如,使用网关220.177.244.7)。
声明用来描述网络的拓扑结构、网络上的客户,提供可以为客户端分配的地址,或者对某个客户端组应用组(group)参数。在任何组参数中,所有的这些组参数必须比使用这些组参数的语句先出现。
网络声明包含多子网的网络(有些地方译为:超网,但超网太难理解了,这里叫“多子网网络”)和子网的拓扑声明。对于有地址被动态分配给客户端的子网,子网声明中必须有一个range声明语句。对于静态分配的地址,或者是已知客户的安装,每个客户端都必须使用一个host声明语句。如果一个参数应用到一组声明中,这些声明并不只与某个子网相关,可以定义一个“组参数”。
对每一个要服务的子网,每个dhcp服务器连接的子网,都必须有一个子网声明,用来告诉dhcpd如何处理那个子网上的地址。即使一个子网不需要分配任何地址,也需要一个子网声明。
一些物理网络上不只有一个IP子网存在,例如,如果一个网络需要一个8位的子网,但是当业务发展使总的节点数超过了254台,就需要增加一个8位的子网。这时,就增加了一个新的物理网络,这种情况下,2个网络的子网声明必须包含在一个“多子网网络声明(超级作用域)”中。
有些网络的客户端不只有一个子网,可能会为同一子网中一些客户端分配的一些参数与其它的客户端不同。这样的用户可以使用host语句来定义,一些参数也可以定义在“组参数”语句中,它被这些客户端共同调用。对于需要根据不同情况获得不同地址的客户端,可能会使用“类声明(class declarations)”和“条件声明(conditional declarations)”语句,这样可以根据客户端发送的信息来决定分配给客户端的参数。
当一个客户端启动时,服务器先查看是否有匹配客户端的host语句,如果没有,再看是否有匹配的“类声明(class declarations)”语句,接着查看是否有“池pool”匹配,“子网subnet”匹配和“多子网网络(超级作用域)shared-net-work”匹配。(根据这些匹配,)将符合这个客户端的参数提供给它。每种参数都不会被分析第2次,如果它们出现了2次或2次以上,那么会使用那个最精确出现的地方。
dhcpd首先查找客户端是否有包含固定IP地址的host语句,这个地址要在客户端启动的那个子网中,或者“多子网网络”中,如果没有对应的host语句匹配,那就查找非固定地址的声明。
例如:
一个典型的dhcpd.conf 文件将会象下面这样:
global parameters...subnet 204.254.239.0 netmask 255.255.255.224 {
subnet-specific parameters...range 204.254.239.10 204.254.239.30;
}
subnet 204.254.239.32 netmask 255.255.255.224 {
subnet-specific parameters...range 204.254.239.42 204.254.239.62;
}
subnet 204.254.239.64 netmask 255.255.255.224 {
subnet-specific parameters...range 204.254.239.74 204.254.239.94;
}
group {
group-specific parameters...host zappo.test.isc.org {
host-specific parameters...}
host beppo.test.isc.org {
host-specific parameters...}
host harpo.test.isc.org {
host-specific parameters...}
}
图 1
注意文件的开始,它是全局参数放置的地方,可能会是:
组织的域名,DNS服务器的地址(如果这个服务器对整个网络都是一样的)和其它一些。比如:
option domain-name “isc.org”;
option domain-name-servers ns1.isc.org, ns2.isc.org;
图 2
如图2中所示,可以使用DNS服务器的名称而不使用它的IP地址,如果指定不只一个DNS服务器地址,那么只要有可能,所有地址都会提供给客户端。
每个子网都要指明的最可能必须的参数是router,如图1所示。因此对于第一个子网,它就应该是这个样子的 option routers 204.254.239.1;
注意这里的地址是数字形式的,如果每个网关都有域名,这就不是必须的,使用域名也是合法的。然而,很多情况下,多个网关只有一个域名,这样就不能使用域名了。
在图1中,有一个group 语句,它为一组host语句zappo,beppo和harpo提供了通用的参数。如你所见,这些主机都在test.isc.org这个域里,这样它在“组参数”中指明就会覆盖全局设置的参数:
option domain-name “test.isc.org”;
而且,指明它们的域,可能用在测试机器中,如果我们要测试DHCP的租约机制,可以在这里设置比默认值更短的租约:
max-lease-time 120;
default-lease-time 120;
你可能注意到有些参数以option 关键字开头,有些不。以option 关键字开头的语句对应实际的DHCP选项,不以option关键字开头的选项控制服务端(例如,租期)或客户端的选项不在DHCP协议中(例如,服务器名或文件名)
在图1中,每个host 都有指定的参数,它会包含象hostname选项,要上传的文件名(filename 参数),还有要上传的服务器的地址(next-server 参数)。通常,任何参数都可以在任何可以出现的地方出现,并且按照参数出现位置确定应用范围。
假设你的环境中有许多没有CD的X终端,这些终端有不同的型号,你想为每种型号确定一个启动文件,一种方法是给每个服务器和组都使用host语句:
group {
filename “Xncd19r”;
next-server ncd-booter;
host ncd1 { hardware ethernet 0:c0:c3:49:2b:57;}
host ncd4 { hardware ethernet 0:c0:c3:80:fc:32;}
host ncd8 { hardware ethernet 0:c0:c3:22:46:81;}
}
group {
filename “Xncd19c”;
next-server ncd-booter;
host ncd2 { hardware ethernet 0:c0:c3:88:2d:81;}
host ncd3 { hardware ethernet 0:c0:c3:00:14:11;}
}
group {
filename “XncdHMX”;
next-server ncd-booter;
host ncd1 { hardware ethernet 0:c0:c3:11:90:23;}
host ncd4 { hardware ethernet 0:c0:c3:91:a7:8;}
host ncd8 { hardware ethernet 0:c0:c3:cc:a:8f;}
}
地址池
“池”语句(pool)用来定义一个地址池,即便是在同一个网段或者子网,也可以定义几个池,系统将通过“池”来区分它们。例如,你可能想提供一大段地址分配给DHCP客户端时同时提供很短的租约的一小段地址,用来给未知客户。如果有防火墙,你可能会安排一段地址池能上网,另一个地址池不能上网,这可以鼓励用户注册到DHCP系统中来,也就需要建立两个地址池:
subnet 10.0.0.0 netmask 255.255.255.0 {
option routers 10.0.0.254;
# Unknown clients get this pool.pool {
option domain-name-servers bogus.example.com;
max-lease-time 300;
range 10.0.0.200 10.0.0.253;
allow unknown-clients;
}
# Known clients get this pool.pool {
option domain-name-servers ns1.example.com, ns2.example.com;
max-lease-time 28800;
range 10.0.0.5 10.0.0.199;
deny unknown-clients;
}
}
上面这个例子中,已知客户和未知客户在相同的子网中,也可能将已知和未知客户分配在不同的子网中,或者在“多子网层次(超级作用域)”,这样地址池的范围可能跨越不同的子网。正如前面的例子,地址池可以允许或拒绝一个控制用户存取的组,这个组名前面要有allow或 deny 关键字。
如果一个池有一个允许列表,只有匹配的客户端才可以获得地址池的地址,如果这个池有一个拒绝列表,只有不匹配的客户端才可以获得池中的地址,如果同时存在允许和拒绝列表,那么只有在允许列表并且不在拒绝列表中的客户端才可以获得池中的地址。
动态地址分配
地址分配实际只在客户端在初始状态并且发送一个 DHCPDISCOVER信息时完成。如果客户端认为它有一个有效的租约并且发送了一个DHCPREQUEST信息来初始化或者更新租约,服务器就只有3个选择:(1)它可以忽略DHCPREQUEST信息,并且返回一个DHCPNAK 信息来告诉客户端,要求客户端停止使用这个地址,(2)或者发送一个DHCPACK信息,告诉客户端继续再使用这个地址一段时间,如果服务器找到客户端要求的地址,并且这个地址对于这个客户也是可用的,服务器会发送一个DHCPACK信息,如果这个地址已经不能用了,客户端就不能使用它,此时服务器将会发送一个DHCPNAK信息,(3)如果服务器不知道这个地址,它会先保持沉默,除非这个地址对于客户端依附的地址段是不正确的,这种情况下服务器会发送一个DHCPNAK,即便它完全不知道这个地址。
如果有一个host语句定义了客户端,同时host语句中包含了固定地址(fixed-address),这个IP地址对于客户端实际连接的网段也是合法的,此时DHCP服务器不动态分配地址,而是发送host语句指明的地址。如果此时用户发送了DHCPREQUEST信息来获得其它地址,服务器会回应一个DHCPNAK信息,来拒绝为用户分配其它地址。
当一个DHCP服务器为客户端分配一个新的地址时(记住,这只发生在客户端发送DHCPDISCOVER信息时),它首先查找lease文件,看客户机是否存在一个有效的地址租约,或者此客户机原来是否有一个地址(这个地址已经过期),如果有,服务器就会检查那个地址,看客户端是否被允许使用这个地址,如果客户端已经不被允许使用这个地址(通常是客户机从另外一个子网登录了,或者此地址被其它客户端占用),并且服务器lease文件中显示原来的租约还存在,服务器就释放这个租约,事实上,此时是客户端发送的DHCPDISCOVER信息,它已经证明客户端实际并没有使用这个租约。如果没有找到存在的租约,或者客户端被强迫接收一个已经存在的租约,那么服务器就会查找客户端所在网段的地址池,找一个允许客户端使用而又没有使用的地址,它会按顺序遍历每个地址池(所有地址池外的“范围”range定义语句都组成一个没有允许列表的单独的池)。如果地址池的允许列表允许客户端得到一个池中的地址,这个地址池会被检查是否有可用的地址,如果有,客户端将会得到这个地址;否则,会检查下一个地址池。如果一直都没有找到可用的地址,服务器就不发送回应。如果找到一个地址,这个地址以前从未被任何客户端使用过,这个地址将立即分配给这个客户,如果这个地址曾经分配给另一个客户端,服务器会尝试查找一个从未分配的地址给客户端。
DHCP服务器使用哈希表(hash table)来产生一组可用的IP地址,这意味着地址不以任何特定的顺序存放,这样也就不能预测DHCP服务器下一个要分配的地址。前一个版本的ISC DHCP服务器使用降序来分配地址,现在不是了,并且在这个版本里也没有办法配置服务器分发地址的顺序(ISC DHCP 3)。
防止IP地址冲突
DHCP服务器在分配IP地址前检查它们是否被使用来防止冲突。它通过向准备分配的IP地址发送ICMP Echo 请求信息来完成,如果1秒内没有接收到ICMP Echo reply信息,就假定这个地址是可用的。这只对在range语句中指明的租约,并且租约被DHCP服务器认为可用时有效。例如,DHCP服务器或者它的热备机没有列出这个租约在使用中。如果收到ICMP Echo回应,DHCP服务器会假定出现了配置错误――IP地址被网络上的主机使用了,然后它标记这个地址为“废弃地址”,不再把它分配给客户端。如果DHCP客户端试图得到一个地址,但是却没有可用的地址,服务器会(随机)标记一个“废弃地址”为“可用”,然后向这个地址发送同样的ICMP Echo 请求,如果没有得到 ICMP Echo reply回应,这个地址就会分配给这个客户。
如果要收回的第一个IP地址是可用的,DHCP服务器不会去循环使用“废弃地址”。而且,当下一个客户的DHCPDISCOVER信息到达时,它会用相同的方法开始一个新的分配,并且尝试分配一个新的IP地址。
在Linux中配置DHCP服务器 安装DHCP服务器
DHCP配置文件
可以使用RHEL 5.0自身携带的RPM包安装,安装结束后DHCP端口监督程序dhcpd配置文件是/etc目录中的名为dhcpd.conf的文件。下面手工建立/etc/dhcpd.conf文件,该文件通常包括3个部分,即parameters参数、declarations声明和option选项。
1.DHCP配置文件中的parameters
parameters表明如何执行任务,以及是否要执行任务或将哪些网络配置选项发送给客户端,主要参数如表8-1所示。
DHCP配置文件中的主要参数
参 数
解 释
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 declarations用来描述网络布局及提供客户的IP地址等,主要声明 声 明 解 释
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
设置服务器从引导文件中装入主机名,应用于无盘工作站
DHCP配置文件中的option
option用来配置DHCP可选参数,全部用option关键字作为开始,主要选项如表8-3所示。表8-3 DHCP配置文件中option关键字的主要选项 选 项
解 释
subnet-mask
为客户端设定子网掩码
domain-name
为客户端指明DNS名字
domain-name-servers
为客户端指明DNS服务器的IP地址
host-name
为客户端指定主机名称
routers
为客户端设定默认网关
broadcast-address
为客户端设定广播地址
ntp-server
为客户端设定网络时间服务器的IP地址
time-offset
为客户端设定格林威治时间的偏移时间,单位是秒
配置实例
在下面的实例中使用一个example.com的虚拟域名,用户需要修改其中的内容以满足网络的需求。/etc/dhcpd.conf文件的内容如下:
# The options outside a subnet directive are global unless
# over-ridden by the same setting inside the subnet directive.option domain-name-servers 192.0.34.43,193.0.0.236;
default-lease-time 6000;max-lease-time 7200;# If this DHCP server is the official DHCP server for the local
# network,the authoritative directive should be uncommented.authoritative;
# Use this to send dhcp log messages to a different log file(you also
# have to hack syslog.conf to complete the redirection).log-facility local7;
# Handle client dynamic dns updates
ddns-update-style none;# Example Network 1(on eth0)
subnet 192.168.200.0 netmask 255.255.255.0 {
option domain-name “corp.example.com”;
range 192.168.200.100 192.168.200.200;
option routers 192.168.200.254;
}
上面的实例配置文件分为两个部分,即子网配置信息和全局配置信息。可以有多个子网,这里为了简化,只指定了一个子网。
(1)Subnet。
在上面的例子中,一个子网声明以“subset”关键字开始,所以子网信息包括在{}中。{}中的配置信息只对该子网有效,会覆盖全局配置。
(2)Global。
所有子网以外的配置都是全局配置,如果同一个全局配置没有被子网配置覆盖,则其将对所有子网生效。
(3)Configuration Options。
下面是上例中配置指令的解释说明。
option domain-name-servers 192.0.34.43,193.0.0.236;
这一行指定客户端应该使用的DNS服务器,该选项可以用于全局参数或者子网参数。
default-lease-time 6000;max-lease-time 7200;
这两行是相关的,default-lease-time指定客户端需要刷新配置信息的时间间隔(秒),max-lease-time为客户端用于无法从服务器获得任何信息的时间,超过该时间则会丢弃之前从该DHCP服务器获得的所有信息,而转向使用OS的默认设置。
authoritative;
指定当一个客户端试图获得一个不是该DHCP服务器分配的IP信息,DHCP将发送一个拒绝消息,而不会等待请求超时。当请求被拒绝,客户端会重新向当前DHCP发送IP请求获得新地址。
log-facility daemon;
指定DHCP服务器发送的日志信息的日志级别。
ddns-update-style none;
该配置可以指定一个方法,客户端用该方法来更新IP对应的域名信息,本例中禁用了该特性。
subnet 192.168.200.0 netmask 255.255.255.0 {
option domain-name “corp.example.com”;
range 192.168.200.100 192.168.200.200;
option routers 192.168.200.254;
}
上面内容为子网配置,第1行指定该子网地址和掩码。DHCP服务器必须拥有该子网的一个IP,domain-name设置该客户端的域名。DHCP服务器可以负责整个子网的信息,也可以只负责子网的一段。
option routers配置默认网关IP。
启动DHCP服务器
1.建立客户端租约文件
运行DHCP服务器还需要一个名为“dhcpd.leases”的文件,其中保存所有已经分发的IP地址。在Red Hat Linux发行版本中,该文件位于/var/lib/dhcp/目录中。如果通过RPM安装ISC DHCP,那么该目录应该已经存在。dhcpd.leases的文件格式为:
Leases address {statement}
一个典型的文件内容如下:
lease 192.168.1.255 { #DHCP服务器分配的IP地址#
starts 1 2005/05/02 03:02:26;# lease 开始租约时间#
ends 1 2005/05/02 09:02:26;# lease 结束租约时间#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86;#客户机网卡MAC地址#
uid “010000350240%206”;#用来验证客户机的UID标志#
client-hostname “cjh1”;#客户机名称#
}
注意:lease开始租约时间和lease结束租约时间是格林威治标准时间(GMT),不是本地时间。
第1次运行DHCP服务器时,dhcpd.leases是一个空文件,也不用手工建立。如果不是通过RPM安装ISC DHCP,或者dhcpd已经安装,那么应该试着确定dhcpd将其lease文件写到何处并确保该文件存在。也可以手工建立一个空文件:
#touch /var/lib/dhcp/dhcpd.leases
2.启动和检查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:29 pts/2 00:00:00 grep dhcpd
使用netstat检查dhcpd运行的端口:
# netstat-nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
3.设置DHCP转发代理
DHCP的转发代理(dhcrelay)允许把无DHCP服务器子网内的DHCP和BOOTP请求转发给其他子网内的一台或多台DHCP服务器。当某个DHCP客户端请求信息时,DHCP转发代理把该请求转发给DHCP转发代理启动时所指定的一台DHCP服务器。当某台DHCP服务器返回一个回应时,该回应被广播或单播给发送最初请求的网络。除非使用INTERFACES指令在/etc/sysconfig/dhcrelay文件中指定了接口,否则DHCP转发代理监听所有接口上的DHCP请求。要启动DHCP转发代理,使用命令:
service dhcrelay start
4.从指定端口启动DHCP服务器
如果系统连接不止一个网络接口,但是只想让DHCP服务器启动其中之一,则可以配置DHCP服务器只在相应设备上启动。在/etc/sysconfig/dhcpd中,把接口的名称添加到DHCPDARGS的列表中:
# Command line options here
DHCPDARGS=eth0
如果有一个带有两块网卡的防火墙机器,这种方法就会大派用场。一块网卡可以被配置成DHCP客户端从互联网上检索IP地址;另一块网卡可以被用做防火墙之后的内部网络的DHCP服务器。仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接其守护进程。
其他可在/etc/sysconfig/dhcpd中指定的命令行选项如下。
(1)-p
:指定dhcpd应该监听的UDP端口号码,默认值为67。DHCP服务器在比指定的UDP端口大一位的端口号上把回应传输给DHCP客户端。例如,如果使用默认端口67,服务器就会在端口67上监听请求,然后在端口68上回应客户。如果在此处指定了一个端口号,并且使用了DHCP转发代理,所指定的DHCP转发代理所监听的端口必须是同一端口。
(2)-f:把守护进程作为前台进程运行,在调试时最常用。
(3)-d:把DCHP服务器守护进程记录到标准错误描述器中,在调试时最常用。如果未指定,日志将被写入/var/log/messages中。
(4)-cf
(5)-lf
(6)-q:在启动该守护进程时,不要显示整篇版权信息。
5.管理DHCP服务器端口
常见的DHCP服务器是dhcpd,可以通过命令行设定其监听端口。例如,使用以下命令:
#dhcpd eth0
该命令允许dhcpd进程只在eth0网络端口上工作,默认为监听所有端口。由于DHCP同样使用67和68端口通信,所以更改该端口将造成DHCP服务无法正常使用。
设置DHCP客户端
1.在Linux下配置DHCP客户端
配置DHCP客户端的第1步是确定内核能够识别网卡,多数网卡会在安装过程中被识别,系统会为该网卡配置恰当的内核模块。如果在安装后添加了一块网卡,Kudzu应该会识别它,并提示为其配置相应的内核模块。通常网管员选择手工配置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的设备都需要一个配置文件。其他网络脚本包括的选项如下。
(1)DHCP_HOSTNAME:只有当DHCP服务器在接收IP地址前需要客户端指定主机名时才使用该选项。
(2)PEERDNS=:取值为如下之一。
yes:使用来自服务器的信息来修改/etc/resolv.conf。若使用DHCP,那么yes是默认值。
no:不要修改/etc/resolv.conf。
(3)SRCADDR=:是用于输出包的指定源IP地址。
(4)USERCTL=:取值为如下之一。
yes:允许非根用户控制该设备。
no:不允许非根用户控制该设备。
2.在Windows下设置DHCP客户端
Windows 2000和Windows XP的配置方法相同,DHCP客户端的配置很简单。只需要在“控制面板”中双击“网络连接”图标,然后在如图8-1所示的“本地连接属性”对话框中选择“Internet协议(TCP/IP)”属性。
“常规”选项卡中选择“自动获取IP地址”和“自动获取DNS服务器地址”单选按钮。
3.测试端口监督程序
现在应该已经可以将一个客户机接入到网络中,并通过DHCP请求一个IP地址。要通过Windows客户端测试,在DOS提示符下执行以下操作。(1)清除适配器可能已经拥有的IP地址信息,执行命令:
ipconfig /release
(2)向DHCP服务器请求一个新的IP地址,执行命令:
ipconfig /renew
显示从DHCP服务器获得的信息,应该会看到Primary WINS Server、DNS Servers和Connection-specific DNS Suffix域都获得了dhcpd.conf文件中提供的数据
DHCP简介
DHCP的前身是BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取配置信息的自举协议。DHCP使用客户端/服务器模式,请求配置信息的计算机叫做“DHCP客户端”,而提供信息的叫做“DHCP服务器”。DHCP为客户端分配地址的方法有3种,即手工配置、自动配置和动态配置。DHCP最重要的功能就是动态分配,除了IP地址,DHCP还为客户端提供其他的配置信息,如子网掩码,从而使得客户端无须用户动手即可自动配置并连接网络。
为什么使用DHCP
DHCP在快速发送客户网络配置方面很有用,当配置客户端系统时,若管理员选择DHCP,则不必输入IP地址、子网掩码、网关或DNS服务器,客户端从DHCP服务器中检索这些信息。DHCP在网络管理员想改变大量系统的IP地址时也有用,与其重新配置所有系统,不如编辑服务器中的一个用于新IP地址集合的DHCP配置文件。如果某机构的DNS服务器改变,这种改变只须在DHCP服务器中,而不必在DHCP客户端上进行。一旦客户端的网络被重新启动(或客户端重新引导系统),改变就会生效。除此之外,如果便携电脑或任何类型的可移动计算机被配置使用DHCP,只要每个办公室都有一个允许其联网的DHCP服务器,它就可以不必重新配置而在办公室间自由移动。
DHCP的工作流程
1.发现阶段
即DHCP客户端查找DHCP服务器的阶段。客户机以广播方式(因为DHCP服务器的IP地址对于客户端来说是未知的)发送DHCP discover信息来查找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.提供阶段
即DHCP服务器提供IP地址的阶段,在网络中接收到DHCP discover信息的DHCP服务器都会做出响应。它从尚未出租的IP地址中挑选一个分配给DHCP客户端,向其发送一个包含出租的IP地址和其他设置的DHCP offer信息。
3.选择阶段
即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户端发送DHCP offer信息,则DHCP客户端只接受第1个收到的DHCP offer信息。然后它就以广播方式回答一个DHCP request信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有DHCP服务器,它将选择某台DHCP服务器所提供的IP地址。
4.确认阶段
即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP request信息之后,它向DHCP客户端发送一个包含其所提供的IP地址和其他设置的DHCP ACK信息,告诉DHCP客户端可以使用该IP地址,然后DHCP客户端便将其TCP/IP与网卡绑定。另外,除DHCP客户端选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
5.重新登录
以后DHCP客户端每次重新登录网络时,不需要发送DHCP discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户端继续使用原来的IP地址,并回答一个DHCP ACK信息。如果此IP地址已无法再分配给原来的DHCP客户端使用(比如此IP地址已分配给其他DHCP客户端使用),则DHCP服务器给DHCP客户端回答一个DHCP NACK信息。当原来的DHCP客户端收到此信息后,必须重新发送DHCP discover信息来请求新的IP地址。
6.更新租约
DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回该IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。DHCP客户端启动时和IP租约期限过一半时,DHCP客户端都会自动向DHCP服务器发送更新其IP租约的信息。
DHCP的设计目标
(1)DHCP应该是一种机制而不是策略,它必须允许本地系统管理员控制配置参数,本地系统管理员应该能够对所希望管理的资源进行有效的管理。
(2)客户端不需要手工配置,而应该在不参与的情况下发现合适于本地机的配置参数,并利用这些参数加以配置。
(3)不需要为单个客户端配置网络,在通常情况下,网络管理员没有必要输入任何预先设计好的用户配置参数。
(4)DHCP不需要在每个子网上配置一台服务器,出于经济原因,DHCP服务器必须可以和路由器或BOOTP转发代理一起工作。
(5)DHCP客户端必须能对多个DHCP服务器提供的服务做出响应,出于网络稳定与安全的考虑,有时需要在网络中添加多台DHCP服务器。
(6)DHCP必须静态配置,而且必须用现存的网络协议实现。
(7)DHCP必须能够和BOOTP转发代理互操作。
(8)DHCP必须能够为现有的BOOTP客户端提供服务。
(9)不允许有多个客户端同时使用一个网络地址。
(10)在DHCP客户端重新启动后仍然能够保留其原先的配置参数,如果可能,客户端应该被指定为相同的配置参数。
(11)在DHCP服务器重新启动后仍然能够保留客户端的配置参数,如果可能,即使DHCP机制重新启动,也应该能够为客户端分配原有的配置参数。
(12)能够为新加入的客户端自动提供配置参数。
(13)支持对特定客户端永久固定分配网络地址。
上面(9)~(13)的设计目标是对于网络层参数的设计而言的,在网络层参数上,DHCP必须做到这几点。
安装DHCP服务器
DHCP配置文件
可以使用RHEL 5.0自身携带的RPM包安装,安装结束后DHCP端口监督程序dhcpd配置文件是/etc目录中的名为dhcpd.conf的文件。下面手工建立/etc/dhcpd.conf文件,该文件通常包括3个部分,即parameters参数、declarations声明和option选项。
1.DHCP配置文件中的parameters
parameters表明如何执行任务,以及是否要执行任务或将哪些网络配置选项发送给客户端,主要参数如表8-1所示。
DHCP配置文件中的主要参数
参
数
解
释
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
declarations用来描述网络布局及提供客户的IP地址等,主要声明
声明 声
明
解
释
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 设置服务器从引导文件中装入主机名,应用于无盘工作站 DHCP配置文件中的option
option用来配置DHCP可选参数,全部用option关键字作为开始,主要选项如表8-3所示。表8-3 DHCP配置文件中option关键字的主要选项 选
项
解
释
subnet-mask 为客户端设定子网掩码
domain-name 为客户端指明DNS名字
domain-name-servers 为客户端指明DNS服务器的IP地址
host-name 为客户端指定主机名称
routers 为客户端设定默认网关
broadcast-address 为客户端设定广播地址
ntp-server 为客户端设定网络时间服务器的IP地址
time-offset 为客户端设定格林威治时间的偏移时间,单位是秒
配置实例
在下面的实例中使用一个example.com的虚拟域名,用户需要修改其中的内容以满足网络的需求。/etc/dhcpd.conf文件的内容如下:
# The options outside a subnet directive are global unless
# over-ridden by the same setting inside the subnet directive.option domain-name-servers 192.0.34.43, 193.0.0.236;
default-lease-time 6000;max-lease-time 7200;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.authoritative;
# Use this to send dhcp log messages to a different log file(you also
# have to hack syslog.conf to complete the redirection).log-facility local7;
# Handle client dynamic dns updates
ddns-update-style none;# Example Network 1(on eth0)
subnet 192.168.200.0 netmask 255.255.255.0 {
option domain-name “corp.example.com”;
range 192.168.200.100 192.168.200.200;
option routers 192.168.200.254;}
上面的实例配置文件分为两个部分,即子网配置信息和全局配置信息。可以有多个子网,这里为了简化,只指定了一个子网。
(1)Subnet。
在上面的例子中,一个子网声明以“subset”关键字开始,所以子网信息包括在{}中。{}中的配置信息只对该子网有效,会覆盖全局配置。
(2)Global。
所有子网以外的配置都是全局配置,如果同一个全局配置没有被子网配置覆盖,则其将对所有子网生效。
(3)Configuration Options。
下面是上例中配置指令的解释说明。
option domain-name-servers 192.0.34.43, 193.0.0.236;
这一行指定客户端应该使用的DNS服务器,该选项可以用于全局参数或者子网参数。
default-lease-time 6000;max-lease-time 7200;
这两行是相关的,default-lease-time指定客户端需要刷新配置信息的时间间隔(秒),max-lease-time为客户端用于无法从服务器获得任何信息的时间,超过该时间则会丢弃之前从该DHCP服务器获得的所有信息,而转向使用OS的默认设置。
authoritative;
指定当一个客户端试图获得一个不是该DHCP服务器分配的IP信息,DHCP将发送一个拒绝消息,而不会等待请求超时。当请求被拒绝,客户端会重新向当前DHCP发送IP请求获得新地址。
log-facility daemon;
指定DHCP服务器发送的日志信息的日志级别。
ddns-update-style none;
该配置可以指定一个方法,客户端用该方法来更新IP对应的域名信息,本例中禁用了该特性。
subnet 192.168.200.0 netmask 255.255.255.0 {
option domain-name “corp.example.com”;
range 192.168.200.100 192.168.200.200;option routers 192.168.200.254;}
上面内容为子网配置,第1行指定该子网地址和掩码。DHCP服务器必须拥有该子网的一个IP,domain-name设置该客户端的域名。DHCP服务器可以负责整个子网的信息,也可以只负责子网的一段。
option routers配置默认网关IP。
启动DHCP服务器
1.建立客户端租约文件
运行DHCP服务器还需要一个名为“dhcpd.leases”的文件,其中保存所有已经分发的IP地址。在Red Hat Linux发行版本中,该文件位于/var/lib/dhcp/目录中。如果通过RPM安装ISC DHCP,那么该目录应该已经存在。dhcpd.leases的文件格式为:
Leases address {statement}
一个典型的文件内容如下:
lease 192.168.1.255 { #DHCP服务器分配的IP地址#
starts 1 2005/05/02 03:02:26;# lease 开始租约时间#
ends 1 2005/05/02 09:02:26;# lease 结束租约时间#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86;#客户机网卡MAC地址#
uid “010000350240%206”;#用来验证客户机的UID标志#
client-hostname “cjh1”;#客户机名称# }
注意:lease开始租约时间和lease结束租约时间是格林威治标准时间(GMT),不是本地时间。第1次运行DHCP服务器时,dhcpd.leases是一个空文件,也不用手工建立。如果不是通过RPM安装ISC DHCP,或者dhcpd已经安装,那么应该试着确定dhcpd将其lease文件写到何处并确保该文件存在。也可以手工建立一个空文件:
#touch /var/lib/dhcp/dhcpd.leases
2.启动和检查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:29 pts/2 00:00:00 grep dhcpd
使用netstat检查dhcpd运行的端口:
# netstat-nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
3.设置DHCP转发代理
DHCP的转发代理(dhcrelay)允许把无DHCP服务器子网内的DHCP和BOOTP请求转发给其他子网内的一台或多台DHCP服务器。当某个DHCP客户端请求信息时,DHCP转发代理把该请求转发给DHCP转发代理启动时所指定的一台DHCP服务器。当某台DHCP服务器返回一个回应时,该回应被广播或单播给发送最初请求的网络。除非使用INTERFACES指令在/etc/sysconfig/dhcrelay文件中指定了接口,否则DHCP转发代理监听所有接口上的DHCP请求。要启动DHCP转发代理,使用命令:
service dhcrelay start
4.从指定端口启动DHCP服务器
如果系统连接不止一个网络接口,但是只想让DHCP服务器启动其中之一,则可以配置DHCP服务器只在相应设备上启动。在/etc/sysconfig/dhcpd中,把接口的名称添加到DHCPDARGS的列表中: # Command line options here
DHCPDARGS=eth0
如果有一个带有两块网卡的防火墙机器,这种方法就会大派用场。一块网卡可以被配置成DHCP客户端从互联网上检索IP地址;另一块网卡可以被用做防火墙之后的内部网络的DHCP服务器。仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接其守护进程。
其他可在/etc/sysconfig/dhcpd中指定的命令行选项如下。
(1)-p
:指定dhcpd应该监听的UDP端口号码,默认值为67。DHCP服务器在比指定的UDP端口大一位的端口号上把回应传输给DHCP客户端。例如,如果使用默认端口67,服务器就会在端口67上监听请求,然后在端口68上回应客户。如果在此处指定了一个端口号,并且使用了DHCP转发代理,所指定的DHCP转发代理所监听的端口必须是同一端口。
(2)-f:把守护进程作为前台进程运行,在调试时最常用。
(3)-d:把DCHP服务器守护进程记录到标准错误描述器中,在调试时最常用。如果未指定,日志将被写入/var/log/messages中。
(4)-cf
(5)-lf
(6)-q:在启动该守护进程时,不要显示整篇版权信息 5.管理DHCP服务器端口
常见的DHCP服务器是dhcpd,可以通过命令行设定其监听端口。例如,使用以下命令:
#dhcpd eth0
该命令允许dhcpd进程只在eth0网络端口上工作,默认为监听所有端口。由于DHCP同样使用67和68端口通信,所以更改该端口将造成DHCP服务无法正常使用。
设置DHCP客户端
1.在Linux下配置DHCP客户端 配置DHCP客户端的第1步是确定内核能够识别网卡,多数网卡会在安装过程中被识别,系统会为该网卡配置恰当的内核模块。如果在安装后添加了一块网卡,Kudzu应该会识别它,并提示为其配置相应的内核模块。通常网管员选择手工配置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的设备都需要一个配置文件。其他网络脚本包括的选项如下。
(1)DHCP_HOSTNAME:只有当DHCP服务器在接收IP地址前需要客户端指定主机名时才使用该选项。
(2)PEERDNS=:取值为如下之一。
yes:使用来自服务器的信息来修改/etc/resolv.conf。若使用DHCP,那么yes是默认值。
no:不要修改/etc/resolv.conf。
(3)SRCADDR=:是用于输出包的指定源IP地址。
(4)USERCTL=:取值为如下之一。
yes:允许非根用户控制该设备。
no:不允许非根用户控制该设备。
2.在Windows下设置DHCP客户端
Windows 2000和Windows XP的配置方法相同,DHCP客户端的配置很简单。只需要在“控制面板”中双击“网络连接”图标,然后在如图8-1所示的“本地连接属性”对话框中选择“Internet协议(TCP/IP)”属性。“常规”选项卡中选择“自动获取IP地址”和“自动获取DNS服务器地址”单选按钮。
3.测试端口监督程序
现在应该已经可以将一个客户机接入到网络中,并通过DHCP请求一个IP地址。要通过Windows客户端测试,在DOS提示符下执行以下操作。
(1)清除适配器可能已经拥有的IP地址信息,执行命令:
ipconfig /release
(2)向DHCP服务器请求一个新的IP地址,执行命令:
ipconfig /renew
显示从DHCP服务器获得的信息,应该会看到Primary WINS Server、DNS Servers和Connection-specific DNS Suffix域都获得了dhcpd.conf文件中提供的数据:
ipconfig /all
DHCP服务器的故障排除
通常配置DHCP服务器很容易,有一些技巧可以帮助避免出现问题。对服务器而言,要确保网卡正常工作并具备广播功能;对客户端而言,要确保网卡正常工作。最后,要考虑网络的拓扑,以及客户端向DHCP服务器发出的广播消息是否会受到阻碍。另外,如果dhcpd进程没有启动,那么可以浏览syslog消息文件来确定是哪里出了问题,这个消息文件通常是/var/ log/messages。
客户端无法获取IP地址
DHCP服务器配置完成且没有语法错误,但是网络中的客户端却无法取得IP地址。这通常是由于Linux DHCP服务器无法接收来自255.255.255.255的DHCP客户端的request封包造成的,一般是Linux DHCP服务器的网卡没有设置MULTICAST功能。为了让dhcpd(dhcp程序的守护进程)能够正常地和DHCP客户端沟通,dhcpd必须传送封包到255.255.255.255这个IP地址。但是在有些Linux系统中,255.255.255.255这个IP地址被用来作为监听区域子网域(local subnet)广播的IP地址。所以需要在路由表(routing table)中加入255.255.255.255以激活MULTICAST功能,执行命令:
route add-host 255.255.255.255 dev eth0
如果报告错误消息:
255.255.255.255:Unkown host
那么修改/etc/hosts,加入如下行:
255.255.255.255 dhcp
DHCP客户端程序和DHCP服务器不兼容
由于Linux有许多发行版本,不同版本使用的DHCP客户端和DHCP服务器程序也不相同。Linux提供了4种DHCP客户端程序,即pump、dhclient、dhcpxd和dhcpcd。了解不同Linux发行版本的服务器端和客户端程序对于排除常见错误是必要的,如果使用SuSE Linux 9.1 DHCP服务器和使用Mandrake Linux 9.0客户端不兼容的情况,则必须更换客户端程序。方法是停止客户端的网络服务,卸载原程序,然后安装和服务器端兼容的程序。表8-4所示为主要Linux发行版本使用的DHCP客户端。
主要Linux发行版本使用的DHCP客户端
发行版本
默认DHCP客户端
可选DHCP客户端
DHCP客户端启动脚本
附加配置文件
RHEL 4.0 dhclient
无
/sbin/ifup
/etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 Debian Linux 3.0 dhclient
无
/sbin/ifup /etc/network/interfaces /etc/dhclient.conf Mandrake Linux 9.1 dhclient
dhcpcd、dhcpxd和pump /sbin/ifup
/etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/dhclient-eth0.conf SuSE Linux 9.1 dhcpcd dhclient
/sbin/ifup-dhcp
/etc/sysconfig/network/dhcp /etc/sysconfig/network/ifcfg-eth0 管理监控DHCP服务器
/etc/dhcpd.conf通常包括3个部分,即parameters、declarations和option,共40多个参数,可以使用Gdhcpd管理监控DHCP服务器。
Gdhcpd是一个在GNOME及KDE桌面环境下的DHCP管理工具,基本上能实现命令行模式下的所有功能。由于DHCP是一个非常复杂的协议,所以配置工作也是比较麻烦的。
Gdhcpd是一套在GTK+图形界面下开发并用于帮助管理员在桌面环境下完成DHCP设置工作的DHCP前端程序。通过Gdhcpd,网络管理员可以管理DHCP,包括启动及停止DHCP服务器的服务。也可以直接修改配置文件,或决定系统重新启动的时间。几乎所有与DHCP相关的功能都能使用Gdhcpd直接完成。1.下载安装 #Wget linux/gdhcpd/gdhcpd-0.2.9.tar.gz">http://mange.dynalias.org/linux/gdhcpd/gdhcpd-0.2.9.tar.gz 2.系统要求
硬件要求为中央处理器兼容Intel X86处理器,PentiumII 400以上,64 MB(推荐128 MB)内存,150 MB以上硬盘空间,显示内存4 MB。软件要求为内核版本基于2.4或以上,GNOME 1.2以上。桌面分辨率至少为640×480,桌面颜色至少65 000色(16位元)。3.安装前的准备工作
安装过程中需要编译,因此需要GCC(2.96以上)、Qt(2.0以上)和GTK+2.0支持,需要使用RPM来确认:
rpm-qa | grep gcc;rpm-qa | grep qt;rpm-qa | grep gtk+ 4.在命令行下安装软件 命令如下:
gunzip gdhcpd-0.2.9.tar.gz tar vxf gdhcpd-0.2.9.tar cd gdhcpd-0.2.9./configure;make;make install 5.运行软件
执行一个终端运行命令“/usr/sbin/gdhcpd”,显示Scopes设置界面,如图所示。Scopes设置界面
在这个界面中可以设置/etc/dhcpd.conf的parameters、declarations及option。在Single hosts界面中可以设置Hostname和Hardware address等,Single hosts设置界面
在中型网络中,数百台计算机的IP地址的管理是一个大问题。为了解决这个问题,相信许多校园网网管会使用DHCP来动态地为客户端分配IP地址。但是这同样意味着如果DHCP服务器因为某种原因瘫痪,DHCP服务自然也就无法使用。客户端也就无法获得正确的IP地址,从而影响整个网络的运行。为解决这个问题,配置两台以上的DHCP服务器即可。如果其中的一台DHCP服务器故障,另外一台DHCP服务器就会自动承担分配IP地址的任务。对于用户来说,这个过程是透明的,他们并不知道DHCP服务器的变化。
另外,在一个具备多个子网的网络中,提供冗余是一个非常重要的方法。由于DHCP中DHCP服务器负责分配IP地址,一旦DHCP服务器出现故障,那么所有的客户端就无法正确获得IP地址,从而不能访问网络。
可以同时设置多台DHCP服务器来提供冗余,然而Linux的DHCP服务器本身不提供备份。它们占用的IP地址资源也不能重叠,以免发生客户端IP地址冲突的现象。提供容错能力即通过分割可用的IP地址到不同的DHCP服务器上,多台DHCP服务器同时为一个网络服务,从而使得一台服务器发生故障还能正常执行操作。通常为了进一步增强可靠性,还可以将不同的DHCP服务器放置在不同子网中,互相使用中转提供服务。
例如,在两个子网中各自有一台DHCP服务器。标准的做法可以不使用DHCP中转,各子网中的服务器为各个子网服务。然而为了达到容错的目的,可以互相为另一个子网提供服务,通过设置中转或路由器转发广播以达到互为服务的目的。
例如,位于192.168.3.0网络上的srv1的配置文件片段为: subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.199;
}
subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.200 192.168.4.220;} 位于192.168.4.0网络上的srv2的配置文件片段可能为: subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.10 192.168.4.199;}subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.200 192.168.3.220;} 注意:上述设置都是设置样例,标准情况下还需分别指定各option,用于设置IP地址及其相关设置。
可以看出两台服务器都能为两个网络上的客户端分配IP地址,而各自又有一个主要服务的网络。每个网络上的IP地址主要放在本地的服务器上,但也有少部分地址放在另一台子网中的服务器中(地址资源不能冲突),这样提供了一定的容错能力。实际上在多子网网络中,没有必要每个子网设置一台服务器,并使用另外的服务器备份。一般网络中有2台~3台DHCP服务器即可。其他子网可以通过DHCP中转的方式,为该子网提供DHCP服务。以debug模式运行DHCP服务器 执行命令如下: #dhcpd-d 该命令指明dhcpd将出错信息记录到标准的错误描述器,记录的信息将根据/etc/syslog.conf文件的配置保存在指定的文件中。例如,在/etc/syslog.conf文件中要指定记录debug信息:
logalldebuginformationinto/var/log/dameon.log dameon.=debug/var/log/dameon.log
小结
网络管理的DHCP服务器 篇6
关键词:DHCP,交换机,VLAN,IP
使用TCP/IP协议组成的网络中, 计算机之间的通信都要依靠主机的IP地址进行, 在网络中, 每一台服务器、工作站都有一个惟一的IP地址。而IP地址是由网络管理员进行分配, IP地址的分配方式是对于网络进行有效的管理的重要方法。通常情况下有两种:
(1) 按照网络管理员的地址规划进行手工设置的静态的IP地址。
(2) 使用安装有DHCP服务的服务器来动态分配IP地址。
静态分配方案需要在每一台工作站计算机的TCP/IP协议设置处填写IP地址, 会给网络管理员带来较大的工作量, 使用过程中比较容易出现IP地址重复的问题。因此, 出于对网络管理的简便和安全方面的考虑, 通常选择基于DHCP的动态地址分配方案。DHCP方案可以自动地为工作站指定IP地址、子网掩码、默认网关、DNS及WINS服务器地址等信息, 在工作站端不需要进行任何设置。
同样给网络划分Vlan可以减少同一广播域内客户端的数量, 从而有效防止广播风暴等故障的出现。
1 DHCP在多VLAN中应用的可行性
从DHCP的工作原理我们可以看出, 在客户机和服务器之间进行联系的消息是以广播的形式进行的, 这在一个基于共享或没有划分VLAN的交换网络中是很容易实现的。如果客户机分散在多个vlan中, 那么DHCP发出的广播信息就无法在多个vlan中进行广播, 广播信息只限于客户机所在的VLAN, 不在同一个VLAN中, 请求信息将不能传送到DHCP服务器, 也就不能自动地获得IP地址及相关配置参数。针对这个问题, 我们可以在每个VLAN中都设置一台DHCP服务器, 客户机通过位于同一个VLAN的DHCP服务器获得IP地址、子网掩码、默认网关和DNS服务器地址等信息。但这种解决方式需要设置多台计算机作为DHCP服务器, 不仅需要较多的资金投入而且服务器的维护工作量也比较大。三层交换机中的DHCP中继功能为我们提供了一个非常好的解决方案。通过启动每个VLAN及三层交换机中相关端口的DHCP中继功能, VLAN的接口地址也就是默认网关收到该VLAN中客户机发出的DHCP请求广播信息后, 由该默认网关充当DHCP代理的角色将请求信息转发给DHCP服务器。在DHCP中继中, 每个VLAN的接口地址都作为该VLAN的DHCP代理。利用DHCP中继功能只需要在网络中设置一台DHCP服务器即可, 并且DHCP服务器可以位于任何一个VLAN中, 只需要在设置DHCP中继参数的时候, 指定DHCP服务器的地址就可以了。
利用DHCP中继功能在多VLAN的网络中应用DHCP, 需要对三层交换机和DHCP服务器进行相关的设置。
2 配置三层交换机的DHCP功能
三层交换机中的设置主要是启动VLAN及相应端口的DHCP中继, 并设定DHCP中继中代理的地址及DHCP服务器地址等参数。以三层交换机STAR-S3550为例, 网络中存在三个VLAN, 其接口地址分别为192.168.1.254、192.168.2.254和192.168.3.254;DHCP服务器的地址为192.168.1.1, 三层交换机中需要启动DHCP中继的端口为1/1, 1/2, 1/3, 2/1和2/2。
进入到STAR-S3550的命令行设置界面, 执行如下的命令:
conf vlan 1 ip dhcp-relay enable //启动VLAN 1 的DHCP中继功能//
conf vlan 2 ip dhcp-relay enable //启动VLAN 2 的DHCP中继功能//
conf vlan 3 ip dhcp-relay enable //启动VLAN 3 的DHCP中继功能//
conf ethernet 1/1-1/3 ip dhcp-relay enable //启动端口1/1-1/3的DHCP中继功能//
conf ethernet 2/1-2/2 ip dhcp-relay enable //启动端口2/1-2/2的DHCP中继功能//
conf ip dhcp-relay create-fwd-path agent 192.168.1.254 server 192.168.1.1 mode bootp_dhcp state enable
//为DHCP中继指定转发的路径, 中继代理的地址为VLAN 1 的接口地址, DHCP服务器的地址为192.168.1.1, 允许的模式是BOOTP和DHCP均可//
conf ip dhcp-relay create-fwd-path agent 192.168.2.254 server 192.168.1.1 mode bootp_dhcp state enable //同上//
conf ip dhcp-relay create-fwd-path agent 192.168.3.254 server 192.168.1.1 mode bootp_dhcp state enable //同上//
3 在DHCP服务器中为三个VLAN分别配置作用域
在网络上, 任一台安装有Windows 2000/2003 Server系统的计算机, 都可充当DHCP服务器。添加上DHCP服务后, 就可通过配置DHCP服务器, 为每个VLAN设置可供自动分配的IP地址范围、租约期限、默认网关, DNS服务器的地址等信息。如果希望在VLAN中保留一些IP地址作为服务器或特定工作站的固定IP地址, 可以在设置的过程中将这些IP地址排除。以上例中三个VLAN为例对具体的操作说明如下:
(1) 设置IP地址范围
单击“开始”→“程序”→“管理工具”→“DHCP”, 打开“DHCP Server”窗口, 点击“操作”菜单的“新建作用域”项, 弹出“新建作用域向导”窗口, 单击“下一步”按钮, 在出现的“作用域名”窗口中, 为新建的作用域起一个标识名称并输入描述信息, 点击“下一步”, 进入“IP地址范围”窗口, 在“起始IP地址”和“终止IP地址”输入框处输入192.168.1.1和192.168.1.253, 并设定子网掩码的长度为24, 即255.255.255.0。如图所示。
点击“下一步”, 弹出“添加排除”窗口, 在“起始IP地址”和“终止IP地址”输入框处输入192.168.1.1和192.168.1.20, 单击“添加”按钮添加到列表中。这个范围内IP地址将不用于分配给客户机。如果要排除单个地址, 只在“起始IP地址”输入要排除的地址即可, 如192.168.1.200。如图所示。
如果没有要排除的地址, 则单击“下一步”。
(2) 设定租约
在“租约期限”窗口中, 可以根据需要设定客户机可以保留分配给它的IP地址的租约期限, 默认为8天, 可以根据具体的需要进行调整。
(3) 设定默认网关
在“配置DHCP选项”窗口中, 确认“是, 我现在想配置这些选项”处于选中状态, 单击“下一步”进入“路由器 (默认网关) ”窗口, 在“IP地址”处输入VLAN 1的接口地址192.168.1.254, 单击“添加”按钮将地址添加到列表中。
(4) 设定DNS服务器地址
在“域名称和DNS服务器”窗口中, 在“IP地址”处输入网络中DNS服务器的地址, 本例中DNS服务器的地址为192.168.1.200, 也就是步骤 (1) 中排除的那个地址。
(5) 激活该作用域
在设置完DNS服务器地址和WINS服务器地址后, 进入“激活作用域”窗口, 确认“是, 我想现在激活此作用域”处于选择状态, 单击“下一步”, 完成VLAN 1的作用域设置。
(6) 按照VLAN 1作用域的设置步骤, 完成VLAN 2和VLAN 3的作用域设置。
至此, 完成了DHCP服务器的相关设置。为了保证网络的可靠性, 可以在网络中设置两台DHCP服务器, 这两台服务器可以位于同一个VLAN, 也可以位于不同的VLAN中。
【网络管理的DHCP服务器】推荐阅读:
网络技术集成管理服务10-30
网络出版服务管理规定07-06
浅谈管理网络服务协议书08-16
促进网络服务交易健康发展规范网络服务交易行为的指导意见09-05
上海市9月1日出台《上海市网络餐饮服务监督管理办法》09-06
网络服务器07-29
网络时间服务器06-16
网络接入服务器07-24
的网络管理技巧06-29