VLAN间路由

2244 字
11 分钟
VLAN间路由

VLAN间路由#

[TOC]


  • 每个 VLAN 是一个独立的广播域,同一 VLAN 内的主机可以互相通信,但不同 VLAN 之间的主机不能直接通信

  • 要实现不同 VLAN 之间的通信,必须通过 三层设备(如路由器或三层交换机)进行 跨 VLAN 路由

  • 所以,不同 VLAN 之间的通信必须经过路由器

image-20260129090027019
image-20260129090027019

  • VLAN 2 和 VLAN 3 分别通过独立的物理链路连接到路由器 RTA 的不同接口

  • 虽然这种方式可以实现 VLAN 间通信,但它存在明显的缺点:

    每个 VLAN 都需要占用一个路由器的物理接口 ,这会导致:

    1. 接口资源浪费
    2. 布线复杂、成本高
    3. 可扩展性差

多臂路由#

image-20260129110116669
image-20260129110116669

Terminal window
# 先去配置PC机的IP地址,子网掩码,网关
# 再去配置路由器上的接口IP地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]undo info en
Info: Information center is disabled.
[R1]inter g0/0/0
[R1-GigabitEthernet0/0/0]ip addr 192.168.2.254 24
[R1-GigabitEthernet0/0/0]inter g0/0/1
[R1-GigabitEthernet0/0/1]ip addr 192.168.3.254 24
[R1-GigabitEthernet0/0/1]q
[R1]dis ip inter bri
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 192.168.2.254/24 up up
GigabitEthernet0/0/1 192.168.3.254/24 up up
'上面的为路由器接口IP地址的配置'
# 重头戏在交换机的配置上
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys SW1
[SW1]undo info en
Info: Information center is disabled.
[SW1]vlan batch 2 3
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1]inter g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
# g0/0/2连接着PC1,终端设备所以是access口
[SW1-GigabitEthernet0/0/2]port default vlan 2
# 将这个接口划分为vlan 2
[SW1-GigabitEthernet0/0/2]inter g0/0/3
# g0/0/3连接着PC2,终端设备所以是access口
[SW1-GigabitEthernet0/0/3]port link-type access
[SW1-GigabitEthernet0/0/3]port default vlan 3
# 将这个接口划分为vlan 3
'access口的pvid行为,给他划分完vlan 它的PVID就是对应的vlan-id'
[SW1-GigabitEthernet0/0/3]inter g0/0/1
# g0/0/1用于连接上层路由器
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 2
# 这个接口的PVID也是vlan 2,同于脱下vlan 2的标签,脱下标签之后,路由器就可以识别出来了
'每个 VLAN 都需要占用一个路由器的物理接口,同时也占用交换机的一个物理接口'
[SW1-GigabitEthernet0/0/1]inter g0/0/4
# g0/0/4也用于连接上层路由器
[SW1-GigabitEthernet0/0/4]port link-type access
[SW1-GigabitEthernet0/0/4]port default vlan 3
# 这个接口的PVID也是vlan 3,同于脱下vlan 3的标签
---------------------
# 当我们不同网段的vlan需要通信时,需要用到交换机
# 那我们如何判断交换机与路由器之间的接口类型
这个实验是一条物理链路只允许一个vlan通过,故交换机配置access口即可,路由器不用管他
'后面我们配置单臂路由的时候,一条物理链路需要通过多个vlan时,交换机需要配置trunk口'
# 详细的配置看后面的实验
---------------------
# 我们来查看一下各个接口的vlan和PVID号
[SW1]dis port vlan
Port Link Type PVID Trunk VLAN List
GigabitEthernet0/0/1 access 2 -
GigabitEthernet0/0/2 access 2 -
GigabitEthernet0/0/3 access 3 -
GigabitEthernet0/0/4 access 3 -
# 我们测试验证一下
PC>ipconfig
# PC1
IPv4 address......................: 192.168.2.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 192.168.2.254
PC>ping 192.168.3.1
# 和PC2测试连通性
From 192.168.3.1: bytes=32 seq=4 ttl=127 time=78 ms
From 192.168.3.1: bytes=32 seq=5 ttl=127 time=47 ms
.........

单臂路由#

为了解决上述问题,现代网络通常采用 单臂路由 技术:

✅ 单臂路由核心要点:

  • 通过一条物理链路实现多个 VLAN 之间的通信,节省路由器接口资源

    解决 VLAN 间路由的高效方案

🔧 实现方式:

  1. 交换机与路由器之间使用一条物理链路,并配置为 Trunk 模式

    🍔这里只用交换机配合着trunk口,就可以了

    • 允许多个 VLAN 的数据帧通过同一条链路
  2. 在路由器上创建子接口

    • 每个子接口对应一个 VLAN
    • 子接口需配置:
      • 与对应 VLAN 同网段的 IP 地址(作为该 VLAN 的网关)
      • 802.1Q 封装(dot1q802.1Q
        • dot1q termination vid id号
        • 这样路由器机识别带有标签的帧了,收到去掉,发出加上
      • 启用 ARP 广播(arp broadcast enable),确保主机能正确获取网关 MAC
        • arp broadcast enable
  3. 终端主机配置

    • 每个 VLAN 内的主机将其默认网关指向对应子接口的 IP VLAN 2 主机 → 网关 192.168.2.254 VLAN 3 主机 → 网关 192.168.3.254

image-20260129091823083
image-20260129091823083

⚠️ 注意事项:

  • 必须启用子接口上的 ARP 广播功能,否则主机无法学习到网关 MAC
  • 路由器必须支持子接口和 802.1Q 封装
  • 性能受限于单条物理链路带宽

综合实验#

image-20260129110408836
image-20260129110408836

Terminal window
# 先去配置对应PC机的ip地址,子网掩码,网关
1.先去配置交换机
[SW1]inter g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 2
[SW1-GigabitEthernet0/0/2]inter g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type access
[SW1-GigabitEthernet0/0/3]port default vlan 3
# 这些和我们上面的配置一模一样,没有发生任何改变
# g0/0/2和g0/0/3接口连接PC机,故配置access口
[SW1-GigabitEthernet0/0/3]inter g0/0/1
# 连接我们上层的路由器
[SW1-GigabitEthernet0/0/1]port link-type trunk
[SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 2 3
# 因为只有一条物理链路,又要允许多个vlan通过,所以它肯定是trunk口
'一条物理链路需要通过多个vlan时,交换机需要配置trunk口'
'因为这trunk口,没有强制它的PVID它的PVID为1,自然也没有办法进行脱标签'
[SW1-GigabitEthernet0/0/1]q
[SW1]dis port vlan
Port Link Type PVID Trunk VLAN List
GigabitEthernet0/0/1 trunk 1 1-3
GigabitEthernet0/0/2 access 2 -
GigabitEthernet0/0/3 access 3 -
# 至此交换机的配置结束了
2.路由器的配置
# 接着就是路由器接口的IP地址
[R1]inter g0/0/0.1
# 逻辑接口0.1
[R1-GigabitEthernet0/0/0.1]ip addr 192.168.2.254 24
[R1-GigabitEthernet0/0/0.1]q
[R1]inter g0/0/0.2
# 逻辑接口0.2
[R1-GigabitEthernet0/0/0.2]ip addr 192.168.3.254 24
[R1-GigabitEthernet0/0/0.2]q
[R1]dis ip inter bri
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 unassigned up down
GigabitEthernet0/0/0.1 192.168.2.254/24 up down
GigabitEthernet0/0/0.2 192.168.3.254/24 up down
# 各个接口的IP地址
# 这样配置完之后能进行通信嘛???
'当然不能通信,交换机收到的是带有标签的包,他不识别,那么如何让它识别呢'
# dot1q termination vid id号
# dot1Q处理 Vlan 对应的标签,收到去掉,发出加上
[R1]inter g0/0/0.1
[R1-GigabitEthernet0/0/0.1]dot1q termination vid 2
[R1-GigabitEthernet0/0/0.1]arp broadcast enable
# 同时让PC机能正确获取虚拟网关(0.1和0.2)的MAC
[R1-GigabitEthernet0/0/0.1]inter g0/0/0.2
[R1-GigabitEthernet0/0/0.2]dot1q termination vid 3
[R1-GigabitEthernet0/0/0.2]arp broadcast enable
# 我们测试验证一下
PC>ipconfig
# PC1
IPv4 address......................: 192.168.2.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 192.168.2.254
PC>ping 192.168.3.1
# 和PC2测试连通性
From 192.168.3.1: bytes=32 seq=4 ttl=127 time=78 ms
From 192.168.3.1: bytes=32 seq=5 ttl=127 time=47 ms
.........

扩展#

image-20260129120456630
image-20260129120456630

Terminal window
# 如果接口类型都用hybrid该如果实现?
'路由器的配置不需要进行改变,我们改动一下交换机配置'
# 这里我的交换机并没有保存配置信息,我们把它关闭了之后,重新启动一下里面就没有配置了
# 重启完之后默认就是hybrid口,我们不需要动他!
[SW1]vlan batch 2 3
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1]inter g0/0/2
[SW1-GigabitEthernet0/0/2]port hybrid pvid vlan 2
# 手动指定pvid为2,相当于把vlan 2 划分给它了
[SW1-GigabitEthernet0/0/2]port hybrid untagged vlan 2
# g0/0/2连接着PC机,收到数据帧后,先进行脱标签,在给pc机
[SW1-GigabitEthernet0/0/2]inter g0/0/3
[SW1-GigabitEthernet0/0/3]port hybrid pvid vlan 3
[SW1-GigabitEthernet0/0/3]port hybrid untagged vlan 3
# g0/0/3同理
[SW1-GigabitEthernet0/0/3]inter g0/0/1
[SW1-GigabitEthernet0/0/1]port hybrid tagged vlan 2 3
# g0/0/1上层连接路由器,转发的时候打上标签
[SW1-GigabitEthernet0/0/1]q
[SW1]dis port vlan
Port Link Type PVID Trunk VLAN List
GigabitEthernet0/0/1 hybrid 1 2-3
GigabitEthernet0/0/2 hybrid 2 -
GigabitEthernet0/0/3 hybrid 3 -
# 各个接口vlan设置
# 我们测试验证一下
PC>ipconfig
# PC1
IPv4 address......................: 192.168.2.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 192.168.2.254
PC>ping 192.168.3.1
# 和PC2测试连通性,最后也成功ping通了
From 192.168.3.1: bytes=32 seq=4 ttl=127 time=78 ms
From 192.168.3.1: bytes=32 seq=5 ttl=127 time=47 ms
.........

三层虚拟接口#

image-20260129123715498
image-20260129123715498

VLANIF接口#

  • 是一种虚拟的三层接口

  • ♥️在交换机上,为每个VLAN创建一个 vlanif接口 作为网关​

    提供三层网关功能,进而实现vlan间路由

    让交换机同时拥有二层功能,也拥有三层功能

  • 它是虚拟接口,不对应物理端口

Terminal window
interface Vlanif 2
# 前提:VLAN 2 必须已经存在
'最佳实践:先手动创建 VLAN,再配置 Vlanif'
'所以我们先配置二层的vlan后,在配置三层的vlanif'

Vlanif 2 中的 2 就代表 VLAN 2,它必须与交换机上配置的 VLAN 2 对应, 不能随意写

  • 先有vlan 2,在进入到vlanif 2

    二层 ---> 三层

image-20260129130610153
image-20260129130610153

Terminal window
# 先去配置PC机的IP地址,网关,子网掩码
[SW1]vlan batch 2 3
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1]inter g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 2
# 这两个接口连接着终端,故配置access口
[SW1-GigabitEthernet0/0/1]inter g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 3
[SW1]dis port vlan
Port Link Type PVID Trunk VLAN List
GigabitEthernet0/0/1 access 2 -
GigabitEthernet0/0/2 access 3 -
'接下来就是vlanif的配置,虚拟接口,配置相应的网关IP地址'
[SW1]inter vlanif 2
# 这个vlanif 2对应的就是vlan 2(保证这个vlan是存在的)
[SW1-Vlanif2]ip address 192.168.2.254 24
[SW1-Vlanif2]inter vlanif 3
[SW1-Vlanif3]ip address 192.168.3.254 24
[SW1-Vlanif3]q
[SW1]dis ip inter bri
Interface IP Address/Mask Physical Protocol
Vlanif1 unassigned down down
Vlanif2 192.168.2.254/24 up up
Vlanif3 192.168.3.254/24 up up
# 测试验证
PC>ipconfig
# 用PC2(2.1) ping PC3(3.1)
IPv4 address......................: 192.168.2.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 192.168.2.254
PC>ping 192.168.3.1
Ping 192.168.3.1: 32 data bytes, Press Ctrl_C to break
From 192.168.3.1: bytes=32 seq=2 ttl=127 time=63 ms
From 192.168.3.1: bytes=32 seq=3 ttl=127 time=47 ms
# 成功ping通

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

VLAN间路由
https://www.kpyun.fun/posts/network/network07/
作者
久棹
发布于
2026-02-08
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录