免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1181 | 回复: 0
打印 上一主题 下一主题

DHCP技术(整理版)[转贴] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-25 10:12 |只看该作者 |倒序浏览

DHCP基本知识点
1 DHCP协议在RFC2131种定义,使用udp协议进行数据报传递,使用的端口是67以及68。
2 DHCP最常见的应用是,自动给终端设备分配ip地址,掩码,默认网关,但是DHCP也同样可以给终端设备自动配置其他options,比如DNS server, 域名(比如 net130.com),time zones, NTP servers 以及其他的配置内容,更有些厂家,利用自己开发的第3放软件,把自己的一些配置信息,利用dhcp协议来实现对终端设备的自动配置。
3 DHCP服务的系统最基本的构架是 client/server模式,并且如果client 和server不再同一个2层网络内(即广播可以到达的网络范围),则必须要有能够透过广播报文的中继设备,或者能把广播报文转化成单播报文的设备(cisco的ios就引经了这种功能)
There are three distinct element types in a DHCP network. There must be a client and a server. If these two elements are not on the same Layer 2 network, there also must be a proxy, which usually runs on the router. The proxy is needed because the client device initially doesn't know its own IP address, so it must send out a Layer 2 broadcast to find a server that has this information. The router must relay these broadcasts to the DHCP server, then forward the responses back to the correct Layer 2 address so that the right end device gets the right configuration information.
4 CISCO的路由器(IOS12.0 T1以后),可以配置为dhcp的中继设备,DHCP的客户端设备,也可以配置为DHCP的服务器。
5 同一个网段DHCP服务器可以有多个,这不会影响终端设备从服务器获取配置信息,终端设备以接受到的第一组配置信息为准。以后又服务器段返回的DHCP配置信息被抛弃。
. Most DHCP networks of any size include two or more DHCP servers for redundancy. The end devices typically just need to talk to a DHCP server at startup time, but they will not work at all without it. So redundancy is important. This also means that it is not unusual for an end device to see several responses to a DHCP request. It will generally just use the first response. However, this also underscores the importance of ensuring that all of the DHCP servers distribute the same information. Their databases of end device configuration parameters must be synchronized.
6 DHCP 服务器往往遵守先来先服务的规则(first-come, first-served),或者说他能够建立一个IP地址和终端设备MAC地址之间的映射表(或者叫做database),由此可以保证特定的终端(也就是特定的MAC)每次开机后都能够获得此相同的ip地址。
.The server can allocate IP addresses from a pool on a first-come, first-served basis, or it can associate IP addresses with end device MAC addresses to ensure that a particular client always receives the same address.
用 IP Helper Addresses 命令配置DHCP中继服务
1典型配置命令
The ip helper-address configuration command allows the router to forward local DHCP requests to one or more centralized DHCP servers:
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Ethernet0
Router1(config-if)#ip helper-address 172.25.1.1 /*指定dhcp服务器的地址,表示通过Ethernet0向该服务器发送DHCP请求包*/
Router1(config-if)#ip helper-address 172.25.10.7 /*作用同上*/
Router1(config-if)#end
Router1#

关于以上配置的讨论
1 在客户端设备和DHCP服务器不再同一广播域内的时候,中间设备即路有器(路有功能的设备)必须要能够转发这种广播包,具体到cisco的设备上,则启用ip helper-address命令,来实现这种中继。
2 DHCP服务器要给终端设备分配地址则需要掌握两个重要的信息,第一,该客户端设备所在网络的子网掩码,DHCP服务器依据子网掩码的信息来判断,服务器该分配哪个IP地址,以使得该ip地址在那个子网内,第二,DHCP服务器必须知道客户端的MAC地址,以维护DHCP服务器的ip 地址和MAC之间的映射关系,由此保证同样一台客户机,每次启动后能获得和前一次相同的ip地址。
3 配置了ip helper-address命令之后的路由器在中继DHCP请求时的工作过程如下
a,DHCP客户端发送请求,由于没有ip地址,所以自己的源IP地址为0.0.0.0,而且也不知道目的DHCP服务器的地址,所以为广播255.255.255.255。该数据报中当然还包含其他信息,比如二层的信息,源mac地址,和目的mac地址FFFFFFFFFFFF。
b,当路由器接收到该数据报的时候,他就用自己的接口地址(接收到数据报的接口)来取代源地址0.0.0.0,并且用ip help-address 命令中指定的地址(上例中为172.25.1.1以及172.25.10.7)来取代目的地址255.255.255.255
The router must replace the source address with its own IP address, for the interface that received the request. And it replaces the destination address with the address specified in the ip helper-address command. The client device's MAC address is included in the payload of the original DHCP request packet, so the router doesn't need to do anything to ensure that the server receives this information.
c 当DHCP服务器接收到路有器转发过来的DHCP请求包时,他有了足够的信息,(由源IP地址中的地址,确定客户机所在的子网掩马,由此分配相应地址池中的空闲地址,并且知道了客户记得MAC地址,把它写入自己的数据库,建立IP地址和MAC的映射关系)然后DHCP服务器做出响应,并且由路有器把数据报转发会客户端。(整个过程应该在客户机和服务器之间还有一次会话,由于这不是路由器DHCP配置的讨论重点,这里不谈)
4 例子中配置了两个DHCP服务器,我们必须分别用ip helper-address 命令指明,路有器会转发DHCP请求包到所有的DHCP服务器上。很多企业的做法都是至少有两台DHCP服务器,有提高冗余和可靠性的作用。此时,如果客户端受到几个来自不同DHCP服务器的应答,则只选择最先接收到的应答数据报。
5 必须要注意的是;ip helper-address 命令不仅仅是只转发DHCP请求包,事实上,在默认情况下,他还转发其他的UDP报(比如DNS请求)到ip helper-address命令所指定的服务器上,所以这种额外的数据流量可能会增加DHCP服务器链路的负担以及服务器CPU负担,可能会引起问题,关于解决办法,将在后面讨论。
最后 用show ip interface 显示相关的ip help-address配置信息:
Router1#show ip interface Ethernet0
Ethernet0 is up, line protocol is up
Internet address is 192.168.30.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper addresses are 172.25.1.3
172.25.1.1

Directed broadcast forwarding is disabled
Router1#
在配置了dhcp中继的路由器上,禁止无意义udp广播报的转发
问题的提出:
正如前面章节说描述的那样,路由器上配置IP helper addresses命令后,默认情况下路由器不仅转发dhcp请求,同时也转发其他的udp报,这样很可能会增加DHCP 服务器所在链路的负担,同时也增加了DHCP 服务器的CPU利用率,这可能会引起很严重的网络通信问题。
所以cisco 的ios 提供了限制ip helpe-address 命令所带来的负面影响的方法。
解决实例;
CISCO路由器允许用no ip forward-protocol udp 命令来禁止对所无意义的UDP`数据报的转发

Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#no ip forward-protocol udp tftp
//禁止转发tftp请求数据报文
Router1(config)#no ip forward-protocol udp nameserver
//禁止转发nameserver请求数据报文
Router1(config)#no ip forward-protocol udp domain
//禁止转发domain请求数据报文
Router1(config)#no ip forward-protocol udp time
//禁止转发time请求数据报文
Router1(config)#no ip forward-protocol udp netbios-ns
//禁止转发netbios-ns请求数据报文
Router1(config)#no ip forward-protocol udp netbios-dgm
//禁止转发netbios-dgm请求数据报文
Router1(config)#no ip forward-protocol udp tacacs
//禁止转发tacacs请求数据报文
Router1(config)#end
Router1#

关于配置的相关讨论;
1 配置了DHCP中继的路由器,默认情况下也转发下列udp 广播报文.
2 尤其是在windows的网络环境中,在没有配置no ip forward-protocol udp 的情况下,DHCP 服务器会接受到来自各个不同网段的大量的NetBIOS 请求报文,这通常是引起网络拥挤,阻塞的一个很大的原因,所以作为一个基本的配置准则,我们推荐你使用no ip forward-protocol udp netbios-ns 和 no ip forward-protocol udp netbios-dgm 这两条配置命令来限制路由器向DHCP服务器转发NetBIOS请求报文。
3 上面的实例中禁止了所有不必要的协议的转发,在实际的应用中,很多大公司通常只禁止NetBIOS 请求报文的转发,这主要是因为NetBIOS 报文是引起网络问题的关键原因所在。
4 必须认识到,配置了udp中继(ip hlpe-address x.x.x.x.)的路由器并没有实现针对不同协议,转发到不同的(或者说指定的服务器上)的功能。她会傻傻的,一古脑儿的把所有的协议(上表中所列的协议),义无反顾的发往所有的服务器。
例如,有server1 为dhcp 服务器(1.1.1.1 ) server2 为dns服务器(2.2.2.2)
在路由器上 配置如下后
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Ethernet0
Router1(config-if)#ip helper-address 1.1.1.1
Router1(config-if)#ip helper-address 2.2.2.2
Router1(config-if)#end
Router1#

实际效果是,不管是server1还是server2都将接收到包括dhcp请求,dns请求,以及其他udp的请求报文。
配置路由器为DHCP客户端,使之动态获取ip地址
问题的提出:
有时候,你会希望自己的网络中的路由器动态获取ip地址(即配置路由器作为dhcp服务的客户端),这种情况通常是不多见的,我们也强烈不建议这么做,因为路由器作为网络中间设备需要有高度的可管理性以及可靠性,而动态地址是我们的路由器管理变得更加复杂和不稳定。
但是,有一种情况比较适合配置路由器为dhcp客户端,那就是路由器作为局域网(或者说内部网)的边界连接到isp的时候。
解决实例;
用ip address dhcp client-id 命令来配置路由器为DHCP的客户端,由此动态获取ip地址
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Ethernet0
Router1(config-if)#ip address dhcp client-id Ethernet0 //开启DHCP的客户端,以使得该接口动态的从DHCP服务器端获得IP地址
Router1(config-if)#end
Router1#
Interface Ethernet0 assigned DHCP address 172.25.1.57, mask 255.255.255.0
Router1#

关于配置的相关讨论;
1 CISCO的IOS在版本12.1(2)T之后,加入了DHCP客户端以及DHCP服务器端功能,也就是说,在这之前的IOS只能配置DHCP的中继功能(ip helper-address)。
2 和普通的DHCP客户端一样,路由器配置为DHCP客户端后,也可以自动获得除ip地址以外的相关配置信息,例如网络掩码,默认网关,域名,DNS SERVER的ip地址。但是,要记住如果路由器本身用命令静态配置了域名,则路由器自身静态配置的域名为最终配置结果,而对于DNS SERVER 的信息,则是把动态获取的DNS SERVER ip 地址以追加的方式加入到静态配置表中去。
3 下面的输出是路由器动态获得默认路由的情况下的输出,输出显示由DHCP动态获得的路由条目为S(静态),AD(管理距离为254),这里值得注意的是AD自动被设置为254,由此保证由DHCP获得的路由是作为最后路由被路由器选择的,也就是说只有在静态路由,以及其他动态路由协议的路由表中不存在相应的路由条目的时候才被选择。
Router1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is 172.25.1.1 to network 0.0.0.0
172.25.0.0/24 is subnetted, 1 subnets
C 172.25.1.0 is directly connected, Ethernet0
S* 0.0.0.0/0 [254/0] via 172.25.1.1
Router1#
4 在ISP的解决方案中,一般都会给路由器分配域名以及DNS server地址等信息。
可用show host命令来查看相关的信息;下面的例子显示了通过dhcp获得域名,以及DNS server地址等信息;
Router1#show host
Default domain is oreilly.com
Name/address lookup uses domain service
Name servers are 255.255.255.255, 172.25.1.1
Host Port Flags Age Type Address(es)
[/url]
None (temp, OK) 0 IP 192.168.22.57
Router1#
5 一般可以用show ip interface命令来查看路由器通过dhcp获得的ip地址等相关信息,看下面的例子
Router1#show ip interface
Ethernet0 is up, line protocol is up
Internet address is 172.25.1.57/24
Broadcast address is 255.255.255.255
Address determined by DHCP
MTU is 1500 bytes
6 最后,再次强调不推荐把路由器配置为dhcp的客户端。当然下面两种情况除外,
■ 就是当路由器作为网络边界设备连接进isp的时候,可以考虑(比如现在很流行的adsl服务,往往就采用动态获取地址,这是不是一个很迷你的应用呢?)
■ 作为funs的娱乐手段,如果你却是觉得这个技术很有意思,想在其中遨游一番,你不妨躲进实验室好好的享受享受。
7 很遗憾,到现在为止cisco的路由器在配置为dhcp客户端的时候,并没有提供一种指定所要获取的信息的方法,也没有提供如何察看现有的动态获得的ip地址的所剩租期。相信,CISCO马上会在这方面有所改进。


本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u1/45250/showart_585156.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP