Router1(config-if)#ip helper-address 172.25.1.1 /*指定dhcp服务器的地址,表示通过Ethernet0向该服务器发送DHCP请求包*/
交换机的典型配置命令有:
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
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负担。
典型配置命令编辑
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#interface Ethernet 0
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#
2关于以上配置的讨论编辑
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
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负担,可能会引起问题,
关于解决办法,将在后面讨论。
所以cisco 的ios 提供了限制ip helpe-address 命令所带来的负面影响的方法。
解决实例;CISCO路由器允许用no ip forward-protocol udp 命令来禁止对所无意义的UDP`数据报的转发。
3配置路由器为DHCP服务器编辑
使之给dhcp客户端动态分配ip地址
问题的提出:把路由器配置为dhcp的服务器端,以对路由器下所连接的客户工作站进行ip地址的分配。
(这可真是一个了不起的改进!路由器从此摇身一变,看上去更加多姿多彩了)
解决实例;下面的配置命令,可以配置路由器为DHCP服务器,用以给DHCP客户端动态分配ip地址。
Router1#configure terminalEnter 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 命令来定义网络地址的范围
Router1(dhcp-config)#default-router 172.25.1.1 //定义要分配的网关地址
Router1(dhcp-config)#exit
Router1(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)#end
Router1#
关于配置的相关讨论
1 .CISCO路由器的dhcp服务器功能也是在ios 12.0(1)T.以后才出现的,这一功能的出现,
使我们没有必要在专门网络的中心(或者说企业本部)另外配置一台DHCP server,从而降低了网络构建成本。
2. 在路由器上直接配置dhcp服务器相比于传统的在专门服务器上实现dhcp有其独到的优点。比如
A 由于传统的构建方法是,在企业的总部设立DHCP服务器,各分支机构通过路由器去获取ip地址,所以当dhcp服务器出现问题的时候,
整个企业的网络都会受到影响,而如果把dhcp 服务器功能设在各个分支机构的路由器上实现,则某个分支机构的路由器DHCP出现问题,
就只能影响该分支机构的网络本身,而其他分支机构则不受任何影响。从而可见,实现了问题的局部化。
B 在各分支机构的路由器上实现DHCP服务器功能后,大量的DHCP UDP请求报文将不会通过wan link 转发到 中心机构上去,
由此,相比于传统的方式,它有减少广域网负荷的优点。
C 同样的道理,在各分支机构的路由器上实现DHCP服务器功能后,如果某条广域网连路坏了,本地的局域网依然能够正常运行
D 基于路由器的DHCP 具有很高的可管理性,它通过ios的命令界面是比较容易配置的。
3 .上边的配置例子,我们用ip dhcp excluded-address 命令来指定不能用来被分配的ip地址,
这种配置往往是很需要的(甚至说是必需的,几乎所有的;路有其DHCP 服务器配置中都会有),
因为往往有一些地址我们会用来作为其他的用途,比如,我们至少应该保留路有器本身的地址不被分配给dhcp客户端,
还有一些比如说网络服务器,打印机等等,我们也往往会给他指定静态的地址,所以这一部分地址。我们不允许路有其分配出去,
上例中的172.25.1.1 到172.25.1.50 之间,172.25.1.200 到172.25.1.255的地址就做了保留。
4 .当路由器给客户端动态分配地址后,就会绑定(binding)分配的ip地址以及客户端设备的mac地址信息,保存在路由器的配置中,
以便下一次相同的mac地址请求dhcp服务也能够获得同样的ip地址。下面给出的例子是,用show ip dhcp binding 命令显示的 ip binding的信息。
其中Lease expiration 表示该ip 地址,客户端还能占有的时间,(当然客户端可以在期满之前再次发送dhcp请求报,
事实上dhcp的规范也是有这样的规定的,即在租期还有一半时间的时候就会发出dhcp请求,如果租期更新失败,那么再过省下时间的一半的时候,
他还会发出dhcp的请求,依此类推)。
ip helper-address:
路由器是不转达发广播的,帮助地址通过将这些广播数据包直接转发到目标服务器而帮助客户机和服务器建立联系。 帮助地址命令将广播性目的地地址改变为单点传达室送地址(或一个定向的广播-在某个子网内的本广播),使该广播消息可以被路由到一个具体的目的地而不是所有地方。
Ip helper-address 192.168.100.1 //可以转发广播(helper-address的作用就是把广播转化为单播,然后发向192.168.100.1)