1、DHCP技术DHCP基本知识点1 DHCP协议在RFC2131种定义,使用udp协议进行数据报传递,使用的端口是67以及68。2 DHCP最常见的应用是,自动给终端设备分配ip地址,掩码,默认网关,但是DHCP也同样可以给终端设备自动配置其他options,比如DNS server, 域名(比如 ),time zones, NTP servers 以及其他的配置内容,更有些厂家,利用自己开发的第3放软件,把自己的一些配置信息,利用dhcp协议来实现对终端设备的自动配置。3 DHCP服务的系统最基本的构架是 client/server模式,并且如果client 和server不再同一个2层网络内
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
3、 needed because the client device initially doesnt 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
4、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 t
5、ypically 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 un
6、derscores 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)每次开机后都能
7、够获得此相同的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 confi
8、guration 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 Ethernet0Router1(config-if)#ip helper-address 172.25.1.1 /*指定dhcp服务器的地址,表示通过Ether
9、net0向该服务器发送DHCP请求包*/Router1(config-if)#ip helper-address 172.25.10.7 /*作用同上*/Router1(config-if)#endRouter1# 关于以上配置的讨论1 在客户端设备和DHCP服务器不再同一广播域内的时候,中间设备即路有器(路有功能的设备)必须要能够转发这种广播包,具体到cisco的设备上,则启用ip helper-address命令,来实现这种中继。2 DHCP服务器要给终端设备分配地址则需要掌握两个重要的信息,第一,该客户端设备所在网络的子网掩码,DHCP服务器依据子网掩码的信息来判断,服务器 该分配哪个I
10、P地址,以使得该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, 当路由器接收到该数据报的
11、时候,他就用自己的接口地址(接收到数据报的接口)来取代源地址0.0.0.0,并且用ip help-address 命令中指定的地址(上例中为172.25.1.1以及172.25.10.7)来取代目的地址255.255.255.255The 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 t
12、he ip helper-address command. The client devices MAC address is included in the payload of the original DHCP request packet, so the router doesnt need to do anything to ensure that the server receives this information. c 当DHCP服务器接收到路有器转发过来的DHCP请求包时,他有了足够的信息,(由源IP地址中的地址,确定客户机所在的子网掩马,由此分配相应地址池中 的空闲地址,
13、并且知道了客户记得MAC地址,把它写入自己的数据库,建立IP地址和MAC的映射关系)然后DHCP服务器做出响应,并且由路有器把数据报 转发会客户端。(整个过程应该在客户机和服务器之间还有一次会话,由于这不是路由器DHCP配置的讨论重点,这里不谈)4 例子中配置了两个DHCP服务器,我们必须分别用ip helper-address 命令指明,路有器会转发DHCP请求包到所有的DHCP服务器上。很多企业的做法都是至少有两台DHCP服务器,有提高冗余和可靠性的作用。此时,如果客 户端受到几个来自不同DHCP服务器的应答,则只选择最先接收到的应答数据报。5 必须要注意的是;ip helper-addr
14、ess 命令不仅仅是只转发DHCP请求包,事实上,在默认情况下,他还转发其他的UDP报(比如DNS请求)到ip helper-address命令所指定的服务器上,所以这种额外的数据流量可能会增加DHCP服务器链路的负担以及服务器CPU负担,可能会引起问题, 关于解决办法,将在后面讨论。最后 用show ip interface 显示相关的ip help-address配置信息:Router1#show ip interface Ethernet0Ethernet0 is up, line protocol is upInternet address is 192.168.30.1/24Broa
15、dcast address is 255.255.255.255Address determined by setup commandMTU is 1500 bytesHelper addresses are 172.25.1.3172.25.1.1Directed broadcast forwarding is disabledRouter1#在配置了dhcp中继的路由器上,禁止无意义udp广播报的转发问题的提出:正 如前面章节说描述的那样,路由器上配置IP helper addresses命令后,默认情况下路由器不仅转发dhcp请求,同时也转发其他的udp报,这样很可能会增加DHCP 服务
16、器所在链路的负担,同时也增加了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 /禁止转发
17、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
18、)#no ip forward-protocol udp netbios-dgm/禁止转发netbios-dgm请求数据报文Router1(config)#no ip forward-protocol udp tacacs/禁止转发tacacs请求数据报文Router1(config)#endRouter1# 关于配置的相关讨论;1 配置了DHCP中继的路由器,默认情况下也转发下列udp 广播报文.2 尤 其是在windows的网络环境中,在没有配置no ip forward-protocol udp 的情况下,DHCP 服务器会接受到来自各个不同网段的大量的NetBIOS 请求报文,这通常是
19、引起网络拥挤,阻塞的一个很大的原因,所以作为一个基本的配置准则,我们推荐你使用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.)的路由器并没有实现针对不同协议,转
20、发到不同的(或者说指定的服务器上)的功能。她会傻傻的,一古脑儿的把所有的协议(上表中所列的协议),义无反顾的发往所有的服务器。例如,有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 Ethernet0Router1(config-if)#ip helper-address 1.1.1.1Rout
21、er1(config-if)#ip helper-address 2.2.2.2Router1(config-if)#endRouter1#实际效果是,不管是server1还是server2都将接收到包括dhcp请求,dns请求,以及其他udp的请求报文。配置路由器为DHCP客户端,使之动态获取ip地址问题的提出:有时候,你会希望自己的网络中的路由器动态获取ip地址(即配置路由器作为dhcp服务的客户端),这种情况通常是不多见的,我们也强烈不建议这么做,因为路由器作为网络中间设备需要有高度的可管理性以及可靠性,而动态地址是我们的路由器管理变得更加复杂和不稳定。但是,有一种情况比较适合配置路由器
22、为dhcp客户端,那就是路由器作为局域网(或者说内部网)的边界连接到isp的时候。解决实例;用ip address dhcp client-id 命令来配置路由器为DHCP的客户端,由此动态获取ip地址Router1#configure terminalEnter configuration commands, one per line. End with CNTL/Z.Router1(config)#interface Ethernet0Router1(config-if)#ip address dhcp client-id Ethernet0 /开启DHCP的客户端,以使得该接口动态的从D
23、HCP服务器端获得IP地址Router1(config-if)#endRouter1#Interface Ethernet0 assigned DHCP address 172.25.1.57, mask 255.255.255.0Router1#关于配置的相关讨论;1 CISCO的IOS在版本12.1(2)T之后,加入了DHCP客户端以及DHCP服务器端功能,也就是说,在这之前的IOS只能配置DHCP的中继功能(ip helper-address)。2 和普通的DHCP客户端一样,路由器配置为DHCP客户端后,也可以自动获得除ip地址以外的相关配置信息,例如网络掩码,默认网关,域名,DNS
24、SERVER的ip地址。但是,要记住如果路由器本身用命令静态配置了域名,则路由器自身静态配置的域名为最终配置结果,而对于DNS SERVER 的信息,则是把动态获取的DNS SERVER ip 地址以追加的方式加入到静态配置表中去。3 下面的输出是路由器动态获得默认路由的情况下的输出,输出显示由DHCP动态获得的路由条目为S(静态),AD(管理距离为254),这里值得注意的是AD自动被设置为254,由此保证由DHCP获得的路由是作为最后路由被路由器选择的,也就是说只有在静态路由,以及其他动态路由协议的路由表中不存在相应的路由条目的时候才被选择。Router1#show ip routeCode
25、s: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGPD - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter areaN1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGPi - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level
26、-2, ia - IS-IS inter area* - candidate default, U - per-user static route, o - ODRP - periodic downloaded static routeGateway of last resort is 172.25.1.1 to network 0.0.0.0172.25.0.0/24 is subnetted, 1 subnetsC 172.25.1.0 is directly connected, Ethernet0S* 0.0.0.0/0 254/0 via 172.25.1.1Router1#4 在I
27、SP的解决方案中,一般都会给路由器分配域名以及DNS server地址等信息。可用show host命令来查看相关的信息;下面的例子显示了通过dhcp获得域名,以及DNS server地址等信息;Router1#show hostDefault domain is Name/address lookup uses domain serviceName servers are 255.255.255.255, 172.25.1.1Host Port Flags Age Type Address(es)None (temp, OK) 0 IP 192.168.22.57Router1#5 一般可以
28、用show ip interface命令来查看路由器通过dhcp获得的ip地址等相关信息,看下面的例子Router1#show ip interfaceEthernet0 is up, line protocol is upInternet address is 172.25.1.57/24Broadcast address is 255.255.255.255Address determined by DHCPMTU is 1500 bytes6 最后,再次强调不推荐把路由器配置为dhcp的客户端。当然下面两种情况除外,就是当路由器作为网络边界设备连接进isp的时候,可以考虑(比如现在很流行
29、的adsl服务,往往就采用动态获取地址,这是不是一个很迷你的应用呢?) 作为funs的娱乐手段,如果你却是觉得这个技术很有意思,想在其中遨游一番,你不妨躲进实验室好好的享受享受。7 很遗憾,到现在为止cisco的路由器在配置为dhcp客户端的时候,并没有提供一种指定所要获取的信息的方法,也没有提供如何察看现有的动态获得的ip地址的所剩租期。相信,CISCO马上会在这方面有所改进。配置路由器为DHCP服务器,使之给dhcp客户端动态分配ip地址问题的提出:把路由器配置为dhcp的服务器端,以对路由器下所连接的客户工作站进行ip地址的分配。(这可真是一个了不起的改进!路由器从此腰身一变,看上去更加
30、多姿多彩了)解决实例;下面的配置命令,可以配置路由器为DHCP服务器,用以给DHCP客户端动态分配ip地址。Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z.Router1(config)#service dhcp /开启 DHCP 服务Router1(config)#ip dhcp pool 172.25.1.0/24 /定义DHCP地址池Router1(dhcp-config)#network 172.25.1.0 255.255.255.0 / 用network 命
31、令来定义网络地址的范围Router1(dhcp-config)#default-router 172.25.1.1 /定义要分配的网关地址Router1(dhcp-config)#exitRouter1(config)#ip dhcp excluded-address 172.25.1.1 172.25.1.50 /该范围内的ip地址不能分配给客户端Router1(config)#ip dhcp excluded-address 172.25.1.200 172.25.1.255 /该范围内的ip地址不能分配给客户端Router1(config)#endRouter1#关于配置的相关讨论;1 CISCO路由器的dhcp服务器功能也是在ios 12.0(1)T.以后才出现的,这一功能的出现,使我们没有必要在专门网络的中心(或者说企业本部)另外配置一台DHCP server,从而降低了网络构建成本。2 在路由器上直接配置dhcp服务器相比于传统的在专门服务器上实现dhcp有其独到的优点。比如 A 由于传统的构建方法是,在企业的总部设立DHCP服务器,各分支机构通过路有器去获取
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1