5虚拟局域网构建

前面简单介绍了使用交换机连接不同的服务器,这次我们看看怎么搞虚拟局域网。

虚拟局域网,也被称为VLAN(Virtual Local Area Network),是一个网络的划分概念,使得一组网络设备可以表现得像在同一个物理网络中,即使它们在地理上并不共享同一个物理网络连接。

在没有虚拟局域网的情况下,设备必须是物理连接在同一个网络交换机上才能形成局域网。而通过使用虚拟局域网,可以将设备虚拟组合在一起,无论它们在物理层面上是否彼此相连,使它们能够进行网络通信就好像它们是在同一个局域网中一样。

原因

为什么要有虚拟局域网?

  1. 广播风暴:交换机上的每一个端口都处于不同的冲突域(也就是每个端口都享有独立的带宽)。但局域网中所有的端口都处在同一个广播域,那么就意味着如果有一台终端发出广播帧(如ARP、DHCP),局域网中所有的终端都能够接收到。网络资源被大量占用和浪费。
  2. 安全问题:网络黑客会利用局域网中广播来进行攻击,比如比较常见的 ARP 攻击;或者某台主机上安装了分组嗅探器,那么这台主机就会接收下它收到的所有数据,很可能造成信息泄露

简介

为了解决局域网广播域的问题,IEEE 协会专门设计规定了 802.1Q 的协议标准,这就是虚拟局域网 VLAN(Virtual Local Area Network,)技术,它利用软件实现了二层广播域的划分,在不增加成本的情况下,完美解决了路由器划分广播域的困难。

交换机为用户提供的一种服务,之所以称为“虚拟”局域网,是因为把物理上的局域网根据一定的原则划分为多个小的逻辑网络,这些小的逻辑网络形成各自的广播域,也就是虚拟局域网VLAN。

5虚拟局域网构建_第1张图片

具有 VLAN 功能的交换机上会维护 VLAN 数据表,记录着哪些终端属于同一个 VLAN。同一个 VLAN 是一个广播域,不同的 VLAN 间的设备不能直接通信。

5虚拟局域网构建_第2张图片

Vlan划分

方式 优缺点 样式
基于端口 1.定义简单 2.适合小型网络 3.适合稳定网络 Port1 - Vlan5
基于MAC地址 1.初期配置复杂 2.后期维护简单 MAC1 - Vlan5
基于子网 1.配置简单 2.后期维护简单 IP 1.1.1.1/24 - Vlan5
基于协议 1.应用比较少 IP协议 - Vlan5

Vlan工作过程

Vlan比标准以太网帧多了tag,tag里有Vlan编号。交换机根据这个格式,就能做特殊的操作了。

5虚拟局域网构建_第3张图片

交换机有两类端口,ACCESS端口和TRUNK端口,两个端口的作用和能力不同。

ACCESS端口

5虚拟局域网构建_第4张图片

当“主机 A”向“主机 C”发送数据,交换机收到主机 A 发来的标准以太帧后,通过查询“vlan 表”确认该端口属于 vlan5,就在该数据帧打上 vlan5 的标签。 交换机通过查询 MAC 地址表确定转发端口为 port 7 而后通过查询 VLAN 表发现 port 7 端口也属于 VLAN5 和数据帧携带的 vlan id 一致,那么交换机在转发该数据帧前会剥去数据帧的 vlan tag 将其恢复为标准以太帧之后从 port5 转发给目的主 机 C。

当“主机 A”向“主机 D”发送数据,交换机收到主机 A 发来的标准以太帧 后通过查询“vlan 表”确认该端口属于 vlan5,就在该数据帧打上 vlan5 的标签。 交换机通过查询 MAC 地址表确定转发端口为 port 10,而后通过查询 VLAN 表发 现 port 10 端口属于 VLAN10 和数据帧携带的 vlan id 不一致,那么交换机就会将 该数据帧丢弃。

5虚拟局域网构建_第5张图片

TRUNK端口

对于这种布局下的通信,需要使用Trunk口。

5虚拟局域网构建_第6张图片

交换机默认的 access 链路类型端口在转发数据帧时需要将数据帧中的 vlan tag 剥离。如果交换机之间的链路能够传递带有 vlan tag 的数据帧,那么就能保证 vlan 信息不会丢失,实现跨交换机 vlan 通信。Trunk 链路类型端口可以接收和发送多个 vlan 的数据帧,并且在接收和发送过程中不对数据帧中的 vlan tag 进行任何操作。

5虚拟局域网构建_第7张图片

当行政部的 PCA 发出标准以太帧,到达交换机 SW1 的端口 E1/0/2。Port2 属于 access 链路类型端口,所以 SW1 收到数据帧之后查询 vlan 表发现 E1/0/2 属于vlan10,那么就将数据帧打上 vlan10 的标签。然后 SW1 查询自己的 MAC 地址表,发现需要通过端口 E1/0/1 转发出去,而 E1/0/1 端口是 trunk 链路类型端口,允许 vlan10 通过,那么该数据帧就通过 port1 转发到交换机 SW2。

SW2 接收到该数据帧,根据数据帧中的目的 MAC 地址查询 MAC 地址表找到了转发端口 E1/0/5,之后在 vlan 表中查询发现 E1/0/5 所属 vlan 和数据帧携带的vlan id 一致。E1/0/5 端口为 access 链路类型端口,那么交换机在转发该数据帧前会剥去数据帧的vlan tag将其恢复为标准以太帧之后从端口E1/0/5转发给目的主机 PCC。

实战

先用一个交换机,带三个PC,都是默认的Vlan1,互相是可以ping通的

5虚拟局域网构建_第8张图片

ping 112.112.112.1
Ping 112.112.112.1 (112.112.112.1): 56 data bytes, press CTRL_C to break
56 bytes from 112.112.112.1: icmp_seq=0 ttl=255 time=10.898 ms
56 bytes from 112.112.112.1: icmp_seq=1 ttl=255 time=2.828 ms
56 bytes from 112.112.112.1: icmp_seq=2 ttl=255 time=2.286 ms
56 bytes from 112.112.112.1: icmp_seq=3 ttl=255 time=2.215 ms
56 bytes from 112.112.112.1: icmp_seq=4 ttl=255 time=2.290 ms

--- Ping statistics for 112.112.112.1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 2.215/4.103/10.898/3.404 ms

5虚拟局域网构建_第9张图片

把PC2\PC3连放到Vlan10,PC4放到Vlan20,测试连通性

[H3C]vlan 10
[H3C-vlan10]port GigabitEthernet1/0/1
[H3C-vlan10]port GigabitEthernet1/0/2
[H3C-vlan10]quit
[H3C]vlan 20
[H3C-vlan20]port GigabitEthernet1/0/3
[H3C]display vlan
[H3C]display vlan 10
[H3C]display vlan 20

从PC2 ping PC3可以,ping PC4失败

ping 112.112.112.2
Ping 112.112.112.2 (112.112.112.2): 56 data bytes, press CTRL_C to break
56 bytes from 112.112.112.2: icmp_seq=0 ttl=255 


ping 112.112.112.3
Ping 112.112.112.3 (112.112.112.3): 56 data bytes, press CTRL_C to break
Request time out

5虚拟局域网构建_第10张图片

再加一台交换机,两台交换机相连接口设置为TRUNK口,第二台交换机也有Vlan20,有PC5,试试PC4和PC5互不互通,PC2和PC5互不互通

[H3C]interface GigabitEthernet 1/0/10
[H3C-GigabitEthernet1/0/10]port link-type trunk
[H3C-GigabitEthernet1/0/10]port trunk permit vlan 20
[H3C-GigabitEthernet1/0/10]display this
#
interface GigabitEthernet1/0/10
 port link-mode bridge
 port link-type trunk
 port trunk permit vlan 1 20
 combo enable fiber
#
return


system-view
[H3C]sysname SW2
[SW2]vlan 20
[SW2-vlan20]port GigabitEthernet 1/0/1
[SW2-vlan20]quit
[SW2]interface GigabitEthernet 1/0/10
[SW2-GigabitEthernet1/0/10]port link-type trunk
[SW2-GigabitEthernet1/0/10]port trunk permit vlan 20
[SW2-GigabitEthernet1/0/10]display this
#
interface GigabitEthernet1/0/10
 port link-mode bridge
 port link-type trunk
 port trunk permit vlan 1 20
 combo enable fiber
#
return

从pc4 ping pc6就通了

ping 112.112.112.4
Ping 112.112.112.4 (112.112.112.4): 56 data bytes, press CTRL_C to break
56 bytes from 112.112.112.4: icmp_seq=0 ttl=255 time=26.016 ms

从pc2 ping pc6不通

ping 112.112.112.4
Ping 112.112.112.4 (112.112.112.4): 56 data bytes, press CTRL_C to break
Request time out

总结

组网还是挺好玩的,实战比理论知识要简单一些

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

我的个人博客为:https://shidawuhen.github.io/

往期文章回顾:

  1. 设计模式
  2. 招聘
  3. 思考
  4. 存储
  5. 算法系列
  6. 读书笔记
  7. 小工具
  8. 架构
  9. 网络
  10. Go语言

你可能感兴趣的:(组网,php,网络,开发语言)