交換機 vlan設置


交換機原理

  • 交換機基於數據的源mac地址進行學習
    由於交換機可以學習mac地址,把學習到的mac地址,存放到mac-address table,每一個表項可以保存300秒,這個表也叫cam表,也可以叫mac地址表
  • 基於數據的目的mac地址,查詢交換機的mac地址表,如果找到了,單播出去,如果沒有找到,則泛洪
  • 交換機的一個接口可以學習多個mac地址
    為什么一個接口會學習多個mac地址呢?因為接口還可以連另一個交換機,另一個交換機下面有好多pc。
  • 一個mac地址只能被一個交換機接口學習
    一台交換機的2個接口都接收到了相同的mac地址,把這個mac記錄到哪個接口呢?后到的優先。
  • 如果3台交換機形成了一個環,就會產生廣播風暴,交換機有防環協議。

由糟糕的網絡設計,引出划分vlan的必要性

  • 巨大的廣播域,導致泛洪驗證,性能低下
  • 一台機器中了病毒,由於沒有隔離,會迅速傳染給網絡內的其他主機。
  • 不方便管理

vlan概要

辦公樓有3層,每層都有IT部,HR部,銷售部。把在1,2,3層的IT划分成一個vlan;把在1,2,3層的HR部划分成一個vlan;在1,2,3層的銷售划分成一個vlan;這樣做的目的是便於管理。

vlan特點

相同vlan即便在不同的交換機下,也可以相互通信;不同vlan即便是在同一個交換機下也不能通信。

vlan運作

紅色的是一個vlan,黑色的是一個vlan,綠色的是一個vlan,它們都在交換機A里。

雖然紅色和黑色在同一個交換機下,但是它們之間不能通信。

紅色的是一個vlan,黑色的是一個vlan,綠色的是一個vlan,它們既在交換機A里,也在交換機B里。

即使不在同一個交換機下,紅色的vlan是可以跨交換機通信的。

交換機A和交換機B連接的2個接口,必須修改成Trunk接口。Trunk接口不屬於任何vlan,所以所有vlan的數據都能通過它傳輸。

那么trunk如何能夠識別vlan號的呢,出交換機A時,trunk接口在原來的報文的以太網頭部加一個4個字節的標記,標記里存放的是vlan號,然后傳到了交換機B的trunk接口后,trunk接口查看以太網頭部的標記,就知道了是哪個vlan過來的數據,然后把標記去掉后,傳遞個目標vlan。

打標記和去掉標記的協議有2種:

  • ISL:cisco專有的協議,是在報文的以太網頭部在加一個ISL頭部,把vlan號放進去。
  • 802.1Q:國際標准,所有廠商的交換機都支持。直接把vlan號放到報文的以太網頭部里。所有一般都使用此協議。

  • cisco交換機下所有接口,默認都屬於vlan1
  • 交換機最多支持4096個vlan號。范圍是0-4095.其中0號和4095號不能用。
  • vlan1,vlan1002,vlan1003,vlan1004,vlan1005是交換機初始就有的vlan號,而且不能被刪除。vlan1能使用,其他4個不能使用,是保留的。
    • 1-1001:標准vlan
    • 1006-4094:擴展vlan。cisco 3560以上的型號才支持,vtp協議的transparent模式下可用。

實驗

添加2個pc,給pc設置ip的命令:

PC1> ip 192.168.1.10 255.255.255.0
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0

添加一個交換機,查看vlan表show vlan brief

IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

創建vlan方法1:先進入創建模式vlan database,然后vlan vlan號

但執行完vlan database后,不是立即創建vlan,必須使用exit,保存並退出后,才真正創建vlan。

IOU2#vlan database
% Warning: It is recommended to configure VLAN from config mode,
  as VLAN database mode is being deprecated. Please consult user
  documentation for configuring VTP/VLAN in config mode.
IOU2(vlan)#vlan 10
VLAN 10 added:
    Name: VLAN0010
IOU2(vlan)#exit
APPLY completed.
Exiting....
IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
10   VLAN0010                         active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

修改vlan的名字:vlan 10 name NAME

IOU2(vlan)#vlan 10 name hr
VLAN 10 modified:
    Name: hr
IOU2(vlan)#exit
APPLY completed.
Exiting....
IOU2#show vlan b
IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
10   hr                               active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

創建vlan方法2:先進入全局模式conf t,然后vlan vlan號,然配置名字name Name

IOU2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
IOU2(config)#vlan 20
IOU2(config-vlan)#name it
IOU2(config-vlan)#exit
IOU2(config)#exit
*Jan 16 16:36:48.962: %SYS-5-CONFIG_I: Configured from console by console
IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
10   hr                               active
20   it                               active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

把接口設置成輸入接口

輸入接口只能連pc。下面的設置:把交換機的接口e0/0設置成了輸入接口

IOU2(config-if)#switchport mode access

IOU2(config)#int e0/0
IOU2(config-if)#switchport mode ?
  access        Set trunking mode to ACCESS unconditionally
  dot1q-tunnel  set trunking mode to TUNNEL unconditionally
  dynamic       Set trunking mode to dynamically negotiate access or trunk mode
  private-vlan  Set private-vlan mode
  trunk         Set trunking mode to TRUNK unconditionally
IOU2(config-if)#switchport mode access

把接口划分到某個vlan里

把接口e0/0划分到vlan 10里,

IOU2(config-if)#switchport access vlan 10
IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/1, Et0/2, Et0/3, Et1/0
                                                Et1/1, Et1/2, Et1/3, Et2/0
                                                Et2/1, Et2/2, Et2/3, Et3/0
                                                Et3/1, Et3/2, Et3/3
10   hr                               active    Et0/0
20   it                               active

雖然pc1和pc2在同一個局域網內,但由於pc1連接到了e0/0,pc2連接到了e0/1,e0/0和e0/1已經不在同一vlan里了,所有pc1和pc2已經不能互相通信了。

PC1> sho ip
NAME        : PC1[1]
IP/MASK     : 192.168.1.10/24
GATEWAY     : 255.255.255.0
DNS         :
MAC         : 00:50:79:66:68:00
LPORT       : 20004
RHOST:PORT  : 127.0.0.1:20005
MTU:        : 1500
PC1> ping 192.168.1.20
host (192.168.1.20) not reachable

PC2> show ip
NAME        : PC2[1]
IP/MASK     : 192.168.1.20/24
GATEWAY     : 255.255.255.0
DNS         :
MAC         : 00:50:79:66:68:01
LPORT       : 20006
RHOST:PORT  : 127.0.0.1:20007
MTU:        : 1500
PC2> ping 192.168.1.10
host (192.168.1.10) not reachable

把接口e0/1,划分到vlan 20

IOU2(config)#int e0/1
IOU2(config-if)#switchport mode access
IOU2(config-if)#switchport access vlan 20
IOU2(config-if)#exit
IOU2(config)#exit
IOU2#
*Jan 16 16:58:41.162: %SYS-5-CONFIG_I: Configured from console by console
IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/2, Et0/3, Et1/0, Et1/1
                                                Et1/2, Et1/3, Et2/0, Et2/1
                                                Et2/2, Et2/3, Et3/0, Et3/1
                                                Et3/2, Et3/3
10   hr                               active    Et0/0
20   it                               active    Et0/1

由於pc1和pc2已經不在同一vlan里了,所以最好修改pc2的ip,和pc1不在一個網段里。

PC2> ip 192.168.2.10 255.255.255.0
Checking for duplicate address...
PC1 : 192.168.2.10 255.255.255.0

再添加一台交換機switch2,和2台pc,分別是pc3和pc4

在交換機switch2里,添加vlan 10和vlan 20.

switch2#vlan database
switch2(vlan)#vlan 10 name hr
VLAN 10 added:
    Name: hr
switch2(vlan)#vlan 20 name it
VLAN 20 added:
    Name: it
switch2(vlan)#exit
APPLY completed.
Exiting....
switch2#show vlan b

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
10   hr                               active
20   it                               active

把交換機switch2的接口e0/1划分到vlan10;把e0/2划分到vlan20

switch2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
switch2(config)#int e0/1
switch2(config-if)#switchport mode access
switch2(config-if)#switchport access vlan 10
switch2(config-if)#int e0/2
switch2(config-if)#switchport mode access
switch2(config-if)#swi acc vlan 20
switch2(config-if)#exit
switch2(config)#exit
switch2#show vlan b

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/3, Et1/0, Et1/1
                                                Et1/2, Et1/3, Et2/0, Et2/1
                                                Et2/2, Et2/3, Et3/0, Et3/1
                                                Et3/2, Et3/3
10   hr                               active    Et0/1
20   it                               active    Et0/2

配置pc3和pc4的ip,讓pc3和pc1在同一個網段,讓pc4和pc2在同一個網段

PC3> show ip

NAME        : PC3[1]
IP/MASK     : 192.168.1.20/24
GATEWAY     : 255.255.255.0
DNS         :
MAC         : 00:50:79:66:68:02
LPORT       : 20014
RHOST:PORT  : 127.0.0.1:20015
MTU:        : 1500

PC4> show ip

NAME        : PC4[1]
IP/MASK     : 192.168.2.20/24
GATEWAY     : 255.255.255.0
DNS         :
MAC         : 00:50:79:66:68:03
LPORT       : 20016
RHOST:PORT  : 127.0.0.1:20017
MTU:        : 1500

這時pc1和pc3能ping通嗎

是ping不通的,因為連接switch1(e0/2)和swtch2(e0/0)的接口,還並沒有划分在vlan 10里。

划分到vlan 10里后,pc1和pc3就能ping通了。

IOU2(config)#int e0/2
IOU2(config-if)#switchport access vlan 10
IOU2#show vlan b
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
10   hr                               active    Et0/0, Et0/2

switch2(config)#int e0/0
switch2(config-if)#switchport acc vlan 10
switch2#show vlan b
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
10   hr                               active    Et0/0, Et0/1
20   it                               active    Et0/2

這時,pc2和pc4能ping通嗎?

不能ping通,因為連接switch1(e0/2)和swtch2(e0/0)的接口,划分在vlan 10里,而pc2和pc4划分在vlan 20里。

修改switch1(e0/2)和swtch2(e0/0)的接口,為trunk接口后,pc2和pc4就能ping通了。

執行:IOU2(config-if)#switchport mode trunk,會報下面的錯誤
Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.

錯誤原因:前面說過打標記和解標記有2個協議,一個是cisco特有的ISL,另一個是國際標准802.1Q,所以設置trunk接口時要明確告訴交換機用哪個協議。

告訴交換機用哪個協議:IOU2(config-if)#switchport trunk encapsulation dot1q

dot1q就是802.1Q。

IOU2(config)#int e0/2
IOU2(config-if)#switchport mode trunk
Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.
IOU2(config-if)#switchport trunk encapsulation dot1q
IOU2(config-if)#switchport mode trunk

switch2(config)#int e0/0
switch2(config-if)#swi
switch2(config-if)#switchport mo
switch2(config-if)#switchport mode tru
switch2(config-if)#switchport mode trunk
Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.
switch2(config-if)#switchport trunk encapsulation dot1q
switch2(config-if)#switchport mode trunk

這時pc1和pc3,pc2和pc4都能ping通了。

把switch1(e0/2)和swtch2(e0/0)設置成trunk接口后,它們就消失了。不屬於任何一個vlan。

show vlan brief命令結果里消失的接口,有2種情況。一種是:它不屬於任何vlan了;另一種是它是trunk接口了。

IOU2#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
10   hr                               active    Et0/0
20   it                               active    Et0/1

switch2#show vlan b

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/3, Et1/0, Et1/1, Et1/2
                                                Et1/3, Et2/0, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
10   hr                               active    Et0/1
20   it                               active    Et0/2

到此為止,證明了:相同vlan即便在不同的交換機下,也可以相互通信;不同vlan即便是在同一個交換機下也不能通信。

查看哪個接口是trunk

IOU2#show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Et0/2       on               802.1q         trunking      1

Port        Vlans allowed on trunk
Et0/2       1-4094

Port        Vlans allowed and active in management domain
Et0/2       1,10,20

Port        Vlans in spanning tree forwarding state and not pruned
Et0/2       1,10,20

switch2#show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Et0/0       on               802.1q         trunking      1

Port        Vlans allowed on trunk
Et0/0       1-4094

Port        Vlans allowed and active in management domain
Et0/0       1,10,20

Port        Vlans in spanning tree forwarding state and not pruned
Et0/0       1,10,20
  • Encapsulation:802.1q:使用的協議

  • Native vlan:1.

    這個1是vlan號。

    trunk接口把過來的數據打上標記,對端的trunk接口讀這個標記。【Native vlan】指定的vlan號,經過trunk接口時,trunk接口不給它打標記。對端的trunk接口讀標記時,發現沒有標記,則把這個數據包給,自己這段的trunk接口里【Native vlan】定義的vlan里的主機。

    對端的2個trunk接口的【Native vlan】一定要一樣!!!

設置【Native vlan】:switchport trunk native vlan vlan號

IOU2(config)#int e0/2
IOU2(config-if)#swi
IOU2(config-if)#switchport tr
IOU2(config-if)#switchport trunk na
IOU2(config-if)#switchport trunk native v
IOU2(config-if)#switchport trunk native vlan 2

IOU2#show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Et0/2       on               802.1q         trunking      2

實驗【Native vlan】:

添加pc5和pc6,pc5連switch1的接口e0/3,把e0/3的vlan設置從vlan 2;pc6連switch2的接口e0/3,使用接口e0/3默認的vlan號,就是vlan 1.

把pc5和pc6的ip設置到同一網段。pc5和pc6雖然在不同的vlan,但居然可以ping通了。原因就是對端的2個trunk接口的【Native vlan】不一樣導致的。switch1的【Native vlan】是vlan2,所以vlan2下的主機通過此trunk時,沒有被打上標記,傳遞到對端的trunk后,對端的trunk接口發現沒有標記,則直接傳遞個自己的【Native vlan】,是vlan1,所以導致了不同vlan也能通信的現象。

IOU2(config)#int e0/3
IOU2(config-if)#
*Jan 16 18:27:37.386: %CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on Ethernet0/2 (2), with switch2 Ethernet0/0 (1).
IOU2(config-if)#sw mo acc
IOU2(config-if)#sw acc v
IOU2(config-if)#sw acc vlan 2
% Access VLAN does not exist. Creating vlan 2

PC5> ip 192.168.3.10 255.255.255.0
Checking for duplicate address...
PC1 : 192.168.3.10 255.255.255.0

PC6> ip 192.168.3.20 255.255.255.0
Checking for duplicate address...
PC1 : 192.168.3.20 255.255.255.0

PC5> ping 192.168.3.20
84 bytes from 192.168.3.20 icmp_seq=1 ttl=64 time=0.783 ms
84 bytes from 192.168.3.20 icmp_seq=2 ttl=64 time=0.985 ms
84 bytes from 192.168.3.20 icmp_seq=3 ttl=64 time=0.777 ms
84 bytes from 192.168.3.20 icmp_seq=4 ttl=64 time=2.228 ms
84 bytes from 192.168.3.20 icmp_seq=5 ttl=64 time=1.446 ms

PC6> ping 192.168.3.10
84 bytes from 192.168.3.10 icmp_seq=1 ttl=64 time=0.950 ms
84 bytes from 192.168.3.10 icmp_seq=2 ttl=64 time=1.014 ms
84 bytes from 192.168.3.10 icmp_seq=3 ttl=64 time=0.703 ms
84 bytes from 192.168.3.10 icmp_seq=4 ttl=64 time=0.498 ms
84 bytes from 192.168.3.10 icmp_seq=5 ttl=64 time=2.023 ms

實驗加個路由器R1,實現用單臂路由(vlan間路由),連通vlan10和vlan20下的pc

實現思路:把vlan10和vlan20下的主機里的網關,都指定到路由器R1的接口e0/0下,網關在同一個接口下,那么2個vlan的跨網段請求都發送到了同一個接口,那么路由器就能夠知道怎么轉發請求了。

那就出現個問題,在一個接口下怎么配置2個網關ip呢?

先啟用接口e0/0

R1(config)#int e0/0
R1(config-if)#no sh

在接口e0/0下建立2個子接口e0/0.1和e0/0.2。

子接口可以建立多少個?ip地址有多少個就能創建多少個。所以2個網關的地址問題解決了。

那么子接口如何知道,過來的數據是來自哪個vlan呢?

嘗試在e0/0.1接口下,添加網關ip add 192.168.1.1 255.255.255.0,但提示下面的錯誤。

錯誤的意思是要提供:用什么協議打標記和解標記,和vlan號。

R1(config)#int e0/0.1
R1(config-subif)#ip add 192.168.1.1 255.255.255.0

% Configuring IP routing on a LAN subinterface is only allowed if that
subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q,
or ISL vLAN.

提供vlan號,就是告訴這個子接口,來自這個vlan的數據,歸你管了。

提供dot1Q,就是告訴這個子接口,用哪個協議去解包,得到vlan號。

給子接口指定了vlan號和協議后,再添加網關就ok了。

R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip add 192.168.1.1 255.255.255.0

接口e0/0.2同樣配置

R1(config)#int e0/0.2
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip add 192.168.2.1 255.255.255.0

添加pc1-4的網關:

PC1> ip 192.168.1.10 255.255.255.0 192.168.1.1
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0 gateway 192.168.1.1

PC2> ip 192.168.2.10 255.255.255.0 192.168.2.1
Checking for duplicate address...
PC2 : 192.168.2.10 255.255.255.0 gateway 192.168.2.1

PC3> ip 192.168.1.20 255.255.255.0 192.168.1.1
Checking for duplicate address...
PC3 : 192.168.1.20 255.255.255.0 gateway 192.168.1.1

PC4> ip 192.168.2.20 255.255.255.0 192.168.2.1
Checking for duplicate address...
PC4 : 192.168.2.20 255.255.255.0 gateway 192.168.2.1

到此為止,vlan10和vlan20能通信了嗎?不能?

由於路由器R1的e0/0配置了解包的協議和vlan號,但是交換機switch1的接口e0/3還不是trunk接口,那么從switch1的接口e0/3出來的數據包里,就沒有vlan號,那么路由器R1就無法得到vlan號,所以就丟棄過來的數據了。

設置switch1的接口e0/3為trunk接口

IOU2(config)#int e0/3
IOU2(config-if)#switchport trunk encapsulation dot1q
IOU2(config-if)#switchport mo tr

現在vlan10和vlan10下的pc之間就可以互相通信了。

# c/c++ 學習互助QQ群:877684253 ![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg) # 本人微信:xiaoshitou5854


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM