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所连接的路由器接口来判断的。
好了,此实验到此为止!