我有一个运行Ubuntu 10.04的Linux机器,有三个接口: eth0 , eth1和eth2 。 我打算将它用作由两个不同的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子网之间路由stream量。 如果stream量来自一个ISP的/30networking,则应将其路由到该ISP /29networking,反之亦然。 我不介意在一个ISP的networking中发送的stream量是否发送到另一个ISP的networking(在没有发送给一个ISP的情况下返回到其他ISP的链接)。
我的目标是不要为两个ISP购买两台路由器。 我怎么能通过使用iproute2表和策略路由来实现这一点?
首先,为每个ISP创build一个路由表(只做一次):
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
然后添加规则来根据源地址向这些表发送stream量:
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