3. VRF核心机制与配置入门
VRF(Virtual Routing and Forwarding,虚拟路由转发)是多租户网络中最基础也最关键的一项技术。它的本质并不复杂:在一台物理设备内部,创建多个相互独立的逻辑路由实例,每个实例拥有自己的路由表、转发表和接口集合。不同 VRF 之间的路由信息默认完全隔离,就像把多台独立的路由器塞进了同一台机箱。理解这一点,后续所有多租户隔离、重叠地址复用、租户边界控制,都建立在这个“一机多表”的模型之上。
VRF 到底隔离了什么
很多初学者会误以为 VRF 只是“给接口打个标签”。实际上,VRF 隔离的是三层转发的决策依据。一台 Arista 交换机在收到一个数据包后,需要回答两个问题:查哪张路由表?从哪个接口转发出去?VRF 正是把“查表”这一步按租户切分开来。默认情况下,所有接口和路由都属于 default VRF;一旦把接口划入某个自定义 VRF,该接口收到的流量就只会查询该 VRF 的路由表,绝不会看到其他 VRF 或 default 表里的条目。
这带来一个直接好处:不同租户可以使用完全相同的 IP 地址段。例如租户 A 和租户 B 都可以使用 10.10.10.0/24,只要它们分别位于 VRF-A 和 VRF-B 中,设备就能正确区分,不会产生冲突。这是 VRF 相比传统 ACL 或 VLAN 隔离最本质的优势——它解决的是路由表层面的地址空间复用问题。
接口绑定:把流量“引入”正确的路由表
创建 VRF 只是搭好了空壳,真正让隔离生效的是接口绑定。在 Arista EOS 上,接口绑定 VRF 通过 vrf forwarding 命令完成。需要特别注意的是:接口一旦绑定到某个 VRF,该接口上原有的 IP 地址会被自动清除,必须重新配置。这是初学者最容易踩的坑之一——配置完发现接口没地址了,其实是正常行为,因为地址必须属于某个 VRF 的地址空间。
! 创建两个租户 VRF
vrf instance VRF-A
vrf instance VRF-B
! 将接口划入 VRF 并配置地址
interface Ethernet1
vrf forwarding VRF-A
ip address 10.10.10.1/24
!
interface Ethernet2
vrf forwarding VRF-B
ip address 10.10.10.1/24
!
上面这段配置中,Ethernet1 和 Ethernet2 使用了完全相同的 IP 地址 10.10.10.1/24,但因为分属不同 VRF,设备不会报冲突。这正是 VRF 地址复用的直观体现。
静态路由:在 VRF 内建立可达性
接口绑定完成后,VRF 内只有直连网段可达。要让租户访问远端网络,需要在对应 VRF 的上下文中配置静态路由。EOS 的写法是在 ip route 命令后追加 vrf 参数,明确指定这条路由属于哪个 VRF:
! 为 VRF-A 添加静态路由
ip route vrf VRF-A 192.168.100.0/24 10.10.10.254
! 为 VRF-B 添加静态路由
ip route vrf VRF-B 192.168.200.0/24 10.10.10.254
!
这里的关键点是:静态路由必须绑定 VRF。如果漏写 vrf VRF-A,路由会被装进 default 表,租户流量根本查不到,表现为“配置了路由但不通”。这是排错时第一个要检查的地方。
验证命令:用三条命令确认隔离是否生效
配置完成后,不要急着 ping,先用 show 命令确认状态。推荐按以下顺序检查:
show vrf:确认 VRF 已创建,并查看每个 VRF 绑定了哪些接口。show ip route vrf VRF-A:查看指定 VRF 的路由表,确认直连和静态路由都已正确装入。show ip interface Ethernet1:确认接口的 VRF 归属和 IP 地址是否正确。
switch# show vrf
Vrf Interfaces
---------- --------------------
VRF-A Ethernet1
VRF-B Ethernet2
default Management1
switch# show ip route vrf VRF-A
C 10.10.10.0/24 is directly connected, Ethernet1
S 192.168.100.0/24 [1/0] via 10.10.10.254, Ethernet1
!
如果 show ip route vrf VRF-A 中看不到预期的静态路由,优先检查命令是否漏了 vrf 关键字;如果接口列表为空,检查 vrf forwarding 是否配置在正确的接口下。
基础排错:三个高频故障点
故障一:接口绑定 VRF 后地址丢失。这是预期行为,不是故障。重新在接口下配置 IP 地址即可,地址会自动归入该 VRF。
故障二:静态路由配了但不生效。最常见原因是漏写 VRF 参数,路由进了 default 表。用 show ip route vrf VRF-A 和 show ip route 对比,就能快速定位。
故障三:跨 VRF 无法互通。这是设计使然。VRF 之间默认完全隔离,若确实需要互访,必须通过路由泄漏(route leaking)或外部设备中转,不能指望直连。排错时先确认“是否本就不该通”,避免把正常隔离当成故障。
show vrf 与 show ip route vrf 的输出,再逐步扩展到多租户场景。最小模型跑通后,后续的复杂隔离策略会容易理解得多。掌握以上四点——VRF 定义、路由表隔离、接口绑定、静态路由——就具备了在 Arista 设备上搭建多租户隔离的基本能力。验证命令和排错思路则是保证配置真正生效的关键,缺一不可。