VLAN间路由
即在不同的 VLAN 之间,配置好网关设备,确保不同网段互通
实现方案:
路由器
- 每个VLAN均使用一个独立的路由器接口,配置好网关IP
优点:简单易懂
缺点:浪费端口
多层交换机
- 为每个 VLAN 配置一个网关IP ,但使用的是逻辑接口;
每一个 VLAN 都对应一个逻辑接口 - interface vlan X
将多层交换机作为网关:
1、开启路由功能;
SW(config)#ip routing
2、创建/确保 设备有对应的VLAN;
SW(config)#vlan 12
SW(config-vlan)#name CCIE
SW(config)#vlan 34
SW(config-vlan)#name CCNP
3、为每个VLAN配置网关IP地址
SW(config)#interface vlan 12
SW(config-if)#no shutdown
SW(config-if)# ip address x.x.x.x /24
SW(config)#interface vlan 34
SW(config-if)#no shutdown
SW(config-if)# ip address x.x.x.x /24
4、配置多层交换与级联交换机的互联链路 - trunk
SW(config)#interface fas0/13
SW(config-if)#no shutdown
SW(config-if)#switchport trunk encapsulation dot1q
SW(config-if)#switchport mode trunk
SW2(config)#interface fas0/13
SW2(config-if)#no shutdown
SW2(config-if)#switchport mode trunk
------------------------------------------------------
注意:
当交换机收到一个带有标签(vlan-id)的数据时,
如果本地交换机上没有该 vlan , 则直接将其丢弃;
交换网络中的数据流所经过的每一个交换机,必须拥有
相同的 VLAN 数据库。(即确保全网交换机的VLAN数据库相同)
交换机的工作原理:
成表:
当交换机在端口上收到一个数据包时,
首先判定入端口属于的 vlan 号 ,
其次查看数据包中的源MAC地址
然后形成 vlan-id --- MAC 和入端口的对应关系,即
Mac地址表条目: vlan-id - MAC - Port
查表:
当交换机收到数据包之后,
首先,查找入端口所属于的 vlan 号,
其次,在属于该 vlan号的 mac-address-table 中查找
目标MAC地址;
如果能够查到该MAC,则在对应端口转发;
如果查不到,则向属于该vlan的其他所有端口
以及 trunk 端口进行转发;
(入端口除外)
总结:
交换机形成MAC地址表是 : 从左向右;
即,首先形成 vlan-id (数据的入端口属于的VLAN号)
其次形成 mac-address (通过数据包中的源MAC)
最后查看 port (数据的入端口的号码)
交换机查找MAC地址表是 : 从左向右;
即,首先查看 vlan-id (数据的入端口属于的VLAN号)
其次查看 mac-address (通过数据中的目标MAC地址)
最后查看 port
------------------------------------------------------
Flash:
系统 -- IOS
vlan数据库 -- vlan.dat
delete flash:/vlan.dat
NVRAM:(非易失性内存)
配置文件 -- startup-config
查看文件:
#dir
#dir /all-file-system
--------------------------------------------------------
VLAN 标记协议:
ISL - 思科私有协议;
为数据增加的标签,长度为30个字节;
802.1q - 公有标准, 主流协议;
为数据增加的标签,长度为4个字节;
其中12个bit用来表示 vlan,
所有 vlan 的空间大小为 :0--4095,共4096个;
系统保留vlan ; 1 , 1002-1005 ;
重要命令:
show interface fas0/1 switchport
查看的是该端口上所有与 vlan 相关的参数信息;
Trunk 的 vlan 控制:
默认情况下, trunk 上允许所有 vlan 通过;
如果想控制 trunk 上的 vlan 通信,可以使用如下命令:
SW1(config)#interface fas0/23 //进入 trunk 链路;
SW1(config-if)#switchport trunk allowed vlan ?
word // 表示的是 vlan 号;
add // 添加特定vlan 都现有的允许列表中;
remove // 将特定的 vlan 在现有允许列表中移除掉;
all // 表示的是该 trunk 链路允许所有的 vlan ;
这是默认行为;
例如:
SW1(config)#interface fas0/23 // 此时默认允许所有的 vlan
SW1(config-if)# switchport trunk allowed vlan 120
//输入该命令后,该trunk仅允许一个vlan 120
SW1(config-if)#switchport trunk allowed vlan add 1
//将vlan 1 添加到现有的允许的vlan列表中,即此时
该trunk链路同时允许 1 和 120 两个 vlan ;
SW1(config-if)#switchport trunk allowed vlan add 12
//将vlan 12 添加到现有的允许的vlan列表中,即此时
该trunk链路同时允许 vlan 1\12\120
SW1(config-if)#switchport trunk allowed vlan remove 12
//将 vlan 12 在以上的允许列表中删除掉,此时的trunk
链路仅仅允许 vlan 1 和 120 ;
Trunk - native vlan 修改;
默认情况下,trunk 的native vlan 为 1 ;
该 vlan 中的数据包,经过 trunk 时,不需要标签;
在该 vlan 中传输的数据包一般是交换机之间的管理协议;
所以这种类型的数据极为重要。
出于安全方面考虑,我们更改 trunk 上的native vlan :
SW1(config)#interface fas0/23
SW1(config-if)#switchport trunk native vlan 144
show interface trunk
同时,必须保证该 native vlan 中不能有任何的成员端口
1、必须使用一个不常用的 vlan 作为 native ;
2、两边的 native vlan 必须相同;
3、每个交换机上的native vlan 中不能有成员端口;
4、trunk链路建议均为手动配置,不能自动配置;
5、同时一定要关闭trunk链路上的自动协商功能 ,即关闭DTP