linux可以设置多条路由器吗
linux可以设置多条路由器吗详细介绍
在 Linux 中可以通过 策略路由(Policy Routing) 配置多条路由规则,实现流量按条件(如源地址、目标地址、网络接口)分流到不同路由器(网关)。以下是常见场景和配置示例:
一、基础概念
- 默认路由:所有未匹配特定路由的流量走默认网关(
default via XXX),系统只能有一个默认路由,直接添加多个会冲突。 - 策略路由:通过规则(
ip rule)匹配流量,指定其使用不同的路由表(非默认表),每个路由表可单独配置网关。
二、配置示例:双网关分流(按源 IP)
假设:
- 主网卡
eth0:网关192.168.1.1(访问公网) - 副网卡
eth1:网关10.0.0.1(访问内网) - 需求:源 IP 为
192.168.1.100的流量走公网,10.0.0.100走内网
1. 新增自定义路由表(修改
/etc/iproute2/rt_tables)
bash
public
private
2. 配置路由规则
bash
rule from .1.100 table public
rule from .0.100 table private
route default via .1.1 dev eth0 table public
route default via .0.1 dev eth1 table private
route del default
route default via .1.1 dev eth0
3. 验证配置
bash
rule showroute show table public
route show table private
三、配置示例:按网络接口分流
场景:
wlan0连接家庭路由器(网关192.168.2.1)eth0连接公司路由器(网关10.10.0.1)- 需求:
wlan0流量走家庭网关,eth0流量走公司网关
bash
rule dev wlan0 table
rule dev eth0 table
route default via .2.1 dev wlan0 table
route default via .0.1 dev eth0 table
route default via .2.1 dev wlan0
四、持久化配置(重启生效)
- CentOS/RHEL:将命令写入
/etc/rc.local(需确保文件可执行)。 - Ubuntu/Debian:创建
/etc/network/if-up.d/routing脚本,添加配置命令并赋予执行权限。 - systemd 系统:创建自定义服务(如
/etc/systemd/system/routing.service),写入启动命令。
五、注意事项
- 路由优先级:
ip rule的优先级由priority决定(默认从 0 开始,数值越小优先级越高)。 - NAT 限制:若需双向通信,可能需要配置 SNAT(
iptables -t nat -A POSTROUTING)。 - 避免环路:确保不同路由表的网关不会形成流量环路。
适用场景
- 服务器多出口负载均衡
- 笔记本切换网络时保留旧连接(如插网线时 VPN 走有线,普通流量走无线)
- 容器 / 虚拟机指定网卡访问特定网络
通过策略路由,Linux 可灵活实现多路由器配置,具体规则需根据实际网络环境调整。