基于端口的虚拟局域网测试

一、什么是VLAN

VLAN,是英文Virtual Local Area Network的缩写,中文名为"虚拟局域网", VLAN是 一种将局域网(LAN)设备从逻辑上划分(注意,不是从物理上划分)成一个个网段(或者 说是更小的局域网LAN),从而实现虚拟工作组(单元)的数据交换技术。

VLAN 主要用来解决如何将大型网络划分成多个小网络,隔离原本在同一个物理LAN中的不同主机间的二层通信;

LAN中,各主机之间的通信是物理通信(二层通信);

VLAN中,各主机划分于不同的VLAN,不同VLAN之间通信是三层通信;

 

二、问题发现:

今天在复习二层网络设置VLAN的问题的时候,突然想到:如果在VLAN中多加上一个路由器还能否使用的了vlan

这个是我做实验用的图:

 基于端口的虚拟局域网测试_路由交换

 

 

 

第一步:按照图中的要求,将所有主机以及路由器上面的IP地址都配置好:现在还没有配置vlan,所有所有的主机都是能够互相ping通的;

第二步:LSW1LSW2 的接口上配置相应的链路模式,在这里LSW与主机之间相连的端口设置为accessLSW12和路由器之间的端口设置为trunk;设置完之后,发现在同一个二层网络之间的相同vlan能够相互的ping通;但是不同的二层网络之间却不能ping通(192.168.1.1->192.168.0.1ping不通);

第三步:因此我在LSW1e0/0/3的链路上进行抓包;发现:

 基于端口的虚拟局域网测试_VLAN_02

这时候的我认为:应该是路由器没有设置arp代理导致的:所以我选择添加了静态arp并且在每个端口上都开启了arp代理;

第四步:继续用pc1pingpc2,发现任然ping不通;所以我仔细看了下:原来是pc1找不到去往路由器端口的地址:(因为我在LSW1E0/0/3上设置的是trunk,当pc1的数据包生成发送通过e0/0/3端口到链路上的是带有标签的帧);路由器的g0/0/0端并不能识别这种带有标签的帧,所以直接丢弃,所以在PC1上才会返回:目标不可达;

当我把LSW1LSW2上和路由器相连接的接口的链路状态模式设置为了access,这下就能够从PC1pingPC2;(不过现在只能使VLAN10的主机相互ping通,但是vlan20的并不能;)

现在我关闭了路由器端口的arp代理。看是否还能够相互ping通;好吧,他果然还是能够ping通;(下图是PC1上的arp缓存),其实现在根本没有用到arp代理功能!

 基于端口的虚拟局域网测试_路由交换_03

所以我吧PC1的默认网关去掉之后,依然能够ping通,说明了此时才是利用了arp代理功能;(arp代理就是告诉PC1要去别的网络可以吧文件发给我);在这里去的网关值为(0.0.0.0

 

现在需要解决的问题就是:如何让VLAN 20也能够相互ping通;因为Access端口最主要的特性是仅允许一个VLAN的帧通过,所以Access只能加入一个VLAN,所以这个就是限制了LSW1和路由器只能传VLAN10帧的主要问题所在;

 

三、问题解决思路

所以为了能够前面所提出来的问题

思路有2条:1)在路由器的接口处配置,使他能够接受并转发带有帧的报文;

将链路种类换成hybrid;看是否能行得通;

采用单臂路由器的方式完成;

(一)先做第一条:(利用单笔路由器的思路)

 基于端口的虚拟局域网测试_路由交换_04

设置子端口并且配置使子端口能够接受vidX的标签;

然后,去掉默认网关,因为默认网到达。在这里利用arp广播;但是为什么我ping不通呢,(原因是因为我设置了静态arp,在此之前设置的静态arp时候的ip和现在修改了IP的不一样啦。因为要保证不再同一网段;)

然后的然后发现单笔路由器设置不了啊。(先补充一波单笔路由器的资料)

基于端口的虚拟局域网测试_路由交换_05

 

先把LSW4上面的接口的链路种类设置为accesstrunk

在这里:两台主机的ip是不在同一个网段下的,(因为如果两台主机在同一个网段下的话,他会认为PC11和自己是在同一个网络下,只会进行二层通信,所以他不会选择发送至路由器;当它需要ping PC11的时候,会在同一个网络下去用arp请求,但是因为vlan的存在,所以arp根本不能广播到PC11,所以会发送失败;但是如果不在一个网段下的话,PC10会进行三层通信,PC10会选择访问默认路由,即能到达路由器上,就会查找IP表,然后查出目标PC11ip然后发送出去;)

接着做,对路由器进行配置:(单臂模式)

[R4-GigabitEthernet0/0/0.1]ip address  10.0.0.10 24

[R4-GigabitEthernet0/0/0.1]dot1q termination vid 10

[R4-GigabitEthernet0/0/0.1]arp broadcast enable

[R4-GigabitEthernet0/0/0.1]ip address  10.0.1.10 24

[R4-GigabitEthernet0/0/0.1]dot1q termination vid 20

[R4-GigabitEthernet0/0/0.1]arp broadcast enable

然后就能ping通了。

 

其实我觉得单臂路由器对于vlan没有什么大的作用,毕竟有个路由器就已经能够达到隔离广播的作用了。

然后呢,为了能让PC1和不同网段的PC3通信,所以同样要把LSW2和路由器相关的链路设置为单笔路由器的模式。当然,主机PC3pc4 ip地址都要变换,(其实就挺像一个三层通信)。

最后测试:最后都弄通了。不过没有达到想要的效果。因为vlan都被路由器的转发功能破换完了,,,与其花这么多时间搞vlan,还不如直接使用匹配模式赛选路由;

这个用的是cs1

 

 

 

 

 

(二)然后做第二条思路:(利用hybrid的特性)

Hybrid端口:pvid:这个在hybrid端口中,是连接主机的端口需要设置的,她为即将到来的数据报文添加一个pvid;(如果没有对报文进行pvid的命名,它将不会受到后面设置了taggeduntagged端口设置的影响);

Untagged:这个接口主要是用在了主机和交换机之间的;为了剥离pviduntagged设置的vlan相同的帧,如果值不相同的话就直接丢弃;

Tagged:当收到了一个pvid和设置的tagged所设置的vlan相同时,会剥其报文转发,当收到了一个pvid和设置的tagged所设置的vlan不相同时,不剥离直接转发。

 

不过这个思路是完成不了的。

如果我在路由器和交换机之间的端口上设置hybrid端口,并且设置端口为tagged10,20 ,这样。。。。。

 

 

在这之前先考虑一个问题:如果当一个hybrid端口设置为tagged时候,按照定义,如果他收到了一个pvid和设置的tagged相同的帧,就会剥离。那到底是怎么样子的剥离呢?如果这样都可以的话那和untagged又有什么区别呢?

现在先做个小实验来验证:

 基于端口的虚拟局域网测试_路由交换_06

 

1、现在E0/0/1上配置好hybriduntagged

[Huawei-Ethernet0/0/1]port hybrid pvid vlan 10

[Huawei-Ethernet0/0/1]port hybrid untagged

 

e0/0/3上配置好hybridtaggedvlan 10)并shutdown e0/0/2

[Huawei-Ethernet0/0/3]port hybrid  tagged  vlan 10

 基于端口的虚拟局域网测试_HCNA_07

 这个是e0/0/1上抓的包:

 基于端口的虚拟局域网测试_路由交换_08

这个是e0/0/3上抓的包:

 基于端口的虚拟局域网测试_HCNA_09

尝试用pc15pingpc17肯定是ping不通的,通过在e0/0/3这条链路上抓包。发现:每个arp包上面都有一个202.1Q的标签:

[Huawei-Ethernet0/0/3]undo port hybrid  tagged  vlan  10

[Huawei-Ethernet0/0/3]port hybrid  tagged vlan 20

然后我现在选择吧taggedvlan值修改为20(不相同了),然后就直接拒收了好么;这特么和定义的不一样啊

个人理解:

应该是如果taggedvlan值和pvid相同的话—转发。如果不相同的话,就会丢弃;

          tagged从交换机和交换机的链路上接受到了pvid不等于tagged接口的vlan。直接丢弃。当tagged从交换机内部准备向外发出时候:如果标签的pvid不等于tagged接口的vlan时候,不予转发。

Pvid用于:收到标签的帧的时候会打上标签;标签的值为设置的pvid的值;

    Untagged 收到带有标签的。判断和untagged设置的vlan的值是否相同。如果相同的话就去掉标签变成一个普通的,可以被路由器主机识别的帧;如果不相同。直接扔了。

 

所以。

 基于端口的虚拟局域网测试_VLAN_10

 

对于这张图来说,我无论在LSW1  0/0/4接口做如何的设置:

如果我设置了tagged并且允许带有pvid的报文通过的话:如果路由器没有做带有可以识别802.1Q帧的设置的话,(单笔路由器);路由器上面的G0/0/0是绝对不能收到该帧的;

如果我现在这个接口上设置了untagged帧的话:虽然该接口是能够接受该帧并且做出路由选择,但是对于和路由器相连的LSW2 E0/0/1接口来说:它必须有一个pvid但也只能存在一个pvid、所以也只能传送一种pvid的帧、并不能达到希望的效果;

 

3/2 2017              by:my-tea