搞一个简单的单臂路由

用 Disco Packet Tracer
首先随便拉一个两个电脑、一个交换器、一个路由器出来
然后,连起来

PC0和PC1分别用直通线与交换器连接,
PC0连接交换器的 FastEthernet0/1 端口;
PC2连接交换器的 FastEthernet0/2 端口;
交换器的GigabitEthernet0/1用直通线连接路由器的GigabitEthernet0/0/0端口

先把线都连接好

随后,配置两个电脑的IP位址和闸道
这里IP位址设定PC0为192.168.0.1/24;PC2为192.168.1.1/24
闸道PC0设定为192.168.0.254;PC2设定为192.168.1.254

设定好两台电脑的IP位址与闸道,我们首先来验证一下两台电脑之间能否通讯
ping失败
很显然是不能的。

设定好两个电脑的IP位址和闸道之后,
就按照这个东西来设定交换器和路由器

首先,划VLAN

Switch           >enable                      // 进入启用模式
Switch           #vlan database               // 进入 VLAN database 模式
Switch(vlan)     #vlan 20                     // 创建一个ID为20的VLAN
Switch(vlan)     #vlan 30                     // 创建一个ID为30的VLAN
Switch(vlan)     #exit                        // 退出VLAN模式
Switch           #configure terminal          // 进入配置模式
Switch(config)   #interface FastEthernet0/1
Switch(config-if)#switchport access vlan 20   // 把FastEthernet0/1划入VLAN20
Switch(config-if)#interface FastEthernet0/2
Switch(config-if)#switchport access vlan 30   // 把FastEthernet0/1划入VLAN30

至此我们就在交换机上把VLAN划起来了。

有一件事值得一提的是,
设置Disco的交换器和路由器的时候可以使用
Switch(config)#no ip domain-lookup
来停用手残打错指令还要等很久的那个东西。

划好VLAN之后,我们就来设置trunk
还记得那个和路由器连接的GigabitEthernet0/1吗?

Switch(config)   #interface GigabitEthernet0/1
Switch(config-if)#switchport mode trunk        // 配置GigabitEthernet0/1端口为trunk
Switch(config-if)#exit

至此,交换机上的设定就基本完成了。
如果有需要的话,别忘了使用no shutdowncopy run start来保存设置。

接下来,我们需要来设定路由器。

Router              >enable                              //进入启用模式
Router              #configure terminal                  //进入配置模式
Router(config)      #interface GigabitEthernet0/0/0.1    //使用这个.1的subintgerface
Router(config-subif)#encapsulation dot1Q 20              //封装dot1Q协议 建立和VLAN20的关联
Router(config-subif)#ip add 192.168.0.254 255.255.255.0  //配置闸道位址
Router(config)      #interface GigabitEthernet0/0/0.2    //使用这个.2的subintgerface
Router(config-subif)#encapsulation dot1Q 30              //封装dot1Q协议 建立和VLAN30的关联
Router(config-subif)#ip add 192.168.1.254 255.255.255.0  //配置闸道位址
Router(config-subif)#interface GigabitEthernet0/0/0
Router(config-if)   #no shutdown                         //保存配置

至此,两台不同网段的电脑就能互相通讯了。
ping成功


有几点有趣的是,
根据维基百科介绍,单臂路由是用来在VLAN之间传输数据的,所以在做单臂路由之前要先划好VLAN。

然后那个encapsulation又是什么东西呢?
这个encapsulation就是这个 IEEE 802.1Q 标准,说的就是怎么给这个数据包打标签。
说白了就是加了一个4位元组的标签(VLAN标签)来区分这个数据包是从哪个VLAN来的
这个VLAN标签打上也是在交换机上打,剥离也是在交换机上完成,
所以这个标签对于我们的电脑啊手机啊之类的是感觉不到有这个东西的。

然后Disco也有个私有协议叫做ISL(Cisco Inter-Switch Link)
然后这个ISL和802.1Q的区别主要是,

概述802.1QISL
协议性质不同公开协议,什么厂都可以按照这个协议开发产品Disco私有协议,不能随便用
封装方式的不同没有破坏数据帧,只是在中间插了个标签把数据帧重新打包,在头尾都加了东西。
封装形式不同802.1Q可以与没有做Trunk封装的标准数据帧兼容 可以正常通信做了ISL与没有做ISL封装的普通数据帧无法识别 导致无法通信

嘛 不管怎样 我个人还是推802.1Q比较好
遵守了公开协议大家都能好好玩耍,ISL只能自己和自己玩==
然后封装dot1q的方法在这里

另外有一点需要特别提到的是,
在单臂路由中,数据包的传递是会经过路由器进出的(恕我语文功底不好不知道怎么描述orz
请看图:
错误路径
虽然是个人都知道两点之间线段最短但是这样子是不对的,
这样子数据包根本传不过去pwp
正确路径
这个才是对的


至此,这篇文章就结束了
如果文章中有什么不对的恳请大家指出pwp
谢谢各位大佬。

标签: none

添加新评论