ubuntu 如何使用vrf
在Ubuntu或其他Linux系统中,您使用ip
命令和sysctl
命令配置的网络和内核参数通常是临时的,这意味着在系统重启后这些配置会丢失。为了将这些配置持久化,您需要采取一些额外的步骤。
对于ip
命令配置的网络接口和路由,您可以将这些配置添加到网络管理工具的配置文件中,或者创建一个启动脚本来在系统启动时重新应用这些配置。然而,对于VRF(Virtual Routing and Forwarding)这样的高级配置,通常需要特定的网络管理工具或自定义脚本来处理。
以下是一些可能的步骤来持久化您的配置:
-
使用Netplan(如果适用):
Netplan是Ubuntu 18.04及更高版本中的网络配置工具。但是,Netplan原生不支持VRF配置。因此,您可能需要编写一个自定义的启动脚本来设置VRF。 -
编写自定义启动脚本:
您可以创建一个脚本,该脚本使用ip
命令来设置VRF和其他网络配置,并将该脚本添加到系统的启动项中。例如,您可以将脚本放在/etc/network/if-up.d/
目录中(如果此目录存在且被系统使用),或者创建一个systemd服务来在启动时运行该脚本。脚本示例(假设保存为
/etc/network/if-up.d/vrf-setup-script.sh
):#!/bin/bash ip link add mgmt type vrf table 2 ip link set dev mgmt up ip link set ens37 vrf mgmt route add default gw 192.168.8.1 dev mgmt
确保脚本具有执行权限:
sudo chmod +x /etc/network/if-up.d/vrf-setup-script.sh
但是,请注意,这种方法可能不适用于所有情况,因为
/etc/network/if-up.d/
目录和其中的脚本可能在某些Ubuntu版本或网络配置中不被使用。 -
使用systemd服务:
创建一个systemd服务来在启动时运行配置脚本可能是一个更可靠的方法。您可以创建一个systemd单元文件,该文件指定了一个在启动时运行的脚本。单元文件示例(假设保存为
/etc/systemd/system/vrf-setup.service
):[Unit] Description=Setup VRF After=network.target [Service] Type=oneshot ExecStart=/etc/network/if-up.d/vrf-setup-script.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
然后,启用并启动该服务:
sudo systemctl enable vrf-setup.service sudo systemctl start vrf-setup.service
- 持久化
sysctl
设置:
对于sysctl
设置,您可以将它们添加到/etc/sysctl.conf
文件或/etc/sysctl.d/
目录中的某个文件中。例如:echo "net.ipv4.tcp_l3mdev_accept=1" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.udp_l3mdev_accept=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
创建VRF
ip link add yewu type vrf table 1
ip link add mgmt type vrf table 2
启用VRF
ip link set dev yewu up
ip link set dev mgmt up
##简要查看采用-br参数
# ip -br link show type vrf
##查看所有vrf,-d参数可以显示ID号
# ip link show type vrf
将物理接口绑定VRF
ip link set ens33 vrf yewu
ip link set ens37 vrf mgmt
将物理接口移除VRF
ip link set dev ens33 nomaster
##显示被分配给vrf的设备
$ ip link show vrf yewu
查看
ip neigh show vrf yewu
ip route show table 1
route add default gw 192.168.162.2 dev yewu
route add default gw 192.168.8.1 dev mgmt
ip route get vrf yewu 223.5.5.5
ping -I yewu -4 www.baidu.com
sysctl -w net.ipv4.tcp_l3mdev_accept=1
sysctl -w net.ipv4.udp_l3mdev_accept=1
sysctl net.ipv4.raw_l3mdev_accept
sysctl net.ipv4.tcp_l3mdev_accept
sysctl net.ipv4.udp_l3mdev_accept