答案:通过ip route和ip rule可实现基于源地址的策略路由。首先用ip route配置静态路由,再通过ip rule指定特定流量查询自定义路由表,如将源IP为10.0.0.100的流量导向custom_table表,实现多网卡间的灵活路由控制,需配合rt_tables定义表、规则持久化配置以确保重启生效。
在Linux系统中,网络路由的配置不仅限于默认网关的设置,还涉及更复杂的策略路由场景。通过
ip route
命令和
ip rule
机制,可以实现基于源地址、接口、优先级等条件的流量控制。下面介绍如何使用
ip route
配置静态路由与策略路由。
基本路由配置:ip route
Linux中管理路由表主要使用
ip route
命令,取代了传统的
route
命令。它支持添加、删除和查看路由条目。
常用操作示例:
-
ip route add 192.168.10.0/24 via 10.0.0.1 dev eth0
:添加一条到192.168.10.0网段的路由,通过网关10.0.0.1,出口为eth0。
-
ip route del 192.168.10.0/24
:删除指定网段的路由。
-
ip route show
或
ip route list
:查看当前路由表。
-
ip route add default via 192.168.1.1 dev eth0
:设置默认路由。
这些路由默认写入主路由表(table main),系统启动后可通过配置文件持久化(如CentOS中修改
/etc/sysconfig/network-scripts/route-eth0
,Ubuntu中使用
/etc/netplan/
或
/etc/network/interfaces
)。
多路由表与策略路由基础
Linux支持多个路由表,编号范围0–255,其中0、254、255保留,254是main表,253是default表。策略路由通过
ip rule
定义匹配规则,决定使用哪个路由表。
查看当前规则:
ip rule show
典型输出:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
这些是系统默认规则,优先级从0到32767递增(数字越小优先级越高)。
配置策略路由示例
假设服务器有两个网络接口:
- eth0:192.168.1.100/24,网关192.168.1.1,用于普通流量
- eth1:10.0.0.100/24,网关10.0.0.1,用于特定源IP(如10.0.0.100)的流量
目标:从10.0.0.100发出的数据包走eth1的网关。
步骤如下:
- 创建自定义路由表(如table 100):
编辑/etc/iproute2/rt_tables
,添加:
100 custom_table - 为该表添加路由:
ip route add 10.0.0.0/24 dev eth1 src 10.0.0.100 table custom_table
ip route add default via 10.0.0.1 dev eth1 table custom_table
- 添加策略规则:
ip rule add from 10.0.0.100 lookup custom_table
- 启用IP转发(如需转发):
echo 1 > /proc/sys/net/ipv4/ip_forward
此时,从10.0.0.100发起的连接将使用custom_table中的路由,走eth1出口。
持久化配置
上述命令重启后失效,需写入配置文件。
CentOS/RHEL:
在
/etc/sysconfig/network-scripts/route-eth1
中添加:
default via 10.0.0.1 dev eth1 table custom_table
在
/etc/sysconfig/network-scripts/rule-eth1
中添加:
from 10.0.0.100 lookup custom_table
Ubuntu/Debian(Netplan):
在YAML配置中使用
routing-policy
定义规则,或通过
networkd-dispatcher
脚本执行
ip rule
命令。
基本上就这些。掌握
ip route
和
ip rule
,能灵活应对多线路、多租户、负载均衡等复杂网络场景。关键是理解“规则决定查哪张表,表决定走哪条路”。
linux 路由 centos ubuntu ai 配置文件 linux系统 echo 接口 default table linux ubuntu centos debian 负载均衡