Java教程

由VLAN实验引发的链路层与网络层思考

本文主要是介绍由VLAN实验引发的链路层与网络层思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 背景

1.1. vlan

IEEE802.1Q协议用于在数据帧头加上VLAN信息,使得数据帧可以正确的传送到相应的VLAN内。 VLAN划分一般按照端口,也就是物理位置相近的设备划分,实际上,人们的实际工作也是把职能业务相近的部门放在物理位置相近的地方。因此,按照端口划分基本上就是按照业务划分。另外还要考虑业务部门的纵向连接,如市局财务处对分局财务科等。
传统的路由网段是自然天成的物理结构,而VLAN 是通过对交换机的设置而人为实现的.

  • VLAN 所表现的灵活性通过路由器的虚拟专用网络(VPN)技术或相应的路由策略技术都可以实现,使得 VLAN 的必要性不是那么充分。
  • 所有的VLAN 都经过中心路由器(当然可以配置备份的中心路由器),也就是所有的广播都经过中心路由器. VLAN 技术和交换机设备的结合,事实上已将本质上基于广播机制的以太网转变为点到点的通讯。 只有一种情况适合做VLAN,即:网络的站点数在几百个左右的规模,采用全交换加中心路由器的结构,按照相应的原则划分子网,各子网之间的通讯量很少,主要是子网内部的通讯,这时 VLAN 才会表现出其独特的优点。记住:“能交换就交换,必须路由才路由”的原则、“80/20”的原则依然是有效的。 目前,现有的网络设备已能够支持在一个网络上同时划分4096个VLAN。

1.2. Trunk

VLAN的配置是通过VTP(VLAN Trunk Protocol 即VLAN干道协议)来进行的。VTP是一个OSI7层模型中第2层的消息传递协议.在基于端口划分的vlan中,trunk的本意在于一个端口连接的有多个vlan的情况下(延申的都算),带有vlan端口标志的包仍然可以通过此端口转发. 一个交换机只可以属于一个VTP域,这个交换机可以在所在的VTP域内的VLAN间交换信息。VTP中的每个交换机都要在自己连接到TRUNK的端口上向其他交换机公告VLAN信息,信息版本号(revision number用于确认哪台交换机的信息比较新)。

1.3. 从设计者的角度

为企业内不同部门分配不同的IP子网,接入不同的VLAN,设置VLAN会有如下几种情况,可能不是所有情况都有必要:

  • 相同VLAN相同网段(如部门之内)
  • 不同vlan同一网段(如部门之内)
  • 不同vlan不同网段(如跨部门)
  • 相同vlan不同网段(如跨部门同一工作组)

划分子网,子网网段间不能直接进行通讯。划分VLAN,每个VLAN间也不能直接通讯。那么设置vlan与设置不同的网段有什么区别?

子网划分通过IP和掩码很轻易就能看出,这种易识别性在日常管理中是很重要的。而VLAN是更下一层的网络访问控制手段,也可以防止网络风暴.在工作原理上,寻址包对二层交换机是透明的,二层交换机只是会根据vid号判断发向哪个端口.值得一提的是,三层交换机下,不同vlan同一网段无法配置.

所以对于如上的情况,

  • 不同的vlan可以限制同一子网的PC接受到信息
  • 同一交换机不同的网段不能通信
  • 不同的网段本来就可以通过路由访问控制列表来控制.
  • 而如果是在同一vlan,因为不用经过路由器,即使不同网段也可以通信.

2. 需求

使用网络模拟软件描述并连接网络拓扑图,完成以下实验内容: 1)根据给定的拓扑图,pc1和pc2在同一个网段,pc3、pc4、pc5、pc6、pc7、pc8在同一网段(配置成),对各个设备进行配置,使各PC 机实现互连互通,能互相访问。 2) 划分Vlan,pc3、pc5和pc7处于Vlan10;pc4、pc6和pc8处于Vlan20,对各个设备进行配置,使各PC 机实现互连互通,能互相访问。

工具

Boson算得上是目前最流行的,操作最接近真实环境的模拟工具。可以毫不夸张地说,它就是真实设备的缩影。与真实实验相比,使用它省去了我们制作网线连接设备,频繁变换CONSOLE线,不停地往返于设备之间的环节。同时,它的命令也和最新的Cisco的IOS保持一致,能模拟出多种连接方式(如PSTN、ISDN、PPP等)。

2.1. STEP1

启动Boson Network Designer程序进入拓扑结构绘制界面,界面左侧是Boson提供的模拟设备,有路由器、交换机、PC、线缆等,按照题图绘制拓扑结构.

依次选择交换机的fastEthernet端口;对于路由器其上有两个接口:

  • console接口:Serial口,用于初始配置,因为此时路由器没有局域网地址,无法通过网口(即Ethernet口)登录;也用于路由器之间的对接
  • ethernet:网口,默认的只有1个口,可以选择2个或多个口
    @路由器的接口|

2.2. STEP2

2.2.1. 配置它们的ip地址

使用命令如ipconfig /ip 172.16.1.2 255.255.255.0

2.2.2. pc1和pc2在同一个网段:

pc1:172.16.1.2
pc2:172.16.1.3
复制代码

2.2.3. pc3、pc4、pc5、pc6、pc7、pc8在同一网段(配置成):

pc3:172.16.2.4
pc4:172.16.2.5
pc5:172.16.2.6
pc6:172.16.2.7
pc7:172.16.2.8
pc8:172.16.2.9
复制代码

2.3. STEP3

2.3.1. 配置交换机,使得同一交换机的PC机互连(默认是vlan1)

一些命令列举:

enable // 从用户模式进入特权模式
show version // 显示交换机版本
conf t // config terminal的缩写,进入全局配置模式
host 2950 // 给交换机重命名
int fe 0/1 // interface的简写,进入0/1端口
speed 100 // 设置端口速率100M
du full // 全双工
no shut // 激活端口
exit //退出端口
copy run start //保存端口设置
show int //查看全部端口
复制代码

配置过程 同一交换机的PC机互连

2.3.2. 配置交换机与交换机之间的连接,使同一网段的PC机可以互通

不需要将交换机与交换机之间对应端口都添加到一个vlan(不同交换机上的PC机应属于同一个vlan),但是需要将级联线对应的端口设置为Trunk[1]

vtp domain test  //启动vtp,这里test是自己起的名字
vtp client //该交换机设置成vtp客户端,这样将使得主交换机上的vlan配置自动同步到此交换机上
int fe 0/1
switchport mode trunk //启动与其他switch的trunk
复制代码

配置结果 不同交换机上但同一网段的PC机可以互通

2.3.3. 配置路由器,使各PC机能跨广播域互通

一些命令列举:

enable // 从用户模式进入特权模式
password:
conf t
int e 0/0 //进入0/0端口
int f0/0.2                               //创建子接口
ip addr 172.16.1.1 255.255.255.0 //配置路由端口ip地址
ip route 0.0.0.0 0.0.0.0 172.16.2.4 //配置默认路由地址为172.16.2.4
no ip route 0.0.0.0 0.0.0.0 172.16.2.4 //卸掉默认路由地址172.16.2.4
~
interface serial 2 // 配置串行接口
encapsulation fame-relay // 配置端口为帧中继封装形式
interface serial 2.1 // 配置了一个串行接口2的1号子端口,名为2.1
复制代码

配置过程 配置E0/0->172.16.1.1,配置E1/0->172.16.2.1,注意需要把PC的默认网关(网关[2]的IP地址是具有路由功能设备的IP地址,host的网关在有路由器时就是路由)设置成对应的172.16.1.1172.16.2.1,.否则路由表不知道往哪里转发,并且主机发包也是转发到默认网关(就是最开始/dg配置的)的MAC地址.两个路由器之间的连接也是同理,互相配置成默认转发到对方的端口ip地址.

配置结果

  • routing for Networks:172.16.0.0
  • 另一网段的PC7可与PCping通

2.4. STEP4

2.4.1. 划分Vlan,pc3、pc5和pc7处于Vlan10

一些命令列举:

vlan database //查看已有vlan列表
vlan 2 // 相比默认的vlan1已添加一个vlan2
switchport access vlan 2 // 按照端口划分vlan
switchport mode access   //此步骤在模拟机上是必须的,否则将ping不通,相当于启动端口的命令,类型是access,还有其他类型如hybrid
复制代码

2.4.2. pc4、pc6和pc8处于Vlan20

与上一步同理.

配置结果 PC3/5/7之间可以互相通信,PC4/6/8之间可以互相通信;而这两个vlan之间不可以

2.5. STEP5

必须注意到此时PC3~8它们都属于同一网段.而它们各属于不同的vlan,这导致它们连网关都无法访问,自然也无法访问路由.这是因为路由器在默认的情况下,是不会识别带标签的数据帧。通过hybrid可以去除标签,而实现各自vlan内的主机能访问网关但是vlan间仍然隔离[3]. 但是无论如何,不同vlan相同网段决定了二层三层都不可能通信!因为主机不知道和自己在同一网段的目的主机不在同一vlan,它不会走逻辑上的网关而采用广播的方法[4],但是又被vlan阻挡,故不能通过二层通信(用网桥桥接直接查询转发可以[5]);而如果想要通过三层通信,同网段又意味着路由器的两个接口要配置为同一个网段,但是网段ID具有唯一性[6],这个根本就不符合路由器的配置规范。即使是划分子接口,也会显示overlap,因为这样给你配置了路由器也不知道转给这两个相同网段的哪一个[7].

2.5.1. 更改两个vlan内PC为不同网段

同一vlan内网关应一致

vlan 10
gateway:172.16.2.1
PC3:172.16.2.4
PC5:172.16.2.6
PC7:172.16.2.8
vlan 20
gateway:172.16.3.1
PC4:172.16.3.5
PC6:172.16.3.7
PC8:172.16.3.9
复制代码

2.5.2. vlan之间路由

对路由器进行配置

show ip int brief//查看路由各端口详细信息
int fa0/1
switch trunk encap dot1q //trunk协议封装为dot1q,即IEEE 802.1Q协议,是vlan的一种封装方式,是公有协议。还有一种trunk协议--ISL,也是vlan的一种封装方式,不过这是Cisco私有协议,其他厂商不能用。
复制代码

如果设置了交换机到路由器的trunk,这里会有很多问题:

  • 路由器ping其他主机的时候会崩溃
  • 交换机的vlan下的某台PCping路由端口,会直接造成NetSim 9.9.5231的崩溃.....

配置过程 将交换价连接路由的端口放入一个vlan内,这里以将交换机2950-2连接路由器的端口置为vlan20内为例:

这样就能实现vlan20内的帧可以通过这个端口发出去,以及其他的帧可以发进来但是会打上vlan20的标志,以至于不能通过其他的vlan接口. 配置结果 最后只能将交换机的端口置为一个vlan中,这样也只能实现一个路由器两边的vlan互通,但是做不到一个路由端口连接的两个vlan也互通.

3. 总结

1.启动VTP;2.配置TRUNK;3.创建VLAN;4.给VLAN分配端口;5.vlan之间路由

4. Bugs

4.1. Request timed out

  • Error:
C:>ipconfig /ip 172.16.1.2 255.255.255.0 //此时尚未指定网关
C:>ping 172.16.1.3
Pinging 172.16.1.3 with 32 bytes of data:
Request timed out.
复制代码
  • 解决办法:
  1. 使用Ping檢查連通性五個步驟︰

  1. 使用ipconfig /all觀察本地網絡設定是否正確;

  2. Ping 127.0.0.1,目的是檢查本地(網路卡)的TCP/IP協定是否正確設定。

  3. Ping本機IP位址,這樣是為了檢查本機的IP位址是否設定有誤。

  4. Ping本網閘道或本網IP位址,檢查硬體設備是否有問題,也可以檢查本機與本地網絡連線是否正常。到此正常可排除近端區網的問題。

  5. Ping遠端IP位址,這主要是檢查本網或本機與外部的連線是否正常。 2. 在ping的基础上排除错误,最后怀疑到交换机身上,在教程的提醒下换到2950型号并进行相关配置

  • 反思: 没有仔细看给的样例,最开始交换机选用的是1900型号而不是2950型号.实际上,2002年Catalyst 1900已被淘汰[8]

4.2. Gateway of last resort is not set

  • Error 不同网段之间配置好rip协议后,网段之间无法通过路由转发.
  • 解决办法
  1. show ip int bri 查看端口信息,发现端口激活正常
  2. 考虑到可能是静态路由与动态路由的区别

静态路由是在路由器中设置的固定的路由表。除非管理员干预,否则静态路由不会发生变化。一般用于网络规模不大、拓扑结构固定的网络中。 动态路由是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程。当动态路由与静态路由发生冲突时,以静态路由为准。

如果初学者如我以为路由器可以只配置动态路由,它自己会通过与网段中的主机交流获取路由表,那是一个误会.但是如果配置了网关,它自己本身是IP路由. 3. 按照Cisco官方说明[9]使用ip route 0.0.0.0 0.0.0.0配置即可;必须注意就是它的型号上某些命令这里用不了--不过不打紧

  • 反思 虽然是英文说明文档,但还是要好好看

4.3. 修改一次ip addr无效

4.4. ping 网关不同的原因

有个人说配置静态路由就好了


  1. 交换机之间用TRUNK ↩︎

  2. 网关专门是为不同网段通信设计的硬件设备,充当网关的硬件设备通常有路由器、三层交换机、防火墙。主机自身一般情况下不是网关,两个不同网段的主机相连无法ping通. ↩︎

  3. 不同VLAN,同一网段的通信问题 ↩︎

  4. 大熊:如果目标IP地址是本地地址,就送回本地上层处理,根本不会发到网卡去; 是同一网段中的其他地址,查ARP表或发ARP请求; 如果目标IP地址不在同一网段,需发往三层,此时Gateway的MAC地址作为目标MAC地址 ↩︎

  5. 网关到底是什么? ↩︎

  6. 车小胖:任意选定一个接口,用该接口的网络掩码来与所有接口的IP地址进行“按位与”计算。只要计算出网段ID有重复的,就是非法配置 ↩︎

  7. 相同VLAN相同网段_相同VLAN不同网段_不同VLAN相同网段_不同VLAN不同网段 ↩︎

  8. 质优价廉:Cisco 2950系列交换机 ↩︎

  9. 设置路由器默认网关的三种方法 ↩︎

这篇关于由VLAN实验引发的链路层与网络层思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!