Linux ... ...
分类: 系统运维
2007-02-07 10:16:35
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.
在配置了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服务器的各种选项
问题的提出;
你希望在dhcp服务器中配置各种参数,已用来动态分配给dhcp客户端。
解决方案;
你可以通过下面的命令来配置各种dhcp参数。
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool ORAserver
Router1(dhcp-config)#host 172.25.1.34 255.255.255.0
Router1(dhcp-config)#client-name bigserver
Router1(dhcp-config)#default-router 172.25.1.1 172.25.1.3
Router1(dhcp-config)#domain-name oreilly.com
Router1(dhcp-config)#dns-server 172.25.1.1 10.1.2.3
Router1(dhcp-config)#netbios-name-server 172.25.1.1
Router1(dhcp-config)#netbios-node-type h-node
Router1(dhcp-config)#option 66 ip 10.1.1.1
Router1(dhcp-config)#option 33 ip 24.10.1.1 172.25.1.3
Router1(dhcp-config)#option 31 hex 01
Router1(dhcp-config)#lease 2
Router1(dhcp-config)#end
Router1#
关于配置的相关讨论;
1
dhcp可以动态分配除ip 地址以外的默认路由,域名,域名服务器的地址,wins
服务器的地址等信息给客户端。在RFC2132种定义了大量的标准配置选项,可以在那里阅读到更加详细的信息。但是大部分的DHCP配置往往只是用到其中
规定的很小的一部分常用选项。
2 为了配置的简单化和易于理解,cisco提供了一些人类易于理解的别名来代替RFC2132种规定的配置选项.
然你既可以使用cisco提供的用户友好的别名来配置,也可以用option number命令来配置,这两种方式cisco的ios都是可接受的。
比如说
RFC 2132 中的option 6是表示域名服务器的地址,则以下的两种命令行结果一样;
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool 172.25.2.0/24
Router1(dhcp-config)#dns-server 172.25.1.1
Router1(dhcp-config)#end
Router1#
配置方式一
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool 172.25.2.0/24
Router1(dhcp-config)#option 6 ip 172.25.1.1
Router1(dhcp-config)#end
Router1#
配置方式二
值得注意的是,你配置路由器的时候敲入的是配置2的命令,但是show runining configuration 命令得到则是他的用户友好的别名,这可能会使你有些疑惑,但是实际上其结果是一样的,请你放心。
3 有些配置选项可以接受多个配置参数,例如默认路由以及域名服务器都可以接受最多八个地址的配置,上面例子中就分别配置了两个默认路由器(默认网关)和两个域名服务器的地址。
4
为了配置的方便,你也可以采用继承的方法来配置各种参数。如下实例,首先配置父亲的dhcp地址池 ROOT
(172.25.0.0/16),其次我们又配置了两个子地址池172.25.1.0/24
和172.25.2.0/24。这两个子地址池,能够自动继承父亲地址池的配置信息。当然,如果子地址池的配置信息和父亲地址池的配置信息重复,则孩子地
址池的信息覆盖父亲地址池的配置信息。
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip dhcp pool ROOT
Router1(dhcp-config)#network 172.25.0.0 255.255.0.0
Router1(dhcp-config)#domain-name oreilly.com
Router1(dhcp-config)#dns-server 172.25.1.1 10.1.2.3
Router1(dhcp-config)#lease 2
Router1(dhcp-config)#exit
Router1(dhcp)#ip dhcp pool 172.25.1.0/24
Router1(dhcp-config)#network 172.25.1.0 255.255.255.0
Router1(dhcp-config)#default-router 172.25.1.1
Router1(dhcp-config)#exit
Router1(dhcp)#ip dhcp pool 172.25.2.0/24
Router1(dhcp-config)#network 172.25.2.0 255.255.255.0
Router1(dhcp-config)#default-router 172.25.2.1
Router1(dhcp-config)#lease 0 0 10
Router1(dhcp-config)#end
Router1#
必须说明的是,dhcp租期配置信息是唯一不能继承的dhcp配置选项,也就是说,你必须为每个孩子地址池显式配置dhcp租期。如果该地址池没有配置dhcp租期。则路由器使用默认的租期(24小时)。
5 上面的实例中有几个用option配置的命令,其配置的意义为;
Router1(dhcp-config)#option 66 ip 10.1.1.1
Router1(dhcp-config)#option 33 ip 192.0.2.1 172.25.1.3
Router1(dhcp-config)#option 31 hex 01
option 66 ip 定义了tftp 服务器。
Option 33 ip 定义了静态路由,他告诉所有的终端设备将发往目的地192.0.2.1的数据报,首先发送到172.25.1.3。
Option 31 规定了客户端使用ICMP Router Discovery Protocol(IRDP).使用这个协议,客户端可以定期从本地路由器获得更新信息,用以决定自己的最新的默认网关地址。
关于DHCP的租期相关讨论和配置 问题的提出: DHCP的租期(DHCP Lease Periods)是DHCP相关知识中,一个比较重要的该概念,这里单独列出来进行说明。 基本的配置如下; Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#ip dhcp pool 172.25.2.0/24 Router1(dhcp-config)#lease 2 12 30 Router1(dhcp-config)#end Router1# 关于配置的讨论; 1 lease 命令的基本格式是 lease [days] [hours] [minutes] 上面的例子,表示设定DHCP租约为2天12小时30分。 你可以配置最大值为365天23小时59秒,也可以设置最小值1秒。默认的DHCP租约是1天。 2 一般的规则是,对于那种dhcp客户端数量比较大,并且客户端联入网络,断开网络比较频繁的场合,一般把租约的时间配置的比较短,这样子使得ip地址很快 被收回,可以供另外的dhcp请求客户使用。比较经典的场合时比如飞机场的无线网络。但是越短的租约,也使得dhcp请求包过多,增加了网络的负担。 3 相反的,在一个相对稳定的网络环境中,比如小型的办公室网络,由于客户端的数量往往变化不大,所以可以考虑适当的增加dhcp的租约。这样做的主要好处是,可以减少dhcp服务器的负担。 4 记住,客户端在自己的租约还有一半的时候,就会向服务器发出更新租约的请求,如果成功,则租约从新恢复为完整的租期,如果失败,则又过剩下的一半租约后,再发出更新请求,如此规律,直到成功更新为止。 5 在很多场合,默认的一天的租约是比较合理的,一般很少作修改。 5 一种比较极端的配置是,你可以规定租约为永久,即一旦客户端获得了ip地址后,只要他不物理断网,以后就再也不会向服务器发送dhcp租约更新请求了。这种配置在现实中就更加少见了。 配置命令如下; Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#ip dhcp pool COOKBOOK Router1(dhcp-config)#lease infinite //规定租约为无限制 Router1(dhcp-config)#end Router1# 6 你可以用show ip dhcp binding 命令察看dhcp租约。 Router1#show ip dhcp binding IP address Hardware address Lease expiration Type 172.25.1.33 0100.0103.85e9.87 Infinite Manual 172.25.1.53 0100.0103.ea1b.ed Apr 11 2003 08:58 PM Automatic 172.25.1.57 0100.6047.6c41.a4 Apr 11 2003 09:17 PM Automatic Router1# |