讲下环境:
DHCP服务器,使用的是三层交换机模拟的,并且e0/0接口使用的是三层接口
SW2也是一台三层交换机,e0/0接口使用的是三层接口,e0/1是一个Trunk口
SW1是一台二层交换机,e0/1接口是Trunk口,e0/0划分进VLAN10,e0/2划分进VLAN20
PC4和PC5使用DHCP自动获取IP地址,最后我们让PC4使用静态绑定方式获取IP地址
首先我们讲解下配置思想:
SW1的配置:没什么讲解的,正常划分VLAN,做Trunk
Switch(config)#int e0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
!
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
!
Switch(config)#int e0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
===========================================
SW2的配置:SW2的SVI10作为PC4的网关,SVI20作为PC5的网关。SW2在这里需要承担一个DHCP relay(中继代理)的一个角色。PC发送的 DHCP请求是以广播形式发出的,请求报文到了三层的SVI口就会被隔绝掉,很多同学会误以为广播报文是到的SW2的e0/1接口被隔绝掉了,然后中继的命令就去物理接口配置,其实不是,因为e0/1是一个二层的Trunk口,二层接口怎么会隔绝广播呢?
所以我们的中继代理命令是在SVI接口配置的,下边helper-address命令的意思就是,你要告诉SVI接口,DHCP服务器的地址是什么,所以后边跟的是DHCP服务器的物理接口IP地址。
SW2在SVI10和SVI20里边都做了中继代理后,广播的报文,就会变成一个单播的报文传送到DHCP服务器。
Switch(config)#service dhcp 启用DHCP功能,在CCIE考试,TS时候就会把中继的DHCP服务给关闭,然后导致下边PC获取不到IP地址,养成良好敲命令习惯
!
Switch(config)#int e0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
!
Switch(config)# interface Vlan10
Switch(config-if)# ip address 192.168.10.254 255.255.255.0
Switch(config-if)# ip helper-address 192.168.12.3 配置中继代理命令,后边跟的地址是DHCP服务器的接口IP地址
Switch(config-if)#no shutdown
!
interface Vlan20
Switch(config-if)#ip address 192.168.20.254 255.255.255.0
Switch(config-if)#ip helper-address 192.168.12.3 配置中继代理命令,后边跟的地址是DHCP服务器的接口IP地址
Switch(config-if)#no shutdown
!
Switch(config)# interface Vlan30 它作为DHCP服务器的网关,
Switch(config-if)#ip address 192.168.12.254 255.255.255.0
Switch(config-if)#no shutdown
!
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 30 我们把e0/0接口划分VLAN30
=========================================
DHCP服务器配置:我这个实验DHC服务器是用三层交换机模拟的,然后连接SW2的e0/0接口使用的是一个三层的接口,不是二层的接口。
大家看到我在DHCP服务器写了一个网关地址,这个网关非常重要。
因为PC发送了一个广播的包,这个广播的包到了SW2的SVI口被转成单播包。单播包源地址是SW2的SVI地址,假设我们没有给DHCP服务器配置网关地址,那么它回包的时候就会出现问题,因为它没有SW2的SVI接口的IP路由,路由不可达,然后数据包无法再返回给SW2交换机。
有了网关之后,DHCP服务器就可以把数据包交给自己的网关,由网关去做出相应的动作
Switch(config)#service dhcp 启用DHCP功能,在CCIE考试,TS时候就会把中继的DHCP服务给关闭,然后导致下边PC获取不到IP地址,养成良好敲命令习惯
!
Switch(config)# interface Ethernet0/0
Switch(config-if)# no switchport 这个命令,模拟器的三层交换机接口默认都是二层的接口,无法直接配置IP地址,需要使用此命令,把一个二层接口变成一个三层接口。
Switch(config-if)# ip address 192.168.12.3 255.255.255.0
!
Switch(config)#ip dhcp pool vlan10 定义第一个DHCP地址池,池名称叫vlan10,方便做管理,名字无所谓
Switch(dhcp-config)#network 192.168.10.0 255.255.255.0 下发的网段范围
Switch(dhcp-config)# default-router 192.168.10.254 给PC下发网关地址
Switch(dhcp-config)# dns-server 8.8.8.8 DNS:8.8.8.8 是谷歌的一个DNS,解析域名使用
Switch(config)#ip dhcp excluded-address 192.168.10.254 移除已经分配的网关地址,以免后期DHCP把网关地址下发给PC,产生IP地址冲突
!
Switch(config)#ip dhcp pool vlan20 定义第二个DHCP地址池,池名称叫vlan20,方便做管理,名字无所谓
Switch(dhcp-config)#network 192.168.20.0 255.255.255.0 下发的网段范围
Switch(dhcp-config)# default-router 192.168.20.254 给PC下发网关地址
Switch(dhcp-config)# dns-server 8.8.8.8 DNS:8.8.8.8 是谷歌的一个DNS,解析域名使用
Switch(config)#ip dhcp excluded-address 192.168.20.254 移除已经分配的网关地址,以免后期DHCP把网关地址下发给PC,产生IP地址冲突
!
Switch(config)#ip default-gateway 192.168.12.254 给DHCP服务器配一个网关地址,这条命令非常重要
上边就是全部的配置命令和配置思路,最值得大家记住的就是在配置中继代理的时候,一定要记住,在阻挡第一个广播报文的地方配置,一定是第一个阻挡广播报文的地方。
还有就是DHCP服务器,如果是像我这样的环境,一定不要忘记给它配置一个网关,不然DHCP服务器在回数据包的时候一定会有问题。
我们主要是要明白为什么要给DHCP服务器去配置网关地址,因为它在回包的时候,目的地址是SW2的SVI口,而它没有去往这个SVI口的路由,所以就导致回包失败,这是根本原因。
我们知道了根本原因,是不是有的同学就马上明白,是不是只要DHCP服务器能够ping通数据包的目的地址SVI口,就行了?答案是对的,你也可以变相的写一个默认路由,反正不管你怎么弄,数据包一定要能够到达相对应的目的SVI口。
PC发出一个广播包的整个流程:PC发出一个广播包到了SV1口被隔绝了,为什么不是在SW2的e0/1接口隔绝的广播包呢?是因为这个接口是一个二层接口,所以不会去隔离这个广播包,只有三层接口才会隔离广播,SVI就是一个三层逻辑接口。
广播包到了SVI口,SVI口把它变成一个单播包。单播包的源地址是SVI口,目的地址是DHCP服务器的地址。
单播包到了DHCP服务器,DHCP服务器回包的时候,把源和目的地址调换一下,源地址是自己,目的地址是SVI接口。
====================================================
下边是DHCP静态绑定的方式:
关于模拟器的DHCP静态绑定,我尝试直接绑定MAC地址,但是每次都是失败的,然后很郁闷,百度也看了很多方法都是不行的,今天我们尝试使用另外一种方法,实现静态绑定,比较麻烦一点。
Switch#show ip dhcp binding
使用这个命令可以看到DHCP服务器分配出去的IP地址
大家看到我用红色圈起来的地方,把这一小块复制下来,直接复制会把后边的东西也误复制,所以需要先复制到记事本之类东西
最后留下来的就是:0063.6973.636f.2d61.6162.622e.6363.3030.2e34.3030.302d.4574.02f.30
这一条长长的Client-ID字段。Client-ID字段只有这台PC电脑已经成功获取了一个IP地址才会分配,所以这个方法侧面反映出,你首先得先让PC动态获取到一次IP地址,生成Client-ID
下边是配置环节:
DHCP#clear ip dhcp binding * 你首先需要使用这个命令把先前的分配出去的IP地址给清空,之后才能进行下边配置,如果你不清空直接进行下边配置,在绑定Client-ID的时候系统有可能会报错,(% A binding for this client already exists.)提示你此客户端的绑定已经存在。
DHCP(config)#ip dhcp pool jingtai 创建一个DHCP地址池,取名叫jingtai
DHCP(dhcp-config)#host 192.168.10.100 255.255.255.0 分配一个静态IP地址
DHCP(dhcp-config)#default-router 192.168.10.254 分配一个网关地址
DHCP(dhcp-config)#dns-server 8.8.8.8 分配一个DNS解析地址
DHCP(dhcp-config)#client-identifier 0063.6973.636f.2d61.6162.622e.6363.3030.2e34.3030.302d.4574.302f.30 最后把Client-ID字段给绑定进去
Switch(config)#ip dhcp excluded-address 192.168.10.100 255.255.255.0
我们不要忘记把这个静态地址从DHCP地址池移除掉,以免被DHCP服务器二次分配
最后我们去PC4把e0/0接口给关闭再打开一次,就会获取到我们静态设置的地址了
这次静态绑定我们只针对VLAN10里边的PC4用户