基于端口的虚拟局域网测试
基于端口的虚拟局域网测试
一、什么是VLAN:
VLAN,是英文Virtual Local Area Network的缩写,中文名为"虚拟局域网", VLAN是 一种将局域网(LAN)设备从逻辑上划分(注意,不是从物理上划分)成一个个网段(或者 说是更小的局域网LAN),从而实现虚拟工作组(单元)的数据交换技术。
VLAN 主要用来解决如何将大型网络划分成多个小网络,隔离原本在同一个物理LAN中的不同主机间的二层通信;
在LAN中,各主机之间的通信是物理通信(二层通信);
在VLAN中,各主机划分于不同的VLAN,不同VLAN之间通信是三层通信;
二、问题发现:
今天在复习二层网络设置VLAN的问题的时候,突然想到:如果在VLAN中多加上一个路由器还能否使用的了vlan;
这个是我做实验用的图:
第一步:按照图中的要求,将所有主机以及路由器上面的IP地址都配置好:现在还没有配置vlan,所有所有的主机都是能够互相ping通的;
第二步:对LSW1和LSW2 的接口上配置相应的链路模式,在这里LSW与主机之间相连的端口设置为access,LSW1,2和路由器之间的端口设置为trunk;设置完之后,发现在同一个二层网络之间的相同vlan能够相互的ping通;但是不同的二层网络之间却不能ping通(192.168.1.1->192.168.0.1ping不通);
第三步:因此我在LSW1的e0/0/3的链路上进行抓包;发现:
这时候的我认为:应该是路由器没有设置arp代理导致的:所以我选择添加了静态arp并且在每个端口上都开启了arp代理;
第四步:继续用pc1pingpc2,发现任然ping不通;所以我仔细看了下:原来是pc1找不到去往路由器端口的地址:(因为我在LSW1的E0/0/3上设置的是trunk,当pc1的数据包生成发送通过e0/0/3端口到链路上的是带有标签的帧);路由器的g0/0/0端并不能识别这种带有标签的帧,所以直接丢弃,所以在PC1上才会返回:目标不可达;
当我把LSW1和LSW2上和路由器相连接的接口的链路状态模式设置为了access,这下就能够从PC1ping通PC2;(不过现在只能使VLAN10的主机相互ping通,但是vlan20的并不能;)
现在我关闭了路由器端口的arp代理。看是否还能够相互ping通;好吧,他果然还是能够ping通;(下图是PC1上的arp缓存),其实现在根本没有用到arp代理功能!
所以我吧PC1的默认网关去掉之后,依然能够ping通,说明了此时才是利用了arp代理功能;(arp代理就是告诉PC1要去别的网络可以吧文件发给我);在这里去的网关值为(0.0.0.0)
现在需要解决的问题就是:如何让VLAN 20也能够相互ping通;因为Access端口最主要的特性是仅允许一个VLAN的帧通过,所以Access只能加入一个VLAN,所以这个就是限制了LSW1和路由器只能传VLAN10帧的主要问题所在;
三、问题解决思路
所以为了能够前面所提出来的问题
思路有2条:1)在路由器的接口处配置,使他能够接受并转发带有帧的报文;
将链路种类换成hybrid;看是否能行得通;
采用单臂路由器的方式完成;
(一)先做第一条:(利用单笔路由器的思路)
设置子端口并且配置使子端口能够接受vid为X的标签;
然后,去掉默认网关,因为默认网到达。在这里利用arp广播;但是为什么我ping不通呢,(原因是因为我设置了静态arp,在此之前设置的静态arp时候的ip和现在修改了IP的不一样啦。因为要保证不再同一网段;)
然后的然后发现单笔路由器设置不了啊。(先补充一波单笔路由器的资料)
先把LSW4上面的接口的链路种类设置为access和trunk;
在这里:两台主机的ip是不在同一个网段下的,(因为如果两台主机在同一个网段下的话,他会认为PC11和自己是在同一个网络下,只会进行二层通信,所以他不会选择发送至路由器;当它需要ping PC11的时候,会在同一个网络下去用arp请求,但是因为vlan的存在,所以arp根本不能广播到PC11,所以会发送失败;但是如果不在一个网段下的话,PC10会进行三层通信,PC10会选择访问默认路由,即能到达路由器上,就会查找IP表,然后查出目标PC11的ip然后发送出去;)
接着做,对路由器进行配置:(单臂模式)
[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和路由器相关的链路设置为单笔路由器的模式。当然,主机PC3和pc4 的ip地址都要变换,(其实就挺像一个三层通信)。
最后测试:最后都弄通了。不过没有达到想要的效果。因为vlan都被路由器的转发功能破换完了,,,与其花这么多时间搞vlan,还不如直接使用匹配模式赛选路由;
这个用的是cs1
(二)然后做第二条思路:(利用hybrid的特性)
Hybrid端口:pvid:这个在hybrid端口中,是连接主机的端口需要设置的,她为即将到来的数据报文添加一个pvid;(如果没有对报文进行pvid的命名,它将不会受到后面设置了tagged和untagged端口设置的影响);
Untagged:这个接口主要是用在了主机和交换机之间的;为了剥离pvid和untagged设置的vlan相同的帧,如果值不相同的话就直接丢弃;
Tagged:当收到了一个pvid和设置的tagged所设置的vlan相同时,会剥其报文转发,当收到了一个pvid和设置的tagged所设置的vlan不相同时,不剥离直接转发。
不过这个思路是完成不了的。
如果我在路由器和交换机之间的端口上设置hybrid端口,并且设置端口为tagged为10,20 ,这样。。。。。
在这之前先考虑一个问题:如果当一个hybrid端口设置为tagged时候,按照定义,如果他收到了一个pvid和设置的tagged相同的帧,就会剥离。那到底是怎么样子的剥离呢?如果这样都可以的话那和untagged又有什么区别呢?
现在先做个小实验来验证:
1、现在E0/0/1上配置好hybrid和untagged;
[Huawei-Ethernet0/0/1]port hybrid pvid vlan 10
[Huawei-Ethernet0/0/1]port hybrid untagged
在e0/0/3上配置好hybrid和tagged(vlan 10)并shutdown e0/0/2
[Huawei-Ethernet0/0/3]port hybrid tagged vlan 10
这个是e0/0/1上抓的包:
这个是e0/0/3上抓的包:
尝试用pc15ping通pc17肯定是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
然后我现在选择吧tagged的vlan值修改为20(不相同了),然后就直接拒收了好么;这特么和定义的不一样啊
个人理解:
应该是如果tagged的vlan值和pvid相同的话—转发。如果不相同的话,就会丢弃;
当tagged从交换机和交换机的链路上接受到了pvid不等于tagged接口的vlan。直接丢弃。当tagged从交换机内部准备向外发出时候:如果标签的pvid不等于tagged接口的vlan时候,不予转发。
Pvid用于:收到标签的帧的时候会打上标签;标签的值为设置的pvid的值;
Untagged 收到带有标签的。判断和untagged设置的vlan的值是否相同。如果相同的话就去掉标签变成一个普通的,可以被路由器主机识别的帧;如果不相同。直接扔了。
所以。
对于这张图来说,我无论在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