0×1.VLAN介紹
VLAN(Virtual Local Area Network,虛擬局域網(wǎng)),通過在支持VLAN的交換機上添加VLAN,并且動態(tài)的調(diào)整每個端口所屬VLAN(默認端口都屬于VLAN1),實現(xiàn)一臺物理交換機上可以有多個局域網(wǎng)(LAN),每個LAN稱作VLAN,VLAN之間的廣播互不可達,VLAN間互不影響;每個VLAN是一個獨立的廣播域,如果不同VLAN中的結(jié)點想要互相訪問,需要通過一臺三層或三層以上設(shè)備才能實現(xiàn)(比如路由器、三層交換機、防火墻等);這樣就增加了安全性,可以在三層設(shè)備上配置訪問列表來控制流量。
0×2.VLAN干線
a.什么是VLAN干線
干線(Trunk)就是在兩臺交換機之間可以傳輸多個VLAN的信息的那條線纜,干線又稱主干。
下圖(圖1)是沒有使用干線的情況,在SW1和SW2上劃分了兩個VLAN(VLAN1、VLAN2),PC1和PC2屬于VLAN2,PC3和PC4屬于VLAN3,在沒有使用主干線路的時候,需要在SW1和SW2之間使用兩條線纜,將一條線纜的兩個端口劃分到VLAN2,另一條線纜的兩個端口劃分到VLAN3,這樣PC1和PC2才能正常通信,PC3和PC4也能正常通信。在沒有使用間路由的情況下,VLAN2中的PC1和PC2無法和VLAN3中的PC3和PC4通信:


b.干線協(xié)議介紹
對于VLAN交換機來說,干線就是交換機之間的連線,它在兩個或兩個以上的VLAN之間傳輸業(yè)務(wù)流。每個交換機必須確定它所收到的數(shù)據(jù)幀屬于哪個VLAN。
在傳統(tǒng)的交換機中,當一個幀進入交換機時,交換機只檢查目的MAC,然后根據(jù)自己的MAC表進行轉(zhuǎn)發(fā)或泛洪。在VLAN中除了需要知道目的MAC做轉(zhuǎn)發(fā)決定外,還要考慮幀的源地址,因為幀的源地址通常會影響它所屬VLAN,并可能影響它被轉(zhuǎn)發(fā)出去的端口。追蹤一個幀的源地址有兩種常用的方式:
幀標記(又稱顯式標記):根據(jù)數(shù)據(jù)進入交換機的端口屬于哪個VLAN來標記一個幀。當一個幀進入交換機的時候,根據(jù)那個端口所屬VLAN,為幀添加一個包含VLAN標識的域(VLAN著色),這種方式的缺點就是大多數(shù)不支持VLAN的設(shè)備會將這種更改后的幀當成無效幀丟棄。但現(xiàn)在這種技術(shù)已經(jīng)形成了一個IEEE802.1Q的標準,這個標準解決了不同廠商進行幀標記時候的兼容性問題。幀過濾(又稱隱式標記):這種方法為每個VLAN保持一張MAC地址表,確定目標后就做出轉(zhuǎn)發(fā)決定。這種方式的好處就是不更改原來的幀格式,幀通過不同的網(wǎng)絡(luò)設(shè)備都不會出現(xiàn)問題。這種方式的缺點就是每個VLAN交換機都要保存一張MAC地址表,這張表還要包含每個MAC所屬VLAN的信息,并且能根據(jù)源地址的VLAN以及MAC進行過濾轉(zhuǎn)發(fā)。
現(xiàn)階段最常使用的干線協(xié)議是802.1Q和ISL(在不同廠商設(shè)備混用的情況下一定要使用802.1Q)。
802.1Q介紹:
802.1Q是IEEE提出的一個通用標準,也是現(xiàn)在大部分廠商的默認干線傳輸協(xié)議,通過在原來的以太網(wǎng)幀頭部添加一個4字節(jié)的802.1Q頭部,然后重新計算FCS(幀效驗序列)來實現(xiàn),如下圖(圖3):

ISL(Interior Switching Link,交換機間鏈路)是思科私有的干線傳輸協(xié)議,在多廠商混合設(shè)備的場景中并不常用,了解有這個協(xié)議即可。
c.交換機間VLAN通信過程
這一部分結(jié)合"什么是VLAN干線"中的圖2,講解一下802.1Q干線協(xié)議的工作流程。
圖中PC1和PC2屬于VLAN2,PC3和PC4屬于VLAN3,SW1和SW2通過干線相連,干線運行的是802.1Q協(xié)議:
1)假設(shè)PC1發(fā)送消息給PC2,剛開始PC1不知道PC2的MAC地址,所以它首先發(fā)送ARP查詢包,查詢PC2的MAC地址,ARP查詢包以廣播形式發(fā)送。2)交換機SW1收到PC1發(fā)送過來的ARP查詢廣播包,SW1知道數(shù)據(jù)是從fa0/0接收到的,fa0/0被劃分到VLAN2中,是一個接入端口,SW1知道這是一個來自VLAN2的廣播包,SW1在MAC地址表中加入PC1的MAC和VLAN號以及對應的端口號,非VLAN交換機和VLAN交換機都會根據(jù)數(shù)據(jù)的源地址進行學習,只不過VLAN交換機除了記錄源MAC地址,還需要記錄源MAC所對應的VLAN號。3)SW1在收到的數(shù)據(jù)幀中加入VLAN2的標識(VLAN交換機從Access(接入)端口收到數(shù)據(jù)時需要插入VLAN標識),接著SW1將這個VLAN2的廣播包從除接收端口以外的所有屬于VLAN2的接口以及主干發(fā)送出去,在從所有屬于VLAN2的接入接口發(fā)送出去前需要去掉VLAN標識(VLAN交換機從Access將數(shù)據(jù)發(fā)出時要去掉VLAN標識,否則其他計算機不能識別這個加了標識的幀),從主干發(fā)送出去的幀不需要去掉VLAN標識(后面介紹到的本地VLAN除外)。也就是說如果此時SW1上還有一個非主干端口也被分配到VLAN2中,這個廣播從這接入端口送出前要去掉VLAN標識,而從SW1的fa0/2發(fā)往SW2的數(shù)據(jù)幀不需要去掉VLAN標識(本地VLAN除外)。4)PC3接收不到PC1發(fā)出的ARP廣播請求,因為連接PC3的端口被劃分到VLAN3中了,不屬于VLAN2,一個VLAN是一個廣播域。5)當SW2從自己的fa0/2接口(主干接口)接收到一個數(shù)據(jù)幀時,SW2查看數(shù)據(jù)幀中的VLAN標識,并在本地MAC地址表中添加了幀中源MAC地址、VLAN號以及對應的端口號fa0/2。接下來SW2將決定往哪轉(zhuǎn)發(fā)這個收到的數(shù)據(jù)幀,SW2通過查看VLAN標識和目的MAC地址,知道這是一個VLAN2的廣播ARP查詢包,SW2將這個包從除接收接口(fa0/2)以外的所有屬于VLAN2的接口以及其他的主干接口(如果有)發(fā)送出去,同理,在發(fā)出去之前,如果接口屬于接入接口,則去掉VLAN標識,如果是主干端口則保留VLAN標識。6)PC4是收不到這個廣播包的,因為不屬于VLAN2,這個時候PC2收到了這個ARP請求包,發(fā)現(xiàn)請求的是自己的MAC地址,PC2封裝ARP應答包發(fā)給SW2。7)SW2收到這個應答包,首先學習PC2的MAC地址和VLAN號以及對應端口到自己的MAC地址表,然后給這個數(shù)據(jù)幀添加VLAN2標識,之后SW2查詢MAC地址表,找到PC1對應的MAC號、VLAN號和端口號,SW2比較數(shù)據(jù)幀的源MAC和目的MAC在同一個VLAN2中,SW2將數(shù)據(jù)幀從目的MAC對應的fa0/2接口發(fā)出(PC1的MAC是第5步中收到SW1發(fā)來的數(shù)據(jù)幀的時候記錄的)。8)SW1收到這個數(shù)據(jù)幀,首先也是對源MAC、VLAN號以及對應端口進行學習,然后查看數(shù)據(jù)幀中的目的MAC,之前已經(jīng)保存過PC1的MAC,SW1將目的MAC所在VLAN號和源MAC所在VLAN號進行對比,發(fā)現(xiàn)他們處于同一個VLAN2下,SW2將這個數(shù)據(jù)幀中的VLAN標記去除并直接從目的MAC(PC1的MAC)所對應的端口fa0/0發(fā)給PC1。9)PC1成功收到ARP應答包,接下來的通信過程和這個步驟類似。
總結(jié):交換機何時添加802.1Q標簽頭(VLAN標簽)與交換機的接口有關(guān),如果交換機的接口是接入端口(access),一般用于連接計算機,在數(shù)據(jù)幀進入時被添加802.1Q標簽頭,數(shù)據(jù)幀從接入端口發(fā)出時去掉標簽頭;如果交換機的接口是主干接口(Trunk),一般用于連接另外一臺交換機或路由器,數(shù)據(jù)從這種接口發(fā)出一般不會去掉標簽頭(后面演示的Native VLAN除外)。
d.DTP協(xié)議
DTP(Dynamic Trunking Protocol,動態(tài)主干協(xié)議),是思科私有的協(xié)議,其它廠商不支持該協(xié)議,當交換機上某些端口被配置成主干模式時,DTP自動運行,用來協(xié)商鏈路能否成為主干鏈路。DTP支持802.1Q和ISL封裝的主干鏈路協(xié)商。
下面是思科交換機端口的幾種主干模式:
OFF(關(guān)閉):使用"switchport mode access"命令,靜態(tài)配置交換機端口為接入端口(非主干端口)。ON(打開):使用"switchport mode trunk"命令,靜態(tài)配置交換機端口為主干端口。Dynamic auto(動態(tài)自動):使用"switchport mode dynamic auto"命令,靜態(tài)配置交換機端口為動態(tài)自動模式。Dynamic desirable(動態(tài)期望):使用"switchport mode dynamic desirable"命令,靜態(tài)配置交換機端口為動態(tài)期望模式。Nonegotiate(關(guān)閉DTP協(xié)議):使用"switchport nonegotiate"命令,將關(guān)閉DTP協(xié)議。
思科交換機的接口可以配置以上五種模式。下表顯示了,交換機和交換機之間相連,在什么情況下能建立起主干鏈路,什么情況下不能建立起主干線路:

舉一個例子:兩臺交換機相連,一端使用命令"switchport mode dynamic auto",另外一端使用命令"switchport mode trunk",那么根據(jù)這張表,最后的協(xié)商結(jié)果就是Trunking,也就是成功協(xié)商成主干鏈路。后面"配置主干端口"會演示到DTP,這個表可以作為參考。
0×3.VLAN配置實例
這個實例的配置環(huán)境在"Cisco Packet Tracer 6.2"模擬器中進行(實驗同樣可以使用GNS3完成),實驗拓撲如下:

五臺計算機,子網(wǎng)24位,IP地址如圖所示,其中PC1、PC2連接在SW1上,PC1和交換機之間還連接了一臺IP電話,PC3、PC4連接在SW2上,PC5連接在一臺集線器上,SW1和SW2也連接在這臺集線器上,在沒有劃分VLAN前,整個網(wǎng)絡(luò)屬于同一個廣播域,PC1-5互相能夠ping通;現(xiàn)在要將PC1、PC3、PC5劃分到VLAN2里面,將PC2、PC4劃分到VLAN3里面,配置主干、本地VLAN、語音VLAN。(注意,交換機和集線器之間的連線需要使用交叉線,其他全部使用直通線;實驗前需要將IP電話的電源線拖動到電源接口連接起來,點擊IP電話就能看到IP電話的背板,將下面的電源線拖動到背板的圓形接口上即可完成連線;PC配置IP的方法就是點擊PC圖標選擇Desktop,在里面可以看到一個IP設(shè)置選項,其中的"Command Prompt"就類似于電腦的cmd窗口)
a.創(chuàng)建VLAN
打開SW1和SW2的CLI界面(點擊交換機圖標,然后選擇CLI,就可以輸入命令了),首先創(chuàng)建VLAN2和VLAN3;
SW1配置:
01
Switch>
en
02
Switch#
conf
t
03
Switch(config)#
host
SW1
04
SW1(config)#vlan 2 /創(chuàng)建VLAN2/
05
SW1(config-vlan)#name vlan2name /給VLAN2命名/
06
SW1(config-vlan)#vlan 3 /創(chuàng)建VLAN3/
07
SW1(config-vlan)#name vlan3name /給VLAN3命名/
08
SW1(config-vlan)#
end
09
SW1#
10
11
/*
12
- 查看VLAN信息,可以看到默認情況下所有端口都屬于VLAN1,
13
- VLAN1也是交換機上默認存在的VLAN。
14
15
- 下面是我們新建的VLAN2和VLAN3。
16
17
- VLAN1002-1005也是交換機上默認存在的VLAN,有特殊用途,這里暫且不用理會。
18
*/
19
SW1#
show
vlan
20
21
VLAN Name Status Ports
22
23
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
24
Fa0/5, Fa0/6, Fa0/7, Fa0/8
25
Fa0/9, Fa0/10, Fa0/11, Fa0/12
26
Fa0/13, Fa0/14, Fa0/15, Fa0/16
27
Fa0/17, Fa0/18, Fa0/19, Fa0/20
28
Fa0/21, Fa0/22, Fa0/23, Fa0/24
29
Gig1/1, Gig1/2
30
2 vlan2name active
31
3 vlan3name active
32
1002 fddi-default act/unsup
33
1003 token-ring-default act/unsup
34
1004 fddinet-default act/unsup
35
1005 trnet-default act/unsup
SW2配置:
1
Switch>
en
2
Switch#
conf
t
3
Switch(config)#
host
SW2
4
SW2(config)#vlan 2
5
SW2(config-vlan)#name vlan2name
6
SW2(config-vlan)#vlan 3
7
SW2(config-vlan)#name vlan3name
8
SW2(config-vlan)#
end
這樣VLAN2和VLAN3就創(chuàng)建好了,繼續(xù)下一步。
b.把端口加入VLAN
默認情況下所有端口都屬于VLAN1,根據(jù)拓撲要求,我們需要調(diào)整SW1和SW2上的端口,在SW1上將和PC1相連的端口靜態(tài)的分配給VLAN2,將于PC2相連的端口靜態(tài)的分配給VLAN3,同理SW2上也要做出調(diào)整;
SW1配置:
01
SW1#
conf
t
02
SW1(config)#
int
fa 0/1 /進入和PC1相連的端口/
03
/交換機默認的端口模式是
"Dynamic auto"
,由于這個端口連接的是終端設(shè)備,所以要配置成接入接口/
04
SW1(config-if)#
switchport
mode
access
05
SW1(config-if)#
switchport
access
vlan 2 /將這個接口劃分到VLAN2/
06
SW1(config-if)#
int
fa 0/2 /進入和PC2相連的端口/
07
SW1(config-if)#
swi
mod
acc
/同上,這是簡寫形式/
08
SW1(config-if)#
swi
acc
vlan 3
09
SW1(config-if)#
end
10
SW1#
11
12
/查看VLAN分配情況,可以看到Fa0/1和Fa0/2被分配到了對應的VLAN下/
13
SW1#
show
vlan
brief
14
15
VLAN Name Status Ports
16
17
1 default active Fa0/3, Fa0/4, Fa0/5, Fa0/6
18
Fa0/7, Fa0/8, Fa0/9, Fa0/10
19
Fa0/11, Fa0/12, Fa0/13, Fa0/14
20
Fa0/15, Fa0/16, Fa0/17, Fa0/18
21
Fa0/19, Fa0/20, Fa0/21, Fa0/22
22
Fa0/23, Fa0/24, Gig1/1, Gig1/2
23
2 vlan2name active Fa0/1
24
3 vlan3name active Fa0/2
25
1002 fddi-default active
26
1003 token-ring-default active
27
1004 fddinet-default active
28
1005 trnet-default active
SW2配置:
1
SW2#
conf
t
2
SW2(config)#
int
fa 0/1
3
SW2(config-if)#
swi
mod
acc
4
SW2(config-if)#
swi
acc
vlan 2
5
SW2(config-if)#
int
fa 0/2
6
SW2(config-if)#
swi
mod
acc
7
SW2(config-if)#
swi
acc
vlan 3
8
SW2(config-if)#
end
端口分配完畢后,在PC1上Ping拓撲中任意一臺其他的PC,都Ping不通;PC1 ping不通PC2是因為他們不在一個VLAN中,ping不通其他幾臺是因為SW1的fa0/24端口默認屬于VLAN1,并且是一個接入端口,該端口只轉(zhuǎn)發(fā)VLAN1的數(shù)據(jù)包,而PC1在VLAN2中,所以ping不通。繼續(xù)下一步,配置主干。
c.配置主干端口(Trunk)
在SW1和SW2上配置fa0/24為主干端口:
SW1配置:
01
SW1#
conf
t
02
SW1(config)#
int
fa 0/24
03
04
/*
05
- 配置主干模式,這種模式就是前面DTP協(xié)議協(xié)商圖中的
"ON and Nonegotiate"
,
06
- 交換機兩端都配置成這種模式,協(xié)商的結(jié)果就是Trunking,即主干。
07
*/
08
SW1(config-if)#
switchport
mode
trunk
09
SW1(config-if)#
switchport
nonegotiate
10
11
/配置主干允許傳輸?shù)腣LAN,用?查看一下可以執(zhí)行的操作/
12
SW1(config-if)#
switchport
trunk
allowed vlan ?
13
WORD VLAN IDs of the allowed VLANs when this port is in trunking
mode
14
add
add
VLANs to the current list
15
all all VLANs
16
except all VLANs except the following
17
none
no
VLANs
18
remove remove VLANs from the current list
19
20
/*
21
- 本例設(shè)置成允許所有VLAN的傳輸。
22
- 如果只允許VLAN1、3、1002-1005,可以像下面這樣寫,
23
switchport
trunk
allowed vlan 1,3,1002-1005
24
- 如果想追加新的VLAN2被允許可以這樣寫:
25
switchport
trunk
allowed vlan
add
2
26
*/
27
SW1(config-if)#
switchport
trunk
allowed vlan all
28
SW1(config-if)#
end
SW2配置:
1
SW2(config)#
int
fa 0/24
2
3
/SW2的fa0/24也配置成
"ON and Nonegotiate"
模式/
4
SW2(config-if)#
swi
mod
trunk
5
SW2(config-if)#
swi
nonegotiate
6
7
SW2(config-if)#
swi
trunk
allowed vlan all
8
SW2(config-if)#
end
配置完成后在SW1上查看主干鏈路狀態(tài):
01
SW1#
show
interfaces
fa 0/24
switchport
02
Name: Fa0/24
03
Switchport: Enabled
04
Administrative Mode:
trunk
/配置的端口模式是主干/
05
Operational Mode:
trunk
/鏈路的狀態(tài)是主干/
06
Administrative Trunking Encapsulation: dot1q /主干默認封裝協(xié)議dot1q(802.1Q)/
07
Operational Trunking Encapsulation: dot1q /有效的封裝協(xié)議也是dot1q/
08
Negotiation of Trunking: Off /DTP協(xié)議關(guān)閉/
09
Access Mode VLAN: 1 (default) /端口默認VLAN是VLAN1/
10
Trunking Native Mode VLAN: 1 (default) /該主干端口的本地VLAN是VLAN1/
11
Voice VLAN: none /沒有配置語言VLAN/
查看SW1工作在主干模式的端口:
01
SW1#
show
interfaces
trunk
02
/端口 模式 封裝協(xié)議 狀態(tài) 本地VLAN號/
03
Port Mode Encapsulation Status Native vlan
04
Fa0/24 on 802.1q trunking 1
05
/主干上允許傳輸?shù)腣LAN號/
06
Port Vlans allowed on
trunk
07
Fa0/24 1-1005
08
09
Port Vlans allowed and active in management domain
10
Fa0/24 1,2,3
11
12
Port Vlans in spanning tree forwarding state and not pruned
13
Fa0/24 1,2,3
在這一步,大家可以使用DTP協(xié)議部分介紹的命令,將交換機兩端的模式替換成協(xié)商表里面的其他模式,來測試DTP協(xié)議。
現(xiàn)在,再次測試Ping,PC1和PC3可以互相Ping通,PC2和PC4可以互相Ping通,但是PC1和PC3確Ping不通PC5,根據(jù)拓撲圖,PC5也必須在VLAN2中,可以和PC1和PC3通信,是什么原因造成這一情況的呢?繼續(xù)往下看。
Ps:"Cisco Packet Tracer 6.2"不支持更改主干端口封裝協(xié)議的命令,在真實交換機中可以通過下面的命令來更改主干端口的封裝協(xié)議:
1
/進入主干接口進行更改/
2
Switch(config-if)#
switchport
trunk
encapsulation
?
3
dot1q ....../802.1Q/
4
isl ....../思科私有的ISL/
5
6
/將主干端口的封裝協(xié)議改成802.1Q/
7
Switch(config-if)#
switchport
trunk
encapsulation
dot1q
d.本地VLAN
本地Vlan(Native Vlan)是主干端口的特征,使用802.1Q協(xié)議封裝的主干端口,將數(shù)據(jù)幀從主干發(fā)出時,如果數(shù)據(jù)幀中的VLAN標識與主干端口的本地VLAN號一致,那么交換機清除數(shù)據(jù)幀中的VLAN標識,再從主干端口發(fā)出;使用802.1Q封裝的主干端口,從主干端口接收到數(shù)據(jù)幀時,如果數(shù)據(jù)幀中沒有VLAN標識,交換機將給這個數(shù)據(jù)幀添加接收這個幀的主干端口的本地VLAN號。
理解了上面主干端口本地VLAN的工作方式后,就可以解釋上面的問題了,PC1屬于VLAN2,PC1 ping PC5的時候,首先要獲取PC5的MAC地址,ARP請求包被以廣播的形式發(fā)送出去,交換機SW1在廣播幀上添加VLAN2標識,然后從fa0/24發(fā)出,fa0/24是主干端口默認情況下該主干端口的默認本地VLAN號是1,和要發(fā)出去的數(shù)據(jù)幀中的VLAN號不一樣,所以SW1不做任何修改,直接將這個數(shù)據(jù)幀從主干端口發(fā)出,由于PC5連接在集線器上,集線器收到這個數(shù)據(jù)幀后簡單的放大信號,然后從除接收端口以外的所有端口發(fā)出,PC5收到這個數(shù)據(jù)幀,由于數(shù)據(jù)幀是添加了VLAN2標識的,PC5直接判斷這是一個錯誤的幀,最后丟棄。
在這種情況下,如果想讓PC1和PC3能夠ping通PC5,其實可以將SW1和SW2的fa0/24這個主干端口的本地VLAN號改成VLAN2,這樣根據(jù)上面所說的本地VLAN的工作原理,當SW1將VLAN2的數(shù)據(jù)幀從這個主干發(fā)出時,將去掉幀中的VLAN標記,那么PC5收到的就是一個正常的幀了。
SW1設(shè)置:
1
SW2(config)#
int
fa 0/24 /將主干端口的本地VLAN改成VLAN2/
2
SW2(config-if)#
switchport
trunk
native
vlan 2
3
SW2(config-if)#
end
SW2設(shè)置:
1
SW1(config)#
int
fa 0/24
2
SW1(config-if)#
switchport
trunk
native
vlan 2
3
SW1(config-if)#
end
現(xiàn)在再次測試PC1以及PC3 ping PC5,都能夠成功Ping通。根據(jù)本地VLAN的工作原理,PC5去ping PC2和PC4是ping不通的,因為當SW1或SW2從自己的主干接收到一個沒有打標記的VLAN幀后,它會給這個幀打上這個接收端口的本地VLAN標記,即VLAN2的標記,而PC2和PC4屬于VLAN3,這個數(shù)據(jù)幀不會送給任何被劃分到VLAN3的端口。
大家可能注意到拓撲圖中SW1和PC1之間連接了一臺IP電話,下面繼續(xù)配置語音VLAN。
e.語音VLAN
IP語音電話需要帶寬保證、優(yōu)先傳輸、擁塞避免并且要求穿過整個網(wǎng)絡(luò)的延時小于150毫秒,思科IP電話機一般有兩個接口,一個接口可以接交換機,一個接口可以接PC,IP電話可以單獨連接在交換機上,有時為了節(jié)約端口,可以連接IP電話后再連接計算機,本例就使用了這種方式。
下面簡單的介紹一下VoIP的配置,在SW1上執(zhí)行下面的命令:
01
/*
02
- 在沒有配置語音VLAN前,IP電話和PC1處于同一個VLAN2中,
03
- Cisco交換機支持一種獨特的功能,
04
- 可以通過下面這條命令將IP電話和PC工作站劃分到不同的VLAN中。
05
*/
06
SW1(config)#
int
fa 0/1
07
SW1(config-if)#
switchport
voice
vlan 50
08
SW1(config-if)#
end
09
10
/查看交換接口參數(shù),可以看到Vioce VLAN變成了50/
11
SW1#
show
int
fa 0/1
switchport
12
Voice VLAN: 50
f.VLAN維護操作
可以在SW1上查看全局配置信息:
01
SW1#
show
running-config
02
Building configuration...
03
!
04
interface
FastEthernet0/1
05
switchport
access
vlan 2
06
switchport
mode
access
07
switchport
voice
vlan 50
08
!
09
interface
FastEthernet0/2
10
switchport
access
vlan 3
11
switchport
mode
access
12
!
13
....
14
!
15
interface
FastEthernet0/24
16
switchport
trunk
native
vlan 2
17
switchport
mode
trunk
18
switchport
nonegotiate
19
!
20
....
從上面的輸出中我們發(fā)現(xiàn),找不到VLAN的創(chuàng)建信息,這是因為VLAN的創(chuàng)建信息是被單獨保存在vlan.dat文件中,可以使用下面的命令查看:
01
/*
02
- dir命令可以查看此交換機的Flash空間中的文件,
03
- 從命令的輸出可以看到Flash空間中除了保存IOS外還保存了vlan.dat文件。
04
*/
05
SW1#dir
06
Directory of flash:/
07
08
1 -rw- 4414921 c2960-lanbase-mz.122-25.FX.bin
09
2 -rw- 676 vlan.dat
10
11
64016384 bytes total (59600787 bytes free)
使用"show vlan brief"可以查看交換機上VLAN配置信息:
01
/*
02
- 從配置信息可以看到,SW1上新建立了兩個VLAN(vlan2和vlan3),
03
- 每個VLAN中還包含了一個端口,F(xiàn)a0/24是主干端口,不屬于任何VLAN。
04
*/
05
SW1#
show
vlan
brief
06
07
VLAN Name Status Ports
08
09
1 default active Fa0/3, Fa0/4, Fa0/5, Fa0/6
10
Fa0/7, Fa0/8, Fa0/9, Fa0/10
11
Fa0/11, Fa0/12, Fa0/13, Fa0/14
12
Fa0/15, Fa0/16, Fa0/17, Fa0/18
13
Fa0/19, Fa0/20, Fa0/21, Fa0/22
14
Fa0/23, Gig1/1, Gig1/2
15
2 vlan2name active Fa0/1
16
3 vlan3name active Fa0/2
17
1002 fddi-default active
18
1003 token-ring-default active
19
1004 fddinet-default active
20
1005 trnet-default active
使用"reload"命令重啟SW1:
1
SW1#
reload
2
Proceed with
reload
? [confirm]
3
4
/在真實交換機上還會出現(xiàn)下面的提示信息,輸入
no
,不保存配置/
5
System configuration has been modified. Save?[yes/
no
]:
no
重啟完成后再次查看VLAN配置:
01
/*
02
- 從下面的輸出可以看到,雖然沒有保存配置文件,但是創(chuàng)建的VLAN還在,
03
- 這是因為創(chuàng)建的VLAN信息是默認保存在Flash的vlan.dat里面的,
04
- 但是端口的分配信息是保存在配置文件中的,所以端口分配信息丟失了。
05
*/
06
Switch#
show
vlan
brief
07
08
VLAN Name Status Ports
09
10
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
11
Fa0/5, Fa0/6, Fa0/7, Fa0/8
12
Fa0/9, Fa0/10, Fa0/11, Fa0/12
13
Fa0/13, Fa0/14, Fa0/15, Fa0/16
14
Fa0/17, Fa0/18, Fa0/19, Fa0/20
15
Fa0/21, Fa0/22, Fa0/23, Fa0/24
16
Gig1/1, Gig1/2
17
2 vlan2name active
18
3 vlan3name active
19
1002 fddi-default active
20
1003 token-ring-default active
21
1004 fddinet-default active
22
1005 trnet-default active
其實vlan.dat文件中不僅僅包含了VLAN信息,還包含了VTP信息(下一篇文章中將會講到),可以通過下面這條命令刪除vlan.dat文件:
1
Switch#delete vlan.dat
2
Delete filename [vlan.dat]? /回車確定/
3
Delete flash:/vlan.dat? [confirm]
重啟后再次"show vlan brief"就看不到我們創(chuàng)建的VLAN信息了。
g.在GNS3上模擬配置VLAN

1
/這里僅給出PC1的配置,請參考上圖配置其他VPCS/
2
VPCS> set pcname PC1
3
PC1>
ip
192.168.1.1/24
IOU1配置:
01
/GNS3中的配置與Cisco Packet Tracer基本一致,唯一不同的是,IOU中的交換機IOS支持
encapsulation
命令,而真實環(huán)境中也必須在主干兩段配置這個命令/
02
IOU1#
conf
t
03
IOU1(config)#
host
SW1
04
SW1(config)#vlan 2
05
SW1(config-vlan)#name vlan2
06
SW1(config-vlan)#vlan 3
07
SW1(config-vlan)#name vlan3
08
SW1(config-vlan)#
int
e0/0
09
SW1(config-if)#
swi
mod
acc
10
SW1(config-if)#
swi
acc
vlan 2
11
SW1(config-if)#
int
e0/1
12
SW1(config-if)#
swi
mod
acc
13
SW1(config-if)#
swi
acc
vlan 3
14
SW1(config-if)#
int
e3/3
15
SW1(config-if)#
swi
mod
trunk
16
/更改主干線路封裝協(xié)議為802.1Q/
17
SW1(config-if)#
swi
trunk
encapsulation
dot1q
18
SW1(config-if)#
swi
trunk
allowed vlan all
19
SW1(config-if)#
end
IOU2配置:
01
IOU2#
conf
t
02
IOU2(config)#
host
SW2
03
SW2(config)#
int
e0/0
04
SW2(config-if)#
exit
05
SW2(config)#vlan 2
06
SW2(config-vlan)#name vlan2
07
SW2(config-vlan)#vlan 3
08
SW2(config-vlan)#name vlan3
09
SW2(config-vlan)#
int
e0/0
10
SW2(config-if)#
swi
mod
acc
11
SW2(config-if)#
swi
acc
vlan 2
12
SW2(config-if)#
int
e0/1
13
SW2(config-if)#
swi
mod
acc
14
SW2(config-if)#
swi
acc
vlan 3
15
SW2(config-if)#
int
e3/3
16
SW2(config-if)#
swi
mod
tr
17
SW2(config-if)#
swi
tr enc dot1q
18
SW2(config-if)#
swi
tr allow vlan all
19
SW2(config-if)#
end
配置完成后,PC1能Ping通PC2,PC3能夠Ping通PC4,Vlan各維護命令與"Cisco Packet Tracer"中的一致,這里不再贅述。
0×4.VLAN間路由
在上面的試驗中VLAN之間是不能互訪的,VLAN間的互訪需要借助路由器或三層交換機來實現(xiàn)。
a.基于路由器物理接口的VLAN間路由
使用GNS3搭建下面的拓撲:

PC1-2是VPCS模擬的計算機,R1是GNS3中運行的c3640交換機,IOU是IOU虛擬機中運行的交換機,PC1被劃分到VLAN2中,PC2被劃分到VLAN3中,交換機的e3/3和e3/2接口也分別被劃分到這兩個VLAN中,設(shè)備連線與IP如上圖所示。
PC1-2配置:
1
VPCS> set pcname PC1
2
PC1>
ip
192.168.1.1/24 192.168.1.254
3
4
VPCS> set pcname PC2
5
PC2>
ip
192.168.2.1/24 192.168.2.254
IOU配置:
01
IOU1#
conf
t
02
IOU1(config)#vlan 2
03
IOU1(config-vlan)#name vlan2
04
IOU1(config-vlan)#vlan 3
05
IOU1(config-vlan)#name vlan3
06
IOU1(config-vlan)#
int
e0/0
07
IOU1(config-if)#
swi
mod
acc
08
IOU1(config-if)#
swi
acc
vlan 2
09
IOU1(config-if)#
int
e 0/1
10
IOU1(config-if)#
swi
mod
acc
11
IOU1(config-if)#
swi
acc
vlan 3
12
IOU1(config-if)#
int
e3/3
13
IOU1(config-if)#
swi
mod
acc
14
IOU1(config-if)#
swi
acc
vlan 2
15
IOU1(config-if)#
int
e3/2
16
IOU1(config-if)#
swi
mod
acc
17
IOU1(config-if)#
swi
acc
vlan 3
18
IOU1(config-if)#
end
R1配置:
1
R1#
conf
t
2
R1(config)#
int
fa 1/0
3
R1(config-if)#
ip
add
192.168.1.254 255.255.255.0
4
R1(config-if)#
no
shut
5
R1(config-if)#
int
fa 2/0
6
R1(config-if)#
ip
add
192.168.2.254 255.255.255.0
7
R1(config-if)#
no
shut
8
R1(config-if)#
end
配置完成后在PC1上可以Ping通PC2,VLAN2和VLAN3通信成功。
b.基于路由器子接口的VLAN間路由(單臂路由)
在上面的實例中,如果使用路由的物理接口來配置,那么交換機上有多少個VLAN就需要在路由器上配置多少個物理接口來實現(xiàn)VLAN間的互訪,這樣成本很高?,F(xiàn)實中一般使用"單臂路由"的形式,也就是使用路由器接口的子接口來實現(xiàn)VLAN間的互訪,現(xiàn)在將上面的實驗中的設(shè)備全部停止,刪除R1和IOU之間的連線,重新連接如下圖所示,路由器R1的fa1/0接口上配置兩個子接口分別作為VLAN2和VLAN3的網(wǎng)關(guān),IOU的e3/3接口需要配置成主干:

PC1-2配置:
1
VPCS> set pcname PC1
2
PC1>
ip
192.168.1.1/24 192.168.1.254
3
4
VPCS> set pcname PC2
5
PC2>
ip
192.168.2.1/24 192.168.2.254
R1配置:
01
R1>
en
02
R1#
conf
t
03
R1(config)#
int
fa 1/0
04
/父接口只需要打開即可/
05
R1(config-if)#
no
shut
06
/創(chuàng)建子接口/
07
R1(config-if)#
int
fa 1/0.1
08
/*
09
- 子接口封裝模式要和SW1的主干封裝模式(dot1Q)一致,
10
- 在dot1Q后面的數(shù)字要和VLAN號對應,這個子接口是連接VLAN2的,所以這里是2。
11
*/
12
R1(config-subif)#
encapsulation
dot1Q 2
13
R1(config-subif)#
ip
add
192.168.1.254 255.255.255.0
14
R1(config-subif)#
no
shut
15
R1(config-subif)#
int
fa 1/0.2
16
R1(config-subif)#enc dot1Q 3
17
R1(config-subif)#
ip
add
192.168.2.254 255.255.255.0
18
R1(config-subif)#
no
shut
19
R1(config-subif)#
end
IOU配置:
01
IOU1#
conf
t
02
IOU1(config)#
host
SW1
03
SW1(config)#vlan 2
04
SW1(config-vlan)#name vlan2
05
SW1(config-vlan)#vlan 3
06
SW1(config-vlan)#name vlan3
07
SW1(config-vlan)#
int
e0/0
08
SW1(config-if)#
swi
mod
acc
09
SW1(config-if)#
swi
acc
vlan 2
10
SW1(config-if)#
int
e0/1
11
SW1(config-if)#
swi
mod
acc
12
SW1(config-if)#
swi
acc
vlan 3
13
SW1(config-if)#
int
e3/3
14
SW1(config-if)#
swi
mod
trunk
15
SW1(config-if)#
swi
trunk
enc dot1q
16
SW1(config-if)#
swi
trunk
allow vlan all
17
SW1(config-if)#
end
注意,請先配置R1再配置IOU的e3/3接口為主干,否則很有可能不能完成主干鏈路的協(xié)商導致通信失敗。
配置完成后PC1和PC2能正常通信。
c.交換機上的端口類型
思科交換機有三種類型的端口:交換端口(Switchport)、路由端口(No Switchport)和SVI端口(Switch Virtual Interface,交換虛擬端口)。
二層交換機的端口類型:
交換端口:二層交換機上的物理接口就是一個二層的交換端口。SVI端口:二層交換機也可以被配置一個IP地址,來實現(xiàn)對交換機的遠程管理。
在上面的單臂路由實例中,可以給SW1配置一個SVI端口用于遠程管理:
01
/給SW1配置一個用來網(wǎng)管的IP地址/
02
SW1(config)#
int
vlan 2
03
SW1(config-if)#
ip
add
192.168.1.200 255.255.255.0
04
SW1(config-if)#
no
shut
/打開此SVI接口/
05
SW1(config-if)#
exit
06
/配置網(wǎng)關(guān)指向R1的子接口/
07
SW1(config)#
ip
default-gateway
192.168.1.254
08
/配置
vty
及特權(quán)密碼/
09
SW1(config)#line
vty
0 4
10
SW1(config-line)#
pass
123
11
SW1(config-line)#
login
12
SW1(config-line)#
exit
13
SW1(config)#enab sec 123
14
SW1(config)#
end
這樣PC1和PC2以及R1均可以使用這個IP地址(192.168.1.200)對SW1進行遠程管理,讀者可以嘗試著在R1上telnet這個地址。在單臂路由的環(huán)境中,交換機的網(wǎng)關(guān)地址可以配置在任何一個VLAN的SVI上,但必須滿足兩個條件:
第一:這個VLAN必須在間路由上有子接口(或物理接口)作為網(wǎng)關(guān)。第二:只有最小的激活SVI端口(no shut)是有效的。
本例中,可以將SVI配置在VLAN3上,但是必須關(guān)閉剛才配置的VLAN2的SVI,如果不關(guān)閉VLAN2的SVI,那么只有VLAN2的SVI會被使用:
01
/刪除之前配置的默認網(wǎng)關(guān)/
02
SW1(config)#
no
ip
default-gateway
192.168.1.254
03
SW1(config)#
int
vlan 2 /關(guān)閉vlan2/
04
SW1(config-if)#
shut
05
SW1(config-if)#
int
vlan 3 /將網(wǎng)管IP配置在VLAN3上/
06
SW1(config-if)#
ip
add
192.168.2.200 255.255.255.0
07
SW1(config-if)#
no
shut
08
SW1(config-if)#
exit
09
10
/配置在哪個VLAN上默認網(wǎng)關(guān)就要指向那個VLAN的網(wǎng)關(guān)/
11
SW1(config)#
ip
default-gateway
192.168.2.254
12
SW1(config)#
end
三層交換機的端口類型:
三層交換機除了支持二層交換機的"交換端口"、"SVI端口"之外,還支持"路由端口",可以使用下面的命令將一臺三層交換機的某個端口轉(zhuǎn)變成"路由端口":
01
SW1(config)#
int
e2/2
02
/在沒有被配置成路由接口以前,配置IP會出現(xiàn)錯誤提示/
03
SW1(config-if)#
ip
add
192.168.22.22 255.255.255.0
04
05
% IP addresses may not be configured on L2 links.
06
07
/用下面的命令將接口變成路由接口/
08
SW1(config-if)#
no
switchport
09
/之后就能配置IP地址了就和路由接口一樣/
10
SW1(config-if)#
ip
add
192.168.22.22 255.255.255.0
11
SW1(config-if)#
no
shut
12
13
/可以使用下面的命令將3層接口再轉(zhuǎn)換成2層接口/
14
SW1(config)#
int
e2/2
15
SW1(config-if)#
switchport
16
SW1(config-if)#
end
路由端口雖然可以配置IP地址,具有三層接口的特性,但同時也失去了二層接口的特性,比如端口安全等。
d.基于三層交換機的VLAN間路由
基于三層交換機的VLAN間路由實際上就是利用三層交換機的SVI作為每個VLAN的網(wǎng)關(guān)。如下圖所示,IOU1是一臺三層交換機,在它上面啟用了對應每個VLAN號的SVI接口:

IOU1配置:
01
IOU1#
conf
t
02
IOU1(config)#
host
SW1
03
SW1(config)#vlan 2
04
SW1(config-vlan)#name vlan2
05
SW1(config-vlan)#vlan 3
06
SW1(config-vlan)#name vlan3
07
SW1(config-vlan)#
int
e0/0
08
SW1(config-if)#
swi
mod
acc
09
SW1(config-if)#
swi
acc
vlan 2
10
SW1(config-if)#
int
e0/1
11
SW1(config-if)#
swi
mod
acc
12
SW1(config-if)#
swi
acc
vlan 3
13
/配置對應VLAN號的SVI端口/
14
SW1(config-if)#
int
vlan 2
15
SW1(config-if)#
ip
add
192.168.1.254 255.255.255.0
16
SW1(config-if)#
no
shut
17
SW1(config-if)#
int
vlan 3
18
SW1(config-if)#
ip
add
192.168.2.254 255.255.255.0
19
SW1(config-if)#
no
shut
20
SW1(config-if)#
end
三層交換機的VLAN間路由配置是最簡單的,注意SVI端口號和VLAN號對應就可以了,配置完成后PC1能Ping通PC2。到此VLAN間路由配置的三種方法介紹完畢。
e.路由器和三層交換機在實現(xiàn)VLAN間路由上的區(qū)別
在前面兩個基于路由器的VLAN間路由上,不同VLAN間的通信都要經(jīng)過路由器,而經(jīng)過路由器的延時比經(jīng)過交換機的延時大,因為路由器比交換機處理過程復雜(對每個數(shù)據(jù)幀都得解封裝-查詢路由表-再封裝);其次就是路由和交換機之間的線路會成為瓶頸。
而在基于三層交換機的VLAN間路由上,首先不存在線路瓶頸,因為在交換機內(nèi)部,交換機的背板帶寬可以上幾十GB甚至TB;其次假設(shè)VLAN2中的PC1要和VLAN3中的PC2進行通信,PC1將數(shù)據(jù)包發(fā)給三層交換機上的SVI端口,三層交換機知道這是一個VLAN間的通信,三層交換機將數(shù)據(jù)包通過背板電路發(fā)給路由模塊,路由模塊解封裝查詢路由表,然后再次封裝發(fā)給交換模塊,交換模塊查詢MAC表最后封裝成幀,從對應接口發(fā)出去。后面相同目的地的數(shù)據(jù)包直接查詢緩存進行轉(zhuǎn)發(fā),而不發(fā)往路由模塊(一次路由,多次交換),這就大大提高了轉(zhuǎn)發(fā)速度。