Linux VRF功能

Linux VRF 功能详解

VRF (Virtual Routing and Forwarding) 是 Linux 内核提供的一种网络虚拟化功能,它允许在同一台主机上创建多个独立的路由表和网络栈实例。

VRF 基本概念

VRF 实现了:

  • 多个独立的路由域共存于同一台主机
  • 每个 VRF 有自己的路由表和网络接口
  • 不同 VRF 之间的流量完全隔离

VRF 主要用途

  1. 网络虚拟化:为不同租户或服务提供隔离的网络环境
  2. 多租户支持:云环境中为不同客户提供独立网络栈
  3. 网络测试:在不影响生产网络的情况下测试新配置
  4. 重叠IP地址:在不同VRF中使用相同的IP地址而不冲突

VRF 配置方法

1. 创建 VRF 设备

1
2
ip link add vrf-blue type vrf table 10
ip link add vrf-red type vrf table 20

2. 启用 VRF 设备

1
2
ip link set dev vrf-blue up
ip link set dev vrf-red up

3. 将接口分配给 VRF

1
2
ip link set dev eth1 master vrf-blue
ip link set dev eth2 master vrf-red

4. 验证 VRF 配置

1
2
3
ip vrf show
ip route show vrf vrf-blue
ip route show vrf vrf-red

高级配置

路由配置

1
2
ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 vrf vrf-blue
ip route add 192.168.2.0/24 via 10.0.1.1 dev eth2 vrf vrf-red

进程绑定到 VRF

1
ip vrf exec vrf-blue ssh user@remote-host

持久化配置

/etc/network/interfaces 中添加:

1
2
3
4
5
6
7
auto vrf-blue
iface vrf-blue
vrf-table 10

auto eth1
iface eth1
vrf vrf-blue

注意事项

  1. 内核需要支持 VRF (CONFIG_NET_VRF)
  2. 某些应用程序可能需要修改以支持 VRF
  3. 不同 VRF 之间的通信需要通过特定路由或防火墙规则
  4. VRF 与网络命名空间不同 - VRF 共享相同的进程空间

VRF 提供了一种轻量级的网络隔离方案,比完整的网络命名空间更节省资源,适合需要网络隔离但不需要完全进程隔离的场景。