DHCP SERVER跨路由或跨VLAN实现IP地址的分配是很常见的,这里来演示一下跨路由的DHCP SERVER地址分配,拓扑不用太复杂,主要是演示一下大致的方法。

实验环境:采用CISCO Packet Tracer 模拟器

实验设备:采用三台2811路由器,三台2950交换机

实验需求:

1、三台路由器均各自直连一台2950交换机,每台Switch接两台PC。

2、所有PC均要实现IP地址的自动获取,并根据拓扑中标示的网段,分配不同网段的IP地址。

3、三台路由器之间起RIP路由协议(也可以起其他路由协议),本次起用RIP V2协议。

实验拓扑:

实验步骤及配置:

1、基本配置(接口地址、路由协议)

DHCP-SERVER--->

Router>en

Router#conf t

Router(config)#ho dhcp-server    //命名路由器

dhcp-server(config)#no ip domain lookup  //关闭路由解析功能

dhcp-server(config)#lin co 0  

dhcp-server(config-line)#logg s    //设定输出消息同步,以防影响操作

dhcp-server(config-line)#no exec-t  //设定线路超时时间为永不超时

dhcp-server(config-line)#exit

dhcp-server(config)#int f0/0

dhcp-server(config-if)#ip add 12.12.12.1 255.255.255.0

dhcp-server(config-if)#no sh

dhcp-server(config-if)#router rip  //启动RIP路由协议进程

dhcp-server(config-router)#ver 2  //设定为版本2

dhcp-server(config-router)#network 10.10.10.0  //通告参与RIP的主类网络

dhcp-server(config-router)#network 12.12.12.0  

dhcp-server(config-router)#no auto   //关闭RIP自动汇总

dhcp-server(config-router)#exit

dhcp-server(config)#int f0/1

dhcp-server(config-if)#ip add 10.10.10.1 255.255.255.0 //该地址将是10.10.10.0网段的网关地址

dhcp-server(config-if)#no sh

R2--->

Router>en

Router#conf t

Router(config)#no ip domain lookup

Router(config)#lin co 0

Router(config-line)#logg s

Router(config-line)#no exec-t

Router(config-line)#exit

Router(config)#int f0/0

Router(config-if)#ip add 12.12.12.2 255.255.255.0

Router(config-if)#no sh

Router(config-if)#int f0/1

Router(config-if)#ip add 23.23.23.2 255.255.255.0

Router(config-if)#no sh

Router(config-if)#int f1/0

Router(config-if)#ip add 20.20.20.1 255.255.255.0  //该地址将作为20.20.20.0网段的网关地址

Router(config-if)#no sh

Router(config-if)#exit

Router(config)#router rip

Router(config-router)#ver 2

Router(config-router)#network 12.12.12.0

Router(config-router)#network 20.20.20.0

Router(config-router)#network 23.23.23.0

Router(config-router)#no auto

Router(config-router)#exit

R3--->

Router>en

Router#conf t

Router(config)#ho R3

R3(config)#no ip domain lookup

R3(config)#lin co 0

R3(config-line)#logg s

R3(config-line)#no exec-t

R3(config-line)#int f0/0

R3(config-if)#ip add 23.23.23.3 255.255.255.0

R3(config-if)#no sh

R3(config-if)#int f0/1

R3(config-if)#ip add 30.30.30.1 255.255.255.0  //该地址将作为30.30.30.0网段的网关地址

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#router rip

R3(config-router)#ver 2

R3(config-router)#network 23.23.23.0

R3(config-router)#network 30.30.30.0

R3(config-router)#no auto

R3(config-router)#exit

现在查看一下路由器的路由表信息:

DHCP-SERVER---》

R2---》

R3---》

好,路由器都学到了相互的路由!Ping一下试试:

R3 Ping DHCP-SERVER---》

DHCP-SERVER Ping R3---》

2、配置DHCP-SERVER路由器,使之提供DHCP服务

dhcp-server(config)#service dhcp  //模拟器中此处会报错,不用理它,不影响。

dhcp-server(config)#ip dhcp pool ccie  //新建地址池并命名为CCIE

dhcp-server(dhcp-config)#network 10.10.10.0 255.255.255.0 //指定地址池网段

dhcp-server(dhcp-config)#default-router 10.10.10.1  //指定地址池默认网关

dhcp-server(dhcp-config)#dns-server 10.10.10.254 //指定DNS Server地址

dhcp-server(dhcp-config)#exit

dhcp-server(config)#ip dhcp excluded-address 10.10.10.1 10.10.10.100 

//将10.10.10.1~10.10.10.100排除出地址池

 dhcp-server(config)#ip dhcp pool ccnp   //新建地址池并命名为CCNP

dhcp-server(dhcp-config)#network 20.20.20.0 255.255.255.0 //指定地址池网段

dhcp-server(dhcp-config)#default-router 20.20.20.1  //默认网关地址

dhcp-server(dhcp-config)#dns-server 10.10.10.254   //默认DNS SERVER地址

dhcp-server(dhcp-config)#exit

dhcp-server(config)#ip dhcp excluded-address 20.20.20.1 20.20.20.100

//将20.20.20.1~20.20.20.100排除出地址池

 dhcp-server(config)#ip dhcp pool ccna  //新建地址池并命名为CCNA

dhcp-server(dhcp-config)#network 30.30.30.0 255.255.255.0 //指定地址池网段

dhcp-server(dhcp-config)#default-router 30.30.30.1  //指定默认网

dhcp-server(dhcp-config)#dns-server 10.10.10.254

dhcp-server(dhcp-config)#exit

dhcp-server(config)#ip dhcp excluded-address 30.30.30.1 30.30.30.100

//将30.30.30.1~30.30.30.100排除出地址池

初步验证DHCP配置,试着获取IP地址:

PC-1---》

PC-3---》

PC-5---》

很明显,除了PC-1是通过交换机直连到DHCP-SERVER,能获取到IP地址外,其余PC均不能成功获取!分析一下原因:

路由器有隔离广播的作用,也就是不能转发“255.255.255.255”广播包。但DHCP是以泛洪广播的形式发起的,当路由器某接口收到一个广播包,正常情况下会直接丢弃,那DHCP请求肯定失败。

那么,我们要怎么解决这个问题呢?很简单,可以接口模式下使用一条命令:ip helper-address X.X.X.X解决问题,这条命令叫做帮助地址,使用帮助地址后,路由器可以接受对UDP服务的广播请求。看配置:

R3---》

R3(config)#int f0/1

R3(config-if)#ip helper-address 12.12.12.1   //这条命令的作用,就是将DHCP请求转送给 DHCP-SERVER的12.12.12.1接口处理。(采用单点传送的方式或者定向广播)

R2---》

R2(config)#int f1/0

R2(config-if)#ip helper-address 12.12.12.1

DHCP-SERVER---》

这里不需要此操作!

再次测试一下DHCP获取地址:

PC-5---》

看,获取成功!不用试,其他PC也肯定是成功的!

这里有一个问题,DHCP-SERVER为什么给PC-5分配的是30.30.30.0网段的地址呢?它怎么不给PC-5一个10.10.10.0网段的地址呢?原因很简单,我们在DHCP-SERVER上配置IP pool时指定了各网段的网关地址,DHCP-SERVER就是根据各PC所连接的路由器接口来判断的。

好了,此实验到此为止!