Iproute2:具有多个网络和多个网关的路由

Iproute2:具有多个网络和多个网关的路由

我有一台运行 Ubuntu 10.04 的 Linux 机器,它有三个接口:eth0eth1eth2我计划将其用作由两个不同的 ISP 分配的 4 个公共子网的 WAN 路由器。以下是子网(我已将 ISP 分配的子网转换为 C 类私有子网):

ISP 1   
WAN 192.168.0.176/30 gateway 192.168.0.177   
LAN 192.168.3.192/29

ISP 2   
WAN 192.168.6.208/30 gateway 192.168.6.209  
LAN 192.168.9.216/29

/30子网面向各自的 ISP,/29子网面向我的 LAN 交换机。

IP 分配给接口的方式如下:

LAN interface 
eth0 192.168.3.193/29
eth0:0 192.168.9.217/29

ISP 1 interface
eth1 192.168.0.178/30

ISP 2 interface
eth2 192.168.6.210/30

我想分别在指定的各个 ISP/30/29子网之间路由流量。如果流量来自一个 ISP 的/30网络,则应将其路由到该 ISP/29的网络,反之亦然。我不介意从一个 ISP 的 /29网络发起并发往另一个 ISP 的/29网络的流量在我的路由器中路由(而不是将其发送到一个 ISP 并返回其他 ISP 的链接)。

我的目标是不为两个 ISP 购买两个路由器。如何使用 iproute2 表和策略路由来实现这一点?

答案1

首先,为每个 ISP 创建一个路由表(只需做一次):

echo "11 isp1" >> /etc/iproute2/rt_tables
echo "12 isp2" >> /etc/iproute2/rt_tables

然后为每个表添加指向相应网关的默认路由:

ip route add default via 192.168.0.177 table isp1
ip route add default via 192.168.6.209 table isp2

然后添加规则,根据源地址将流量发送到这些表:

ip rule add from 192.168.3.192/29 table isp1
ip rule add from 192.168.0.176/30 table isp1
ip rule add from 192.168.9.216/29 table isp2
ip rule add from 192.168.6.208/30 table isp2

相关内容