VLAN

VLAN 作用:

  • 把一个交换机分成多个独立的交换机
    • 简单的说就是隔离.
    • 节省网卡数量.使用一个网卡 接入多个网络

      不同 vlan 之间不能相互通信.

简单理解: 给交换机每个数据包打上一个标签:vlanTag, 用来区分不同的网络 交换机 可以配置每个端口允许通过的 vlan. 任何一个包. 只能从允许通过相同的相同的 vlan 的几个端口出去

这里我配置了三个VLAN,分别是1、10、11。分别分析以下场景: • 一个没有tag的包进入Port 0,交换机会给这个包打上10这个tag。
然后会查找有哪些接口开启了vlan 10,发现有Port 2和Port CPU。
也就是这个包只可能从这两个接口之一流出,不可能从其他Port流出。
假设该包的目的地要从Port 2流出,那么流出时会打上10这个tag。

• 一个tag为11的包流入Port 0,交换机发现Port 0上并不接受vlan11 的包,于是这个包被丢弃。

• 一个没有tag的包流入Port 2,交换机发现在这个接口上只有vlan1是不需要 tag的,于是给这个包打上1这个tag。
接下来查找哪些接口允许vlan1,然后 发现Port 3和Port CPU都接受。
如果这个包最终需要从Port 3出去的话, 出去时会先将1这个tag去除然后再流出。

为什么需要 vlan 公司 出现很多 ip 冲突. 根本原因是设备多 ip 不够用.

按照部门划分网段 一个网段一个部门.

每个网段 有一个 dhcp 池. 手动 ip 避开 dhcp 池.

VLAN 会对 LAN 环境中的广播域进行划分。当某个 VLAN 中的主机需要与另一个 VLAN 中的主机进行通信时,必须在这两个 VLAN 之间路由数据流。这就是 VLAN 间路由。在 Catalyst 交换机上,可通过创建第 3 层接口(交换机虚拟接口 (SVI))完成此路由。本文档提供了适用于此功能的配置和故障排除步骤。

在上学时看到这个东西,认为或许只有大公司人很多的时候采用的上吧。 初次接触vlan是在公司里,有一阵子大家突然发现有许多ip冲突,虽然ip冲突的主要原因是因为不规范 的手动配置ip,但根本原因是设备越来越多。 于是我就脑子一热,让公司买了个支持vlan的交换机,将大家按部门划分网段,每个部门一个网段, 每个网段内的主机数量都比较少了,这时候跟大家约定每个网段里有一个不太大的dhcp池, 手动指定ip时请避开dhcp池,于是基本没有了ip冲突。这里就通过vlan来将大家划分网段。

在较“大”一些的交换机上,配置VLAN时还会见到这些类型:Trunk端口、Hybrid端口、Access端口。 摘录一段网上的解释:

• Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口; • Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口; • Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。 • Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打tag,而Trunk端口只允许缺省VLAN的报文发送时不打tag。

vlan使用场景

vlan使用场景 那么为什么要配置vlan呢?这里介绍两个我正在使用场景。

公司网关,通过vlan隔离部门以及上联出口

公司里有一个通过静态IP接入的ISP上联,以及若干部门组成的局域网。interfaces文件大致如下:

我们并不直接使用eth0,也就是进出网关设备的所有包都必须有vlan tag

auto eth0 iface eth0 inet manual

auto vlan0002 iface vlan0002 inet static address a.b.c.d netmask 255.255.255.224 gateway a.b.c.e

auto vlan0010 iface vlan0010 inet static address 10.0.10.1 netmask 255.255.255.0

auto vlan0011 iface vlan0011 inet static address 10.0.11.1 netmask 255.255.255.0

… 在这个配置的命名规则上我耍了一些“技巧”,以方便后续配置防火墙规则。

VLAN Router 命令

reload 重启.

VLAN 配置 ping arp request tagging 洪泛 转发 untagging

VLAN原理: VLAN用配置交换机接口的手段把局网划分几个较小的局网,称为虚拟局网 (Virtual LAN)。 它主要的工作是:数据包在进入 VLAN时,交换机根据出入口接口(access link) 配置,把数据包加上一个 VLAN 标签 (tagging), 然后根据(数据包MAC地址, VLAN tag)在VLAN内洪泛、转发,经主干连线 (trunk link) 抵达目的主机连接的交换机, 出口交换机把VLAN标签除掉 (untagging),然后把数据发送到目的主机。这段文字有些抽象、拗口,看图解、仿真能形象的看的清楚些。

广播域 vlan 之后 就能把网络分成多个广播域

vlan 好处 只有一个 vlan 可能会影响网络传输性能

比如: 五个交换机
SW1 → A B 两电脑

SW2

SW3

SW4

SW5

交换机2是 核心交换机. 2连1 1连3 2连4 4连5

网络通信 : 数据帧里指定目标的 mac 地址才能正常通信. Mac 地址: 通过 ARP 广播来获取.

比如sw1下面的 a 要和 b 通信. a 发送 arp 请求 到sw1 sw1 收到 arp 请求 会把这个请求转发给除了接受端口之外的所有端口. 然后交换机 2 和 5 也会转发到除了接受端口外的所有端口.然后 一个个传遍整个网络 最终 arp 请求会被转发到同一个网络中的所有客户机上.

ARP 请求会传播到网络的每一台主机. 并且对每一台主机的 cpu 造成负担.

其实这个 arp 请求的目的只是为了获得 同个交换机下 b 的 mac. 其实只要收到 b 的 mac 就好了. 可是实际上整个网络都收到了 a 的 arp 请求. 一方面.广播信息消耗了网络的整体带宽. 一方面.消耗电能 cpu 无畏的消耗.

广播帧会非常频繁的出现

广播帧: ARP DHCP RIP NETBEUI IPX Apple Talk 等等 很多类型的广播信息.

ARP 需要和别的主机通信时候发出 DHCP: 电脑开机 / 重启网卡 等等 RIP 一种路由协议 NetBEUI: windows 下的网络协议 Apple Talk: Mac 下的网络协议.

每隔30秒, 会对邻近的其他路由器广播一次路由信息.

比如 windows 打开网络计算机的时候 就会发出广播(多播)信息.

分割广播域 一般必须使用到路由器. 可以用路由器上的 口为单位 划分广播域.

普通的路由器 一般是4个 Lan 口. 其实这四个Lan 口 就是一个交换机. 不能用来划分广播域.

使用路由器划分广播域的话 能分割的个数完全取决于入侵的网络接口个数. 无法自由的根据实际需要划分广播域

二层交换机一般带有多个网络接口. 在二层交换机上分割广播域的技术 就是 VLAN

一台未设置 VLAN 的二层交换机. 任何广播帧都会被转发给除了接收端口外的所有其他接口 ( Flooding )

VLAN 生成的虚拟交换机 是互不相同的. 要设置才能互相通信. VLAN 是广播域. 两个广播域之间 由路由器连接. 广播域之间来玩的数据包都是由路由器中继的.

VLAN 间的通信 也需要路由器提供中继服务. 这个称为 VLAN 间路由.

vlan 间路由 可以是普通的路由器 也可以是三层交换价.

记住: VLAN 间的通信需要用到路由功能

交换机的端口: 访问链接 Access Link 汇聚链接 Trunk Link

Access 端口: 只属于一个 VLAN 并只向这个 VLAN 转发数据帧. 一般连接用户主机,发送的数据包 永远不带标签 ( untagged )

静态 动态 VLAN

静态 VLAN:

基于端口的 VLAN,

明确指定交换机上的 哪些端口属于哪个 VLAN.

动态 VLAN:

根据每个端口连的计算机. 随时改变所属 VLAN

基于 MAC: Mac based VLAN

基于子网: Subnet based VLAN

基于用户: User based VLAN

三者主要区别: 根据 OSI 模型.

Mac VALN :

OSI 二层

电脑 MAC 不变 VLAN 不变 不管擦到哪个交换机口.

子网 VLAN :

OSI 三层

电脑 IP 不变, VLAN 不变

192.168.1.0/24 → VLAN 1

192.168.2.0/24 → VLAN 2

用户 VLAN :

OSI 四层以上

电脑登录到哪个用户, 就进相应用户预设的 VLAN组

总的来说:

各种VLAN, OSI 层面越高,

越适合构建灵活多变的网络.

Trunk 端口: 汇聚链接 连接别的交换机.

需要设备跨越多台交换机的 VLAN 时.

发送的数据 都是带标签的 Tagged.

Hybrid 端口: access 和 Trunk 的 混合体.

比如 两层楼的公司. 一部门的用户 分散在不同楼层 1楼: SW1 用户: A → VLAN1-1 B → VLAN1-2 2楼: SW2 用户:C → VLAN2-1 D → VLAN2-2

把AC 弄成同一个 VLAN

把 BD 弄成一个 VLAN

最关键的: 交换机SW1 和 SW2 该如何接?

最简单的:

  1. sw1 分两个 vlan 红的和蓝色.

  2. sw2 也分两个 vlan 红色和蓝色.

  3. sw1 红的端口拉一根网线到 sw2 的红色端口

  4. sw1 蓝色端口拉一根网线到 sw2 的蓝色端口

缺点: 几个 vlan 就要拉几根线.

而且还是不同楼层间的线 很难拉的.

而且 还要额外的端口.

所以就有课 汇聚链接: 能转发多个不同 VLAN 的通信端口. 汇聚链路上的数据,都被附加了用于识别属于哪个 VLAN 的特殊信息. 大概是汇聚的一端, 加上自己的的 vlan标签. 另一端去掉标签,转发给相应的 vlan .

汇聚链路 负载较重 端口必须支持100M+的速度才行.

默认情况 汇聚链路会转发 交换机上 所有 vlan 的数据, 实际上很可能不需要转发所有的vlan数据. 为了减轻交换价负载. 可以手动设定.

这时候 两个交换机之间.不管有几个 vlan .都只需一根普通网线就可以了

IEEE802.1 ISl ( 附加 VLAN 信息的方法 )

VLAN 间路由. 两电脑 就算连一台交换价. 只要所属 vlan 不同.那么就无法直接通信.( 因为不同的广播域 收不到彼此的广播报文. )

为了 vlan 之间呢个相互通信. 需要 OSI 中的更高一层: 网络层的信息. 来进行路由

路由功能: 一般是路由器提供. 也可以用 三层交换机实现.

用路由: 进行 VLAN 交换机上连接路由器的端口设置为 汇聚连接. (路由器上的端口必须支持汇聚链路.)

不同 vlan 通信流程:

路由器 R VLAN1 → v1 → 172.19.16.1/24 VLAN2 → v2 → 172.19.17.1/24

SW-Port 1 →V1 → PC:A → 172.19.16.16 SW-Port 2 →V1 → PC:B → 172.19.16.166 SW-Port 3 →V2 → PC:C → 172.19.17.17 SW-Port 4 →V2 → PC:D → 172.19.17.177 SW-Port 6 → 汇聚链路

现在 电脑 A 要给电脑 C 发数据. A 根据 目标IP, 发现和自己不在一个网段. 转发数据给 默认网关.( 先ARP 获取 网关 MAC 地址 ) A→交换机: 目标 Mac 地址: 路由器的 MAC 目标 IP 地址: 最终目标的 IP.

  1. 交换机:

收到1端口的数据.

检测 Mac 地址表中的 和1端口同属一个 vlan : 发现1,2,6 都属于 vlan1.

汇聚链路属于所有 VLAN

然后就知道 通往路由器的数据 要从端口6 转发. 6是汇聚链路.
数据会被附加上 VLAN1的 标签. 路由器收到数据. 根据路由器背部路由表: 判断该向哪中继. 目标网络是和路由器直连的. 只要从 VLAN2的端口转发就可以了. 这时的数据包

目标 MAC: 地址变成真正的目的 MAC

目标 IP: 真正的目的 IP

带有 Vlan2 标签的数据包从.路由器端口出去 到交换机6端口. 去掉VLAN标签. 数据发给 VLAN2 PC -C 收到数据.

进行VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过: 发送方——交换机——路由器——交换机——接收方 但是: 使用路由器进行 VLAN 间路由的话. 随着 VLAN 之间流量的增加. 很可能导致路由器成为整个网络的瓶颈!!

交换机: 使用专用的硬件芯片进行数据帧的交换. 可以实现 线缆的速度进行交换.

路由器: 基本是软件处理!!!!
1000M 的线缆进来. 出去肯定没1000M 的 加上汇聚链路, 很容易达到瓶颈.

三层交换机:带有路由功能的二层交换机. 路由属于 OSI 的 第三层 网络层的功能. 所以叫三层交换机.

机器内部: 分别安装了 交换机模块 和 路由模块. 这里的路由模块使用的是专用的硬件.比普通路由器快很多. 而且. 两个模块是 内部连接的. 所以有相当大的带宽.

三层交换其实和 二层+路由器 一样. 只是把路由器 和 二层交换机. 放到一个硬件中进行整合了.

加速 VLAN 之间的通信手段:

流: FLOW

通常: VLAN 间路由.必须通过外部路由器或者三层交换机.

但是: 并不是所有数据都要经过 路由模块的

FTP:

传输 MB 以上的文件时候

由于 MTU 限制

IP 协议会吧数据分成几份进行传输. 在目的地电脑进行重新组合.

这些被分割的数据: 发送的目标是完全相同的. 意味着相同的源 IP 目的IP. 源端口号 目标端口号… 这样一连串的数据被称为 流( FLOW )

整个流的 第一块数据 正常发送.然后把第一块数据 路由的结果记录到缓存保留下来. 包括: 目标IP地址 源IP地址 目标TCP/UDP端口号 源TCP/UDP端口号 接收端口号(交换机) 转发端口号(交换机) 转发目标MAC地址 等等….

同一个流的第二块以后的数据到达交换机后,直接通过查询先前保存在缓存中的信息查出“转发端口号”后就可以转发给目标所连端口了。

这样一来,就不需要再一次次经由内部路由模块中继,而仅凭交换机内部的缓存信息就足以判断应该转发的端口。

这时,交换机会对数据帧进行由路由器中继时相似的处理,例如改写MAC地址、IP包头中的TTL和Check Sum校验码信息等,

通过在交换机上缓存路由结果,实现了以缆线速度(Wired Speed)接收发送方传输来数据的数据、并且能够全速路由、转发给接收方。

传统路由器存在的意义: 三层交换 价格非常贵. 大部分的三层交换机只有 Lan 口,没有路由功能的.

网络安全: 路由能提供更安全的网络. 除了基本的 数据包过滤功能外 还有 构建 VPN 利用 RADIUS 进行用户认证.

一般的三层交换 只支持 TCP/IP MAC 的 Appletalk 只有高端三层交换才支持. 所以路由器还是必不可少的.

VLAN 容易把 网络结构复杂化. 一旦发生故障. 准确点位并排除故障会比较难. 所以 进行路由设置 的时候 要考虑实际的网络构架 来进行.

交换机之间的连接 也是用 汇聚连接. 交换机和路由器之间 也是 汇聚连接.

交换机所有端口默认归 vlan1

show vlan

conf t 进配置模式 configure terminal

vlan3 name xx vlan3 就改名成 xx 了.

日志能关闭的

conf t int interface fa interface fastethernet 0/10 switch switch switchport mode access sw switchport access vlan 50 end