CISCO动态VLAN配置

一.基于VMPS的动态VLAN配置实例
  网络中VLAN实现分为静态VLAN和动态VLAN。静态VLAN又被称为是基于端口的VLAN。顾名思义,就是明确指定各端口属于哪个VLAN的设定方法,交换机中某个端口属于哪个VLAN是相对固定的。动态VLAN则是根据每个端口所连的计算机,随时改变端口所属VLAN。
  静态VLAN在这里我们就不讲了,由于网络中的计算机需要变更所连端口时,就必须同时更改所连端口所属VLAN的设定-----这是不适合那些需要频繁改变拓扑结构的客户需求的。
  而动态VLAN则不同,由于它可以根据每个端口所属的计算机,随时改变端口所属的VLAN,所以当网络中计算机变更所连端口或交换机时,VLAN不用重新配置。而它基于MAC地址或用户的认证方式,也可以杜绝非法接入网络的问题。动态VLAN实现技术主要有两种:
  一是基于用户的动态VLAN,
  二是基于MAC地址的动态VLAN。
  基于用户的动态VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是域中使用的用户名。也就是说用户只要通过自己在域中的用户名,不管在那台电脑上都能够接入到自己所属的VLAN当中。
  基于MAC地址的动态VLAN,就是通过查询并记录端口所连计算机上的MAC地址来决定端口所属VLAN。当分配给动态VLAN的交换机端口被激活后,交换机就缓存初始帧的源MAC地址。随后,交换机便向一个称为VMPS(VLAN管理策略服务器)的外部服务器发出请求,VMPS中包含一个文本文件,文件中存有进行VLAN映射的MAC地址。交换机
  对这个文件进行下载,然后对文件中的MAC地址进行校验。
  如果在文件列表中找到MAC地址,交换机就将端口分配给列表中该MAC所对应的VLAN。所有列表中没有的话,交换机就会将该端口分配给默认VLAN(假设已经定义了默认VLAN)。如果在列表中没有MAC地址,而且也没有默认VLAN,端口将不会被激活。
  本实例将述的就是基于MAC地址的动态VLAN。
  网络环境:
  核心是一台CISCO3560G三层交换机,配置为VTP Server模式。CISCO 3560G中定义了两个VLAN,通过Trunk端口(Gi0/1,GI0/2端口)与两台Cisco 2960交换机相连。
  VMPS服务器是基于Scientific Linux平台下的OpenVMPS构建的,连接至Cisco3560G的GI0/24端口。两台CISCO2960配置为客户端模式,通过GI0/1端口接受来自核心交换机的VLAN信息,并将其余端口链路类型设置为Access,端口所属VLAN设为Dynamic(动态)。合法的用户计算机接入任意端口,都可以加入到相应的VLAN。
  VMPS服务器配置
  VMPS服务器需CISCO5000以上高端交换机才支持,因此这里选用的是第三方的开源软件-OpenVMPS,基于Scientific Linux 5.3架设的VMPS服务器。
  下载安装
  OpenVMPS最新版本为1.4.01.可通过“http://sourceforge.net/projects/vmps/”下载OpenVMPS,将下载的VMPSd-1.4.01.tar.gz文件上传至Linux服务器,以root用户运行下面的命令进行安装。
  # tar -v z x f vmpsd-1.01.tar.gz
  #cd vmpsd
  # ./configrure
  #make
  #make install
  配置VMPS数据库
  OpenVMPS安装好之后,会自动生成VMPS数据库配置文件/usr/local/etc/vlan.db,这个文件时是个文本文件,下面是配置内容:
  vmps domain cisco ////////指定VTP域名为cisco
  Vmps mode open //////////指定VMPS运行模式为OPEN。Vmps能够以OPEN或者secure的模式工作,OPEN时,VMPS会对未授权的MAC地址返回拒绝,对没有列在VMPS数据库中的MAC地址返回一个fallback(后备VLAN)。在secure模式,VMPS对于未授权的或者没有列在数据库的MAC地址都会关闭相应的端口。
  Vmps fallback ----none-----////////指定一个后备VLAN,none时表示没有。
  Vmps no-domain-req deny /指定VMPS客户端交换机如果不属于VTP域,将不提供任何映射
  Vmps-mac-address //////与Address之间的关联。对指定的MAC地址使用关键字--NONE--关键字表示,阻止该主机加入到任何VLAN。在VLAN。Db中还有很多参数,感兴趣的可以自己研究。
  Address 0001.2201.88cd.vlan-name accout
  Address 0001.2201.88ce.vlan-name accout
  Address 0001.2201.75ca.vlan-name sale
  运行VMPS
  以root用户执行下面命令,可以启动VMPS:
  #/usr/local/bin/vmpsd
  OpenVMPS默认端口时UDP1589,用netstat -an grep 1589可以查看vmpsd进程是否运行。
  如果需要在开启Liunx服务器是就加载vmpsd.可以在/etc/rc.local中加入/usr/local/bin/vmpsd/
  其他VMPSD的配置信息如下:
  Vpmsd [-d] [-a address] [-f file] [-l level] [-p port]
  -d: 在前台运行VMPSD,可以很清楚的看到对MAC地址与VLAN的关联
  -a address 设置绑定到VMPSD的IP地址
  -f file 设置VMPSD数据库配置文件,默认为/usr/local/etc/vlan.db
  -l level 设置日志级别
  -p port 设置VMPSD的监听端口,默认为1589
  CISCO3560G配置
  #vtp domain cisco
  #vtp mode server
  #interface rang gi0/1 -2
  #switchport trunk encapsulation dot1q
  #switchport mode trunk
  定义VLAN,设置VLAN IP地址。
  #VLAN 133
  # name sale
  #vlan 168
  #name accout
  #interface vlan 133
  #ip address 172.16.1.1 255.255.255.0
  #no shu
  #interface vlan 168
  #ip address 172.16.2.1 255.255.255.0
  #no shu
  设置gi0/24为访问口,连接VMPSD服务器
  #interface gi0/24
  #switchport mode access
  #no shu
  #ip routing
  #write
  Cisco2960配置
  #VTP domain cisco
  #vtp mode client
  #interface gi0/1
  #switchport mode trunk
  #no shu
  #exit
  设置fa0/1-24为访问口,所属VLAN为动态获取
  #interface rang fa0/1 -24
  #switchport mode access
  #switchport access vlan dynam
  #no shu
  设置主VMPS,另外可以设置3个备用的VMPS服务器。
  CISCO2960
  #vmps server 172.16.1.100 primary
  #end
  #write
  #
  开启VQPC(VLAN查询协议客户端)调试,将会看到MAC地址与VLAN关联的过程。
  #debug vqpc all

VMPS介绍:
  VMPS介绍的是VLAN Membership Policy Server的简称.顾名思义,它是一种基于端口MAC地址动态选择VLAN的集中化管理服务器.当某个端口的主机移动到另一个端口后,VMPS动态的为其指定VLAN.不过基于CISCO IOS的CATALYST 4500系列交换不支持VMPS的功能。
  它只能做为VLAN查询协议(VLAN Query Protocol)的客户机,通过VQP的客户机,可以和VMPS通信.如果要让CATALYST 4500系列交换机支持VMPS的功能,那你应当使用CatOS(或选择CATALYST 6500系列交换机hoho).
  VMPS介绍使用UDP端口监听来自VQP客户机的请求,因此,VPMS客户机也没必要知道VMPS到底是位于本地网络还是远程网络.当VMPS服务器收到来自VMPS客户机的请求后,它将在本地数据库里查找MAC地址到VLAN的映射条目信息.
  VMPS介绍将对请求进行响应.如果被指定的VLAN局限于一组端口,VMPS将验证对发出请求的端口进行验证:
  ◆如果请求端口的VLAN被许可,VMPS向客户发送VLAN做为响应.
  ◆如果请求端口的VLAN不被许可,并且VMPS不是处于安全模式(secure mode),VMPS将发送"access-denied"(访问被拒绝)的信息做为响应.
  ◆如果请求端口的VLAN不被许可,但VMPS处于安全模式,VMPS将发送"port-shutdown"(端口关闭)的信息做为响应.
  但如果数据库里的VLAN信息和端口的当前VLAN信息不匹配,并且该端口连接的有活动主机,VMPS将发送"access-denied","fallback VLAN name"(后退VLAN名),"port-shutdown"或"new VLAN name"(新VLAN名)信息.至于发送何种信息取决于VMPS模式的设置.
  如果交换机从VMPS那里收到"access-denied"的信息,交换机将堵塞来自该MAC地址,前往或从该端口返回的流量.交换机将继续监视去往该端口的数据包,并且当交换机识别到一个新的地址后,它会向VMPS发出查询信息.如果交换机从VMPS那里收到"port-shutdown"信息,交换机将禁用该端口,该端口必须通过命令行或SNMP重新启用.
  VMPS介绍有三种模式(但User Registration Tool,即URT,只支持open模式):
  ◆open模式.
  ◆secure模式.
  ◆multiple模式.
  ◆open模式:
  当端口未指定VLAN:
  ◆如果该端口的MAC地址与之相关联的VLAN信息被许可,VMPS将向客户返回VLAN名.
  ◆如果该端口的MAC地址与之相关联的VLAN信息不被许可,VMPS将向客户返回"access-denied"信息.
  当端口已经指定VLAN:
  ◆如果数据库里的VLAN与MAC地址相关联的信息和端口的当前VLAN关联信息不匹配,并配置的有fallback VLAN名,那么VMPS将返回fallback VLAN名给客户机.
  ◆如果数据库里的VLAN与MAC地址相关联的信息和端口的当前VLAN关联信息不匹配,并没有配置fallback VLAN名,那么VMPS将返回"access-denied"信息给客户机.
  secure模式当端口未指定VLAN:
  ◆如果该端口的MAC地址与之相关联的VLAN信息被许可,VMPS将向客户返回VLAN名.
  ◆如果该端口的MAC地址与之相关联的VLAN信息不被许可,端口将被关闭.
  当端口已经指定VLAN:
  如果数据库里的VLAN与MAC地址相关联的信息和端口的当前VLAN关联信息不匹配,即使有配置fallback VLAN名,端口仍将被关闭.
  multiple模式:
  当多个MAC地址(主机)处于同一VLAN的时候,多个MAC地址可以对应一个动态端口.如果动态端口的链路down掉,端口将被还原成未指定状态,并且在指定VLAN之前,VMPS将对这些地址重新检查;如果这些主机位于不同的VLAN,VMPS将向客户返回最新的MAC地址到VLAN映射的信息.当然,你也可以在VMPS上指定fallback VLAN名.如果该端口未指定任何VLAN,VMPS将把端口和发起请求的MAC地址进行比较:
  ◆如果主机的MAC地址在数据库中不存在,并且VMPS上指定的有fallback VLAN名,那么将向客户机返回fallback VLAN名信息.
  ◆如果主机的MAC地址在数据库中不存在,但VMPS上未指定fallback VLAN名,那么将向客户机返回"access-denied"信息.
  如果该端口已经指定任何VLAN,VMPS将把端口和发起请求的MAC地址进行比较:不管VMPS上有没有配置fallback VLAN名,只要VMPS处于secure模式,那么它就将反馈"port-shutdown"信息给客户机.有的时候我们也可能看到非法的VMPS客户机请求,如下两种:
  ◆当VMPS上未配置fallback VLAN名,并且数据库里没有相应的MAC地址到VLAN的映射信息.
  ◆当端口已经被指定了VLAN,并且VMPS不处于multiple模式,但是VMPS收到了第二个不同MAC地址的VMPS客户机请求信息.
  ===============================================
  配置VMPS数据库
  VMPS的用途就是用来创建动态的VLAN。而要创建动态VLAN,首先就是要配置VMPS数据库,然后依次配置VMPS服务器和客户机。
  为了使用VMPS,你首先要建立VMPS的数据库(也就是一个文本文件)并把它保存在一个TFTP服务器上。VMPS的格式是基于行的。每一行都是一个开始。VMPS数据库文件包含如下五个部分:全局设置(Global settings)、MAC地址到VLAN的映射(MAC address-to-VLAN name mappings)、端口组(Port groups)、VLAN组(VLAN groups)和VLAN端口策略(VLAN port policies)。具体解释如下:
  n 第一部分:全局设置(Global settings)
  第一部分是列出VMPS域名、安全模式、Fallback VLAN名称,以及VMPS和VTP域名不匹配的策略。VMPS数据库文件是以“VMPS”开头的,以防止VMPS服务器错误地读取交换机上其他的配置文件。
  在定义VMPS域时,应当正确输入在交换机上配置的VTP域名。
  在定义安全模式时,VMPS可以工作于安全模式或者开放模式。如果你设置为开放模式,VMPS就会对未知的MAC地址返回一个拒绝访问的响应消息,而对于一个不在VMPS数据中的MAC地址,则返回一个Fallback VLAN名的消息进行响应。在安全模式中,VMPS会对未知,或者不在VMPS数据库中的MAC地址会关闭所访问的端口。
  Fallback VLAN的定义是个可选项。它是为在连接主机的MAC地址不在数据库中,且VMPS工作于开放模式时准备的。
  下面是本部分的一个示例:VMPS域名为GRFW,VMPS模式为开放模式,Fallback VLAN为默认设置,VMPS策略中在VTP域名与VMPS域名不匹配时发送访问拒绝(access-denied)消息进行响应。
  vmps domain GRFW
  vmps mode open
  vmps Fallback default
  vmps no-domain-req deny
  n 第二部分:MAC地址到VLAN的映射(MAC address-to-VLAN name mappings)
  本部分列出MAC地址,以及每个MAC地址对应的VLAN名。可以使用“NONE”关键字作为VLAN名,以拒绝该MAC地址的主机与网络连接。在一个VMPS数据库中,你可以键入最多21,051条MAC地址。
  下面是本部分的一个示例。MAC地址是在MAC地址表中一出的,注意其中的“fedc.ba98.7654”MAC地址对应的VLAN名为“NONE”,也就是拒绝该MAC地址主机访问网络。
  vmps-mac-addrs
  address 0012.2233.4455 vlan-name hardware
  address 0000.6509.a080 vlan-name hardware
  address aabb.ccdd.eeff vlan-name Green
  address 1223.5678.9abc vlan-name ExecStaff
  address fedc.ba98.7654 vlan-name --NONE-
  address fedc.ba23.1245 vlan-name Purple
  n 第三部分:端口组(Port groups)
  本部分列出了在你的网络中,你想要组合的不同交换机上的端口组。一相端口组就是一个端口的逻辑组合。你可以应用VLAN策略到一个个具体的端口上,或者端口组上。这在后面第五部分,定义VLAN策略时要用到。
  要为每个端口组定义一个名称,然后列出所有包括在这个端口组中的端口,每条以“device”开头。端口是由交换机IP地址和模块/端口号定义的。在端口号中不允许使用范围。但可以使用“all-ports”关键字来指定特定交换机上的所有端口。
  下面是本部分的一个示例,包括两个端口组portgroup1和portgroup2。端口组portgroup1包括两个端口,一个是在IP地址为198.92.30.32的VMPS客户机上的3/2端口,另一个是在IP地址为172.20.26.141的VMPS客户机上的2/8端口。
  端口组portgroup2包括三个端口:其中两个是在IP地址为198.4.254.222的VMPS客户机上的1/2端口和1/3端口,另一个是在IP地址为198.4.254.223的VMPS客户机上的所有端口。
  vmps-port-group portgroup1
  device 198.92.30.32 port 3/2
  device 172.20.26.141 port 2/8
  vmps-port-group portgroup2
  device 198.4.254.222 port 1/2
  device 198.4.254.222 port 1/3
  device 198.4.254.223 all-ports

第四部分:VLAN组(VLAN groups)
  本部分列出的是你想关联在一起的VLAN组。一个VLAN组也是一个VLAN的逻辑组合。VLAN策略可以应用到一个个具体的VLAN上,也可以应用互这些VLAN组上。这在后面第五部分,定义VLAN端口策略时也要用到。
  首先定义VLAN组名,然后列出在VLAN组中的每个端口。你可以在一个VMPS服务器中键入最多256个VLAN。
  下面是本部分的一个示例。示例中的VLAN组“Engineering”包含名为“hardware”和“software”的两个VLAN。
  vmps-vlan-group Engineering
  vlan-name hardware
  vlan-name software
  n 第五部分:VLAN端口策略(VLAN port policies)
  本部分列出了在本VMPS数据库文件中所定义的VLAN端口策略。它使用前面介绍的端口组和VLAN组来进一步限制对网络的访问,可以使用MAC地址和端口组,或者VLAN组来配置限制访问。每条策略都是以“vmps-port-policies”开头。
  以下是本部分的一个示例。在这个示例中包含了三个VLAN端口策略:在第一个VLAN端口策略中,在VLAN hardware或者VLAN software(都是名为Engineering的VLAN组成员)中的成员在IP地址为198.92.30.32的VMPS客户机3/2端口和IP地址为172.20.23.141的VMPS客户机2/8端口上是限制访问的。
  第二个VLAN端口策略是指定在VLAN Green中的设备仅可以连接到IP地址为198.92.30.32的VMPS客户机的4/8端口上。
  第三个VLAN端口策略是指定在VLAN Purple中的设备仅可以连接到IP地址为198.4.254.22的VMPS客户机的1/2端口和在portgroup2端口组中的端口。
  vmps-port-policies vlan-group Engineering
  port-group portgroup1
  vmps-port-policies vlan-name Green
  device 198.92.30.32 port 4/8
  vmps-port-policies vlan-name Purple
  device 198.4.254.22 port 1/2
  port-group portgroup2
  以下是思科网站上的一个VMPS数据库文件示例,编辑一下就可以成为自己VMPS数据库文件。
  !vmps domain
  ! The VMPS domain must be defined.
  !vmps mode { open secure }
  ! The default mode is open.
  !vmps Fallback
  !vmps no-domain-req { allow deny }
  !
  ! The default value is allow.
  vmps domain WBU
  vmps mode open
  vmps Fallback default
  vmps no-domain-req deny
  !
  !
  !MAC Addresses
  !
  vmps-mac-addrs
  !
  ! address vlan-name !address 0012.2233.4455 vlan-name hardwareaddress 0000.6509.a080 vlan-name hardwareaddress aabb.ccdd.eeff vlan-name Greenaddress 1223.5678.9abc vlan-name ExecStaffaddress fedc.ba98.7654 vlan-name --NONE--address fedc.ba23.1245 vlan-name Purple!!Port Groups!!vmps-port-group ! device { port all-ports }!vmps-port-group WiringCloset1device 198.92.30.32 port Fa1/3device 172.20.26.141 port Fa1/4vmps-port-group "Executive Row"device 198.4.254.222 port es5%Fa0/1device 198.4.254.222 port es5%Fa0/2device 198.4.254.223 all-ports!!VLAN groups!!vmps-vlan-group ! vlan-name !vmps-vlan-group Engineeringvlan-name hardwarevlan-name software!!VLAN port Policies!!vmps-port-policies {vlan-name vlan-group }! { port-group device port }!vmps-port-policies vlan-group Engineeringport-group WiringCloset1vmps-port-policies vlan-name Greendevice 198.92.30.32 port Fa0/9vmps-port-policies vlan-name Purpledevice 198.4.254.22 port Fa0/10port-group "Executive Row"VMPS数据库文件创建好后,通过本书第一章介绍TFTP或者RCP方式上传该文件到一个TFTP或者RCP服务器上,然后再下载到担当VMPS服务器的交换机的闪存中即可。

原文地址:https://www.cnblogs.com/fangbo/p/1920707.html