使用vlan trunk可以在同一交换机上划分vlan,从而相同vlan的主机可以通信,不同vlan不能通信,如果连接不同vlan的主机想要通信,怎么办?
不同vlan是属于不同广播域的,配置的是不同的IP网段,针对不同网段的IP进行通信,这时候需要借助路由,通过单臂路由技术和三层交换技术可以实现不同vlan间的通信。
假设主机A与主机B在不同网段中,主机A属于vlan10,主机B属于VLAN20,如果主机A要想主机B发送信息,那么主机A的网关应该是自己直连的路由器接口的IP地址。那么问题来了?
问题一:目前有两个vlan都连接了路由器的同一物理接口,那这个物理接口应该属于哪个vlan的网关呢?
问题二:交换机要想转发vlan的数据,就必须配置为trunk,但是因为trunk是交换机的属性,路由器接口又不能配置为trunk
解决办法:
依据路由器的物理接口去划分子接口,路由器接口f0/0中第一个“0”是模块号,第二个“0”代表接口号。
#划分子接口并分配给不同的vlan
0/0.1 vlan 10
0/0.2 vlan 20
#子为接口配置IP,物理接口不需要配置IP
单臂路由的工作原理
- 工作原理图
以上图为例,PC0需要发送数据给PC1,发现PC1和自己不是同一网段,这时将数据交给自己的网关,网关为路由器0的F0/0.1子接口,通过ARP协议获取自己网关的MAC地址,数据会通过交换机进行转发,会为收到的数据打上vlan10的标签,将数据传到路由器0,路由器0收到数据,集合路由器的工作原理,查看目的IP地址,找到对应接口,再进行标签转换,再发送到交换机,这时交换机收到的就是打上vlan20标签数据,根据交换的mac地址表的对应关系直接转发。
-
实验拓扑图
- 交换机配置命令
交换机配置
en
conf t
vlan 10 #添加vlan10
vlan 20 #添加vlan20
exit
int f0/1 #进入交换机接口f0/1
sw acc vlan 10 #将接口f0/1添加到vlan10
int f0/2 #进入交换机接口f0/2
sw acc vlan 20 #将接口f0/1添加到vlan20
int f0/3
sw mo trun #将接口f0/3设置为trunk
- 路由器配置命令
conf t
int g0/0.1 #进入子接口g0/0.1
encapsulation dot1Q 10
ip add 192.168.10.254 255.255.255.0 #设置接口ip
exit
int g0/0.2
encapsulation dot1Q 20
ip add 192.168.20.254 255.255.255.0
exit
int g0/0
no shut
exit
#使用dhcp为PC设置动态获取IP
ip dhcp pool vlan20 #定义DHCP地址池
network 192.168.20.254 255.255.255.0 #指定分配的网络范围:网络地址和子网掩码
default-router 192.168.20.254 #指定默认网关
exit
ip dhcp pool vlan10
network 192.168.10.254 255.255.255.0
default-router 192.168.10.254
exit
- 设置PC的dhcp动态获取IP
- 两台PC都设置DHCP获取IP后,在PC0的命令行pingPC1动态获取的IP
通过交换机上划分vlan,想要实现不同vlan间的通信,这时候就可以使用三层交换机来解决
三层交换相比单臂路由优势何在?
问题:使用单臂路由可以解决不同vlan间的路由,为什么还要使用三层交换路由
-
单臂路由会造成网络的瓶颈,子接口依托于物理接口,物理接口压力比较大
-
单臂路由主要是利用路由器的转发,每一次数据来之后都需要进行路由,路由器的工作量比较大