第 29 章 在隔离的 VRF 网络内启动服务
使用虚拟路由和转发(VRF),您可以使用与操作系统主路由表不同的路由表创建隔离网络。然后,您可以启动服务和应用程序,以便它们只能访问该路由表中定义的网络。
29.1. 配置 VRF 设备
要使用虚拟路由和转发(VRF),您可以创建一个 VRF 设备,并将物理或虚拟网络接口和路由信息附加给它。
要防止您将自己远程锁定,请在本地控制台中或通过您不想分配给 VRF 设备的网络接口远程执行此流程。
先决条件
- 您已在本地登录或使用与您要分配给 VRF 设备不同的网络接口。
流程
使用同命的虚拟设备创建
vrf0
连接,并将其附加到路由表1000
:# nmcli connection add type vrf ifname vrf0 con-name vrf0 table 1000 ipv4.method disabled ipv6.method disabled
向
vrf0
连接添加enp1s0
设备,并配置 IP 设置:# nmcli connection add type ethernet con-name enp1s0 ifname enp1s0 controller vrf0 ipv4.method manual ipv4.address 192.0.2.1/24 ipv4.gateway 192.0.2.254
此命令会创建
enp1s0
连接,来作为vrf0
连接的端口。由于此配置,路由信息会自动分配给与vrf0
设备关联的路由表1000
。如果您在隔离网络中需要静态路由:
添加静态路由:
# nmcli connection modify enp1s0 +ipv4.routes "198.51.100.0/24 192.0.2.2"
这向
198.51.100.0/24
网络添加了一个路由,该网络使用192.0.2.2
作为路由器。激活连接:
# nmcli connection up enp1s0
验证
显示与
vrf0
关联的设备的 IP 设置:# ip -br addr show vrf vrf0 enp1s0 UP 192.0.2.1/24
显示 VRF 设备及其关联的路由表:
# ip vrf show Name Table ----------------------- vrf0 1000
显示主路由表:
# ip route show default via 203.0.113.0/24 dev enp7s0 proto static metric 100
主路由表没有提到任何与设备
enp1s0
或192.0.2.1/24
子网关联的路由。显示路由表
1000
:# ip route show table 1000 default via 192.0.2.254 dev enp1s0 proto static metric 101 broadcast 192.0.2.0 dev enp1s0 proto kernel scope link src 192.0.2.1 192.0.2.0/24 dev enp1s0 proto kernel scope link src 192.0.2.1 metric 101 local 192.0.2.1 dev enp1s0 proto kernel scope host src 192.0.2.1 broadcast 192.0.2.255 dev enp1s0 proto kernel scope link src 192.0.2.1 198.51.100.0/24 via 192.0.2.2 dev enp1s0 proto static metric 101
default
条目表示使用此路由表的服务,将192.0.2.254
用作其默认网关,而不是主路由表中的默认网关。在与
vrf0
关联的网络中执行traceroute
工具,以验证工具是否使用表1000
的路由:# ip vrf exec vrf0 traceroute 203.0.113.1 traceroute to 203.0.113.1 (203.0.113.1), 30 hops max, 60 byte packets 1 192.0.2.254 (192.0.2.254) 0.516 ms 0.459 ms 0.430 ms ...
第一跳是分配给路由表
1000
的默认网关,而不是系统的主路由表中的默认网关。
其他资源
-
您系统上的
ip-vrf (8)
手册页