在一些規模適中的公司里面,員工可能在不同的寫字樓的樓層里面抱著筆記本頻繁奔波于不同部門或會議室,當他們要訪問本部門的服務器的時候,如果不在自己部門的VLAN里面訪問臺式機的文件,就會出現拒絕訪問的后果,很多人需要跑回原來的辦公室才能取回文件。
此時管理員可以采用動態VLAN的方法,將這些筆記本的MAC地址記錄下來,通過MAC地址劃分VLAN。不論他們在那個辦公環境中,都可以被分配到正確的VLAN里面。本文將介紹VMPS,即VLAN Management Policy Server是如何解決此類應用的配置難題。
一.動態VLAN憑什么能解決問題
動態的VLAN形成很簡單,由交換機端口自己決定它屬于哪個VLAN時,就形成了動態的VLAN。其實,動態的VLAN就是一個簡單的映射,這個映射取決于工程師創建的MAC數據庫文件。分配給動態VLAN的端口被激活后,交換機就緩存初始幀的源M A C地址。隨后,交換機便向一個稱為VMPS (VLAN管理策略服務器)的外部服務器發出請求,VMPS中包含一個文本文件,文件中存有進行VLAN映射的M A C地址。交換機對這個文件進行下載,然后對文件中的M A C地址進行校驗。如果在文件列表中找到M A C地址,交換機就將端口分配給列表中的VLAN。
如果列表中沒有M A C地址,交換機就將端口分配給默認的VLAN(假設已經定義默認了VLAN)。在動態VLAN中,如果在列表中沒有M A C地址,而且也沒有定義默認的VLAN,端口不會被激活,這是維護網絡安全一種非常好的的方法。
VMPS即VLAN Management Policy Server,是一種基于源MAC地址動態的、在交換機端口上劃分VLAN的方法。當某個端口的主機移動到另一個端口后,VMPS動態的為其指定VLAN。不過基于CISCO IOS系列中低端交換不支持一般不支持VMPS的功能,它只能成為VLAN查詢協議(VLAN Query Protocol)的客戶機。
一旦啟動了VMPS,包含MAC地址到VLAN映射的數據庫就會從TFTP服務器下載到VMPS服務器。然后,VMPS使用UDP端口監聽來自VQP客戶機的請求。當VMPS服務器收到來自VMPS客戶機的請求后,它將在本地數據庫里查找MAC地址到VLAN的映射條目信息。VMPS將對請求進行響應,如果被指定的VLAN局限于一組端口,VMPS將驗證對發出請求的端口進行驗證:
* 如果請求端口的VLAN被允許的,VMPS向客戶發送VLAN的名稱;
* 如果請求端口的VLAN不與允許的,并且VMPS不是處于安全模式,VMPS將發送“access-denied”訪問被拒絕的信息;
* 如果請求端口的VLAN不與允許的,但VMPS處于安全模式,VMPS將發送“port-shutdown”端口關閉的信息。
另外,如果數據庫里的VLAN信息和端口的當前VLAN信息不匹配,并且該端口連接的有活動主機,VMPS將發送“access-denied”、“fallback VLAN name”或者“port-shutdown”、“new VLAN name”信息。如果交換機從VMPS那里收到“access-denied”的信息,交換機將堵塞來自該MAC地址,前往或從該端口返回的流量,交換機將繼續監視去往該端口的數據包,并且當交換機識別到一個新的地址后,它會向VMPS發出查詢信息.如果交換機從VMPS那里收到“port-shutdown”信息。
注意:交換機將禁用該端口,必須手工的將該端口啟用才能正式使用。
二:深入動態VLAN技術內幕
VMPS有Open、Secure、Multiple 三種運行模式:
#p#副標題#e#
1.Open模式
當端口未指定VLAN時,如果該端口的MAC地址與之相關聯的VLAN信息被許可,VMPS將向客戶返回VLAN名;如果該端口的MAC地址與之相關聯的VLAN信息不被許可,VMPS將向客戶返回“access-denied”信息。
當端口已經指定VLAN時,如果數據庫里的VLAN與MAC地址相關聯的信息和端口的當前VLAN關聯信息不匹配,并配置的有fallback VLAN(后備VLAN)名,那么VMPS將返回fallback VLAN名給客戶機;如果數據庫里的VLAN與MAC地址相關聯的信息和端口的當前VLAN關聯信息不匹配,并沒有配置fallback VLAN名,那么VMPS將返回“access-denied”信息給客戶機。
2.Secure模式
當端口未指定VLAN時,.如果該端口的MAC地址與之相關聯的VLAN信息被許可,VMPS將向客戶返回VLAN名;如果該端口的MAC地址與之相關聯的VLAN信息不被許可,端口將被關閉。
當端口已經指定VLAN時,如果數據庫里的VLAN與MAC地址相關聯的信息和端口的當前VLAN關聯信息不匹配,即使有配置fallback VLAN名,端口仍將被關閉。
3.Multiple模式
當多個MAC地址處于同一VLAN的時候,多個MAC地址可以對應一個動態端口。如果動態端口的鏈路關閉,端口將被還原成未指定狀態,并且在指定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”信息給客戶機。
三.動態VLAN如何解決移動辦公難題
1.創建VMPS數據庫文件
要使用VMPS必須先創建VMPS數據庫,并將其保存在一個TFTP服務器上。VMPS數據庫文件是一個ASCII嗎的文本文件,并且編寫起來非常繁瑣,最簡單的方式是獲得一個VMPS數據庫范本。VMPS數據庫文件包含如下條目:
(1)包含VMPS域名的文件頭
(2)VMPS運行模式
(3)后備(fallback)用的VLAN名
(4)映射到VLAN名字上的一組MAC地址
#p#副標題#e#
VMPS數據庫的基本結構如下
vmps domain Switchblock1 (指定VTP域名)
vmps mode open (指定運行模式)
vmps fallback default (指定fallback VLAN,這里默認是VLAN 1)
vmps no-domain-req deny (只要發送的請求不帶域名,就不提供任何VLAN映射)
vmps-mac-addrs (配置MAC地址和VLAN之間的關聯)
address 0001.0387.0943 vlan-name GroupA
address 0050.0491.F950 vlan-name GroupB
address 0050.DA8F.1134 vlan-name GroupC
2.配置VMPS服務器
(1)設置VMPS的下載方式:set vmps downloadmethod {rcp | tftp}
(2)設置VMPS下載服務器和文件名稱:set vmps downloadserver ipaddress [filename]
(3)啟動VMPS服務:set vmps state enable
3.配置VMPS客戶端
* COS交換機:set vmps server ipaddress [primary]
* IOS交換機:(global) vmps server ipaddress primary
要讓客戶端交換機從服務器請求中獲得動態的VLAN信息,必須給客戶端配置服務器地址。使用primary選項來指定主VMPS服務器的IP,還可以制定至多3個VMPS服務器起到負載的作用。
4.配置端口為動態模式
* COS交換機:set port membership mod/port dynamic
* IOS交換機:(interface) switchport access dynamic
#p#副標題#e#
四.實戰:動態VLAN解決案例
交換機Access_1和Vmps_s1的端口按如下需求劃分劃分:
* VLAN 5中包含Access_1的1和2、Vmps_s1上的3/1-48;
* VLAN 8中包含Access_1的3和4、Vmps_s1上的4/1-48;
* VLAN 10中包含Access_1的5和6、Vmps_s1上的5/1-12和5/18-24;
* Access_1的13-16以及Vmps_s1上的5/13-17是動態端口。
1.配置服務器
Vmps_s1 (enable)>set vlan 5 3/1-48
Vmps_s1 (enable)>set vlan 8 4/1-48
Vmps_s1 (enable)>set vlan 10 5/1-12,5/18-24
Vmps_s1 (enable)>set vmps downloadserver 10.1.1.101 vmpsconfig.txt
Vmps_s1 (enable)>set interface sc0 10.1.1.1/24
Vmps_s1 (enable)>set vmps enable
Vmps_s1 (enable)>set vmps server 10.1.1.1
Vmps_s1 (enable)> set port membership 5/13-17 dynamic
2.配置客戶端
Access_1(config)#interface fastethernet 0/1
Access_1(config-if)#switchport access vlan 5
Access_1(config-if)#interface fastethernet 0/2
Access_1(config-if)#switchport access vlan 5
Access_1(config-if)#interface fastethernet 0/3
Access_1(config-if)#switchport access vlan 8
Access_1(config-if)#interface fastethernet 0/4
Access_1(config-if)#switchport access vlan 8
Access_1(config-if)#interface VLAN 1
Access_1(config-if)#ip address 10.1.1.2 255.255.255.0
Access_1(config-if)#vmps server 10.1.1.1
Access_1(config)#interface fastethernet 0/5
Access_1(config-if)#switchport access dynamic
Access_1(config-if)#interface fastethernet 0/6
Access_1(config-if)#switchport access vlan dynamic
Access_1(config-if)# end
Access_1 #copy running-config startup-config
#p#副標題#e#
五.工程師總結:動態VLAN優勢大 但有缺點
基于端口的靜態的優點體現在定義VLAN成員時非常簡單,只要將所有的端口都指一下就可以了。而缺點則是不夠靈活,如果VLAN A的用戶離開了原來的端口,到了一個新的交換機的某個端口,就必須重新定義該用戶,否則就很有可能成為VLAN B的成員。
利用VMPS配置基于MAC的案例非常精彩。我們都知道MAC地址就是指網卡(NIC)的標識符,每一塊網卡的MAC地址都是惟一的。從某種意義上說,這是一種基于用戶的網絡劃分手段,基于MAC地址的VLAN劃分其實就是基于工作站、服務器的VLAN組合。在網絡規模較小時,該方案不失為一個好方法,但隨著網絡規模的擴大以及網絡設備、用戶的增加,會在很大程度上加大管理的難度。
從表面上看,動態VLAN的優勢很大,但它也有致命的缺點,即創建數據庫是一項非常艱苦而且非常繁瑣的工作。如果網絡上有數千個工作站,則有大量的輸入工作要做。即使有人能勝任這項工作,也還會出現與動態的VLAN有關的很多問題。另外,保持數據庫為最新也是要隨時進行的非常費時的工作。
六.知識鏈接:動態VLAN配置文件模板
這里給出一個Vmpsconfig.txt配置模板,讀者可更具上述操作步驟自行修改。
!Section 1: GLOBAL SETTINGS
!VMPS File Format, version 1.1
! Always begin the configuration file with
! the word "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
!
!Section 2: MAC ADDRESSES
!MAC Addresses
vmps-mac-addrs
!
! address vlan-name
!
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
!
!Section 3: PORT GROUPS
!Port Groups
!vmps-port-group
! device { port | all-ports }
!
#p#副標題#e#
vmps-port-group WiringCloset1
device 198.92.30.32 port 3/2
device 172.20.26.141 port 2/8
vmps-port-group "Executive Row"
device 198.4.254.222 port 1/2
device 198.4.254.222 port 1/3
device 198.4.254.223 all-ports
!
!Section 4: VLAN GROUPS
!VLAN groups
!
!vmps-vlan-group
! vlan-name
!
vmps-vlan-group Engineering
vlan-name hardware
vlan-name software
!
!Section 5: VLAN PORT POLICIES
!VLAN port Policies
!
!vmps-port-policies {vlan-name | vlan-group }
! { port-group | device port }
!
vmps-port-policies vlan-group Engineering
port-group WiringCloset1
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 "Executive Row"