单臂路由
单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通。
在Cisco网络认证体系中,单臂路由是一个重要的学习知识点。通过单臂路由的学习,能够深入的了解VLAN(虚拟局域网)的划分、封装和通信原理,理解路由器子接口、ISL协议和802.1Q协议,是CCNA考试中经常考的。
中文名
单臂路由
外文名
Single arm routing
性质
在路由器的一个接口上配置子接口
目的
实现原来不同VLAN之间的互联互通
优点
实现不同vlan之间的通信
单臂路由的子接口
路由器的物理接口可以被划分成多个逻辑接口,这些被划分后的逻辑接口被形象的称为子接口。值得注意的是这些逻辑子接口不能被单独的开启或关闭,也就是说,当物理接口被开启或关闭时,所有的该接口的子接口也随之被开启或关闭。
优缺点
VLAN能有效分割局域网,实现各网络区域之间的访问控制。但现实中,往往需要配置某些VLAN之间的互联互通。比如,你的公司划分为领导层、销售部、财务部、人力部、科技部、审计部,并为不同部门配置了不同的VLAN,部门之间不能相互访问,有效保证了各部门的信息安全。但经常出现领导层需要跨越VLAN访问其他各个部门,这个功能就由单臂路由来实现。
优点:实现不同vlan之间的通信,有助理解、学习VLAN原理和子接口概念。
缺点:容易成为网络单点故障,配置稍有复杂,现实意义不大。
配置实例
实验设备:一台CISCO路由器(R1),一台三层交换机(S1),两台PC机( pc2和pc3)
PC的配置如下:

实验拓扑
pc2的IP:192.168.2.10 网关:192.168.2.254
pc3的IP:192.168.3.10 网关:192.168.3.254
交换机S1的配置如下:
Switch>enable
Switch#vlan database
Switch(vlan)#vlan 2 name test01
VLAN 2 added:
Name: test01
Switch(vlan)#vlan 3 name test02
VLAN 3 added:
Name: test02 →设置好vlan ,这里只简单设置两个。
Switch(vlan)#exit
APPLY completed.
Exiting....
Switch#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface fa0/2
Switch(config-if)#switchport access vlan 2
Switch(config-if)#exit
Switch(config)#interface fa0/3
Switch(config-if)#switchport access vlan 3
Switch(config-if)#exit
Switch(config)#interface fa0/1
Switch(config-if)#switchport trunk encapsulation dot1q (2960等交换机只支持802.1q协议,这里忽略)
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan all
Switch(config-if)#exit
Switch(config)#end
%SYS-5-CONFIG_I: Configured from console by console
Switch#write memory
Building configuration...
[OK]
下面来重点,配置单臂路由:
Router>enable
Router#config
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z. .................进入全局配置模式
Router(config)#interface fa0/0 ................进入和交换机连接的那个接口
Router(config-if)#no shutdown ................激活该端口
Router(config-if)#exit ……………返回到全局配置模式
Router(config)#interface fa0/0.1 ...........配置 子接口 这是配置单臂路由的关键,这个接口是个 逻辑接口,并不是实际存在的物理接口,但是功能却和物理接口是一样的。
Router(config-subif)#encapsulation dot1q 2 .......为这个接口配置802.1Q协议,最后面的 2 是vlan 号,这也是关键部分
Router(config-subif)#ip address 192.168.2.254 255.255.255.0 .........为该接口划分网关地址。
Router(config-subif)#exit
Router(config)#interface fa0/0.2 .....同样,进入第2个子接口,进行配置
Router(config-subif)#encapsulation dot1q 3 .........配置802.1Q协议
Router(config-subif)#ip address 192.168.3.254 255.255.255.0 ......划分网关地址和子网掩码
Router(config-subif)#end
%SYS-5-CONFIG_I: Configured from console by console ..........完成配置
下面是测试结果:
经过分别对两台机子互相ping的测试,可以发现能够ping通,说明实验成功。
实验手册
实验名称:单臂路由实验
目标:通过一个路由器进行多个VLAN互联
环境:1. 交换机为二层交换机,支持VLAN划分;2. 路由器只有1个Ethernet接口
实施:采用单臂路由,即在路由器上设置多个逻辑子接口,每个子接口对应于一个VLAN。由于物理路由接口只有一个,各子接口的数据在物理链路上传递要进行标记封装。Cisco设备支持ISL和802.1q协议。华为设备只支持802.1q。
华为单臂路由
需求:在局域网中,通过交换机上配置VLAN可以减少主机通信广播域的范围,当VLAN之间有部分主机需要通信,但交换机不支持三层交换时,可以采用一台 支持802.1Q的路由器实现VLAN的互通.这需要在以太口上建立子接口,分配IP地址作为该VLAN的网关,同时启动802.1Q.
组网:路由器E0端口与交换机的上行trunk端口(第24端口)相连,交换机下行口划分3个VLAN,带若干主机.
路由器的配置
[Router]sy
[Router]inter e0
[Router-Ethernet0]ip add 10.0.0.1 255.255.255.0
[Router-Ethernet0]inter e0.1 //定义子接口E0.1
[Router-Ethernet0.1]ip add 172.16.1.1 255.255.255.0
[Router-Ethernet0.1]vlan-type dot1q vid 1 //指定以太网子接口属于VLAN1,此命令应用在以太网子接口上。只有配置了该命令之后,以太网子接口才会根据配置的VLAN ID 号在以太网帧头中嵌入VLAN 标签,与该网口相连的交换机接口才能正确处理接收到的帧。
[Router-Ethernet0.1]inter e0.2 //定义子接口E0.2
[Router-Ethernet0.2]ip add 172.16.2.1 255.255.255.0
[Router-Ethernet0.2]vlan-type dot1q vid 2 //指定以太网子接口属于VLAN2
[Router-Ethernet0.2]inter e0.3 //定义子接口E0.3
[Router-Ethernet0.3]ip add 172.16.3.1 255.255.255.0
[Router-Ethernet0.3]vlan-type dot1q vid 3 //指定以太网子接口属于VLAN3
[Router-Ethernet0.3]inter e0
[Router-Ethernet0]undo shut
% Interface Ethernet0 is up
[Router-Ethernet0] //用网线将E0端口连到S3026第24端口
%19:46:32: Interface Ethernet0 changed state to UP
%19:46:32: Line protocol ip on interface Ethernet0, changed state to UP
%19:46:32: Line protocol ip on interface Ethernet0.1, changed state to UP
%19:46:32: Line protocol ip on interface Ethernet0.2, changed state to UP
%19:46:32: Line protocol ip on interface Ethernet0.3, changed state to UP
交换机的配置
Enter system view , return user view with Ctrl+Z.
[Quidway]vlan 1
[Quidway-vlan1]vlan 2
[Quidway-vlan2]port ethernet 0/17 to eth 0/19 eth 0/22 //将第17至19端口,和第22端口加入VLAN2
[Quidway-vlan2]vlan 3
[Quidway-vlan3]port eth 0/21 //将第21端口加入VLAN3
[Quidway-vlan3]inter e0/24
[Quidway-Ethernet0/24]port link-type trunk //将第24端口设为trunk口
[Quidway-Ethernet0/24]port trunk permit vlan all //允许所有VLAN流量通过
Please wait........................................... Done.
[Quidway-Ethernet0/24]dis port trunk //检验TRUNK口配置
Now, the following trunking ports exist:
Ethernet0/24
[Quidway-Ethernet0/24]dis vlan 2 //检验VLAN2的配置
VLAN ID: 2
VLAN Type: static
Route Interface: not configured
Description: VLAN 0002
Tagged Ports:
Ethernet0/24
Untagged Ports:
Ethernet0/17 Ethernet0/18 Ethernet0/19 Ethernet0/22
[Quidway-Ethernet0/24]dis vlan 3 //检验VLAN3的配置
VLAN ID: 3
VLAN Type: static
Route Interface: not configured
Description: VLAN 0003
Tagged Ports:
Ethernet0/24
Untagged Ports:
Ethernet0/21
3.在工作站上检查网络是否连通。此工作站连接S3026第21端口,属于VLAN2。
C:\Documents and Settings\Administrator>ipconfig
windows 2000 IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.2.22
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.2.1
C:\Documents and Settings\Administrator>ping 172.16.3.1
Pinging 172.16.3.1 with 32 bytes of data:
Reply from 172.16.3.1: bytes=32 time<10ms TTL=255
Reply from 172.16.3.1: bytes=32 time<10ms TTL=255
Reply from 172.16.3.1: bytes=32 time<10ms TTL=255
Reply from 172.16.3.1: bytes=32 time<10ms TTL=255
Ping statistics for 172.16.3.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
4.在路由器上查看路由表。可以发现,由于172.16各网段都是直连路由,故不需启用路由协议或静态路由即能实现VLAN之间的通讯。
[Router]display ip routing-table
Routing Tables:
Destination/Mask Proto Pref Metric Nexthop Interface
10.0.0.0/24 Direct 0 0 10.0.0.1 Ethernet0
10.0.0.1/32 Direct 0 0 127.0.0.1LoopBack0
127.0.0.0/8 Direct 0 0 127.0.0.1 LoopBack0
127.0.0.1/32 Direct 0 0 127.0.0.1 LoopBack0
172.16.1.0/24 Direct 0 0 172.16.1.1 Ethernet0.1
172.16.1.1/32 Direct 0 0 127.0.0.1 LoopBack0
172.16.2.0/24 Direct 0 0 172.16.2.1 Ethernet0.2
172.16.2.1/32 Direct 0 0 127.0.0.1 LoopBack0
172.16.3.0/24 Direct 0 0 172.16.3.1 Ethernet0.3
172.16.3.1/32 Direct 0 0 127.0.0.1 LoopBack0
vlan下的设置
在一个vlan下,可以通过设置路由接口的secondary ip实现在一个物理网络上两个具有不同网段IP计算机的联通。

设置Ip地址
[root#PCA root]# ipconfig eth0 10.65.1.1 netmask 255.255.0.0
[root#PCB root]# ipconfig eth0 10.66.1.1 netmask 255.255.0.0
[root#PCA root]# ping 10.66.1.1 (不通)
[root#PCB root]# ping 10.65.1.1 (不通)
PCA与PCB是不通的,因为它们在不同的网络段,一个是10.65.0.0/16网络,一个
是10.66.0.0/16网络,即netid不同,而不同网络的主机间访问必须通过路由实现。
设置ip地址
roa(config)#int f0/0
roa(config-if)#ip address 10.65.1.2 255.255.0.0
roa(config-if)#no shut
roa(config-if)#ip address 10.66.1.2 255.255.0.0 secondary
roa#sh run
在显示的信息当中,在FastEthernet0/0的位置,应该能够看到前面设置的两个IP
地址。
可通性
[root#PCA root]# ping 10.66.1.1 (不通)
[root#PCA root]# ping 10.66.1.2 (通)
[root#PCB root]# ping 10.65.1.1 (不通)
[root#PCB root]# ping 10.65.1.2 (通)
为什么PCA和PCB还是不通呢?哦,还没有设置计算机的网关。
[root#PCA root]# route add default gw 10.65.1.2
[root#PCB root]# route add default gw 10.66.1.2
[root#PCA root]# ping 10.66.1.1 (通了)
[root#PCB root]# ping 10.65.1.1 (通了)
去掉联接线
[root#PCA root]# ping 10.66.1.1 (不通了)
[root#PCB root]# ping 10.65.1.1 (不通了)
由此可以看出,PCA到PCB的发送的数据包是经过路由器的,从路由器f0/0入,再
从f0/0出,所以称之为单臂路由。
这种情况PCA和PCB在同一个广播域中,对网络带宽不利。如果划分VLAN可以隔离
广播域。通过子接口可以实现对不同VLAN的路由。
交换机的情况
双击交换机,进入交换机的终端模式:
switch>en
password:
switch#conf t
switch(config)#int vlan 1
switch(config-if)#ip address 10.65.1.8 255.255.0.0
switch(config-if)#exit
switch(config)#ip default-gateway 10.65.1.2
switch(config)#end
switch#ping 10.65.1.1 (通)
switch#ping 10.66.1.1 (通)
断开交换机与路由器的联线,再执行从交换机ping 命令:
switch#ping 10.65.1.1 (通)
switch#ping 10.66.1.1 (不通)
这说明不同网络段IP的联通是要通过路由器的。
故障排查
有时候配置完成后并不能正常访问对端的PC,按照以下排错过程可以排除问题所在。
1、首先通过命令ipconfig /all 来检查客户端的地址及网关是否正常。结果如下:PC1>ipconfig

IP Address………………….: 192.168.1.10
Subnet Mask…………………: 255.255.255.0
Default Gateway……………..: 192.168.1.1
PC2>ipconfig
IP Address………………….: 192.168.2.10
Subnet Mask…………………: 255.255.255.0
Default Gateway……………..: 192.168.2.1
确认后,先PING各自的网关:
PC1>ping 192.168.1.1
正在 Ping 192.168.1.1 具有 32 字节的数据:
来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=255
来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=255
来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=255
来自 192.168.1.1 的回复: 字节=32 时间=3ms TTL=255
192.168.1.1 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 2ms,最长 = 3ms,平均 = 2ms
2、第一步操作若不通,需要检查交换机的VLAN 配置和到路由器之间的Trunk链路状态。如下:
Switch#show vlan brief //查看交换机VLAN信息
VLAN Name Status Ports
—- ——————————– ——— ——————————-
1 default active Fa0/3, Fa0/4, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
Fa0/11, Fa0/12, Fa0/13, Fa0/14
Fa0/15, Fa0/16, Fa0/17, Fa0/18
Fa0/19, Fa0/20, Fa0/21, Fa0/22
Fa0/23, Gig1/1, Gig1/2
10RED active Fa0/1 //确认该接口是与PC1连接,且在VLAN 10中
20 BLACK active Fa0/2 //确认该接口是与PC2连接,且在VLAN 20中
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
Switch#show int trunk
Port Mode Encapsulation Status Native vlan
Fa0/24 on 802.1q trunking 1 //交换机与路由器连接的Fa0/24是封装模式为802.1q的Trunk状态
Port Vlans allowed on trunk
Fa0/24 1-1005
Port Vlans allowed and active in management domain
Fa0/24 1,10,20 //确认F0/24口允许VLAN10和VLAN20的数据通过
Port Vlans in spanning tree forwarding state and not pruned
Fa0/24 1,10,20
3、最后检查路由器上的配置。如下:
Router#show ip int br
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset upup//确认物理接口状态为up,否则进入该接口执行no shutdown
FastEthernet0/0.1 192.168.1.1 YES manual up up //检查网关地址是否配置真确
FastEthernet0/0.2 192.168.2.1 YES manual up up
Router#show int | in is up|Vlan ID //通过include命令来塞选show int的结果,便于快速核对配置信息
FastEthernet0/0 is up, line protocol is up
FastEthernet0/0.1is up, line protocol is up //确认对应的子接口封装到对应VLAN ID中
Encapsulation 802.1Q Virtual LAN, Vlan ID 10
FastEthernet0/0.2 is up, line protocol is up
Encapsulation 802.1Q Virtual LAN, Vlan ID 20
至此,VLAN间单臂路由故障可以完成排查。