最近几天一直学习虚拟局域网,现在把这几天的收获分享一下。

先来引用一下百度上虚拟局域网的定义。

虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。

有了局域网,为何还需要虚拟局域网?在思考这个问题前,我们先来举个例子。

一个公司有二层楼,一楼有销售部1和技术部1,二楼有销售部2和技术部2。相同的部门组成一个局域网,比如销售部1要和销售部2组成局域网,技术部1和技术部2组成局域网。有人肯定说划分子网就行了,事实可行吗。

我们先来考虑只划分子网情况,拓扑图如下所示:

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网

看似这个图合适的,其实是有一定的问题的,它存在着同一广播域的问题。什么意思呢?我们首先拿一楼销售部1的pc2地址是192.168.1.2的主机来ping技术部1的主机Pc3, 我们发现确实ping不通,因为他们不在一个子网。如图:

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_02

我们再来ping销售部2的主机pc4192.168.1.3,我们发现确实可以ping通。

vm虚拟机模拟vlan 虚拟网vlan_子网_03

这样做貌似达到了我们的要求呢。我们点击思科模拟器的模拟模式来看下数据是如何传输的。

我们还是用销售部主机1192.168.1.1来Ping销售部2192.168.1.3的主机,通过模拟器看下发生了什么事情。

我们先用arp -d命令将所有主机路由表清空,你也可以选择将主机关机重启,路由表就会丢失。这样主机之间就不知道其他主机的mac地址了。每次主机通信,都会先调用arp协议来获取目的主机的mac地址,然后再发送数据包。每个主机只要用输入一次arp  -d就行了,不用像我一样输三次,不确信,可以输入arp -a 命令查看路由表信息,如果查询结果为空,就代表路由表别清空了。

vm虚拟机模拟vlan 虚拟网vlan_子网_04

下面开始ping主机pc4了。

vm虚拟机模拟vlan 虚拟网vlan_子网_05

第一步:pc2开始准备发送数据ICMP包了,结果主机pc2发现自己还不知道对方的mac地址,怎么办呢。于是停止发送ICMP数据包,开始调用自己的ARP协议,来询问谁是目的主机192.168.1.3以及目的主机的mac地址。ARP协议发送是广播方式,就是所有主机都会收到这个数据包。ARP数据包ARP中写着我的地址是192.168.1.2,mac地址是...,我想知道ip地址192.168.1.3的主机的mac地址。

数据包在右边的框内。

vm虚拟机模拟vlan 虚拟网vlan_子网_06

 

第二步:pc2将ARP数据包发送给了交换机switch1。

vm虚拟机模拟vlan 虚拟网vlan_子网_07

 

第三步:交换机开始转发数据包了。

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网_08

大家注意到没,一楼的技术部1跟销售部1不在一个子网内,居然也收到了交换机的转发的ARP数据包。这就是问题的所在了。

主机pc3对主机pc2说:我跟你是不是一个部门的,为何你还非要发送给我,白白占用网络资源。

那如何不让交换机不乱发广播数据包呢,就是只让销售部2收到就行了,不让技术部也收到广播数据包。

 

这就用到了虚拟机局域网技术Vlan了。

第一步:我们点击交换机swithch1,进入配置选项,我们在Wlan数据库中添加一个Vlan号为10,名称为Vlan10,的虚拟局域网再台添加一个Vlan号为20,名称为Vlan20的虚拟局域网。

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网_09

 

vm虚拟机模拟vlan 虚拟网vlan_子网_10

然后在交换机switch2中同样创建Vlan10和Vlan20,做跟siwtch1操作一样。

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网_11

点击交换机中的FastEthernet0/1,就是连接主机pc2的接口,我们将Vlan传输模式设置为Access,(Access模式只允许一种虚拟局域网传输就是只传输vlan10或则vlan20的数据)只能传输一种,不能同时传输两种。接着选中我们创建的vlan10虚拟局域网。这就代表着端口只传输vlan10的数据,不能直接传输vlan20虚拟局域网内主机的数据。

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_12

接着将端口0/2设置为Access和vlan20.

vm虚拟机模拟vlan 虚拟网vlan_子网_13

这样交换机switch1就划分了两个虚拟局域网vlan10和vlan。然后也在swithc2上划分相同的虚拟局域网vlan10和vlan20。

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网_14

接着将交换机之间的端口设置为Trun模式。这是交换机之间可以传输vlan10和vlan20两种虚拟局域网数据了。

vm虚拟机模拟vlan 虚拟网vlan_虚拟局域网_15

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_16

然后按照上面的步骤,将交换机由于主机相连的端口设置为10或则20。如下图所示,主机的ip地址子网掩码设置,如图所示:

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_17

终于好了,我们销售部和技术部划分成了两个虚拟局域网vlan10和vlan20。再ping主机pc4之前,我们还是先将各个主机的arp路由表清空。还是在各主机上输入arp -d命令。每个主机都要输入。

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_18

好了,我们现在再来看看主机pc2 ping主机pc4的过程。

vm虚拟机模拟vlan 虚拟网vlan_mac地址_19

vm虚拟机模拟vlan 虚拟网vlan_子网_20

 

vm虚拟机模拟vlan 虚拟网vlan_vm虚拟机模拟vlan_21

 

是不是发现我们的问题解决了,上面的广播数据包没有发送到技术部,只发给了技术部2,这就是虚拟局域网的好处。它就是用来分割广播域的,所有的广播数据都不会被其他虚拟局域网所接收到。这就是虚拟局域网的好处,既可以跨越地理位置又能分割广播域。不同虚拟局域网一般是不能通信的,即使是在同一个子网下也不行。