Linux上的冗余路由(主动/备份)

目前,我正在尝试在RHEL 5上设置冗余路由。目标目标是具有通往子网的主路由和通往该子网的备用路由,仅当主路由的网关变得无法访问时才使用该路由。

任何想法如何实现这一目标? 与标准的RHEL文件集成在这里是一个加号:)

提前致谢,

你可以使用quagga和OSPF

# yum info quagga Loaded plugins: changelog, fastestmirror, presto, security, versionlock Loading mirror speeds from cached hostfile * base: ftp.colocall.net * epel: ftp.colocall.net * extras: ftp.colocall.net * ius: ius.cu.be * rpmforge: ftp.colocall.net * updates: ftp.colocall.net Available Packages Name : quagga Arch : x86_64 Version : 0.99.15 Release : 7.el6_3.2 Size : 1.1 M Repo : base Summary : Routing daemon URL : http://www.quagga.net License : GPLv2+ Description : Quagga is a free software that manages TCP/IP based routing : protocol. It takes multi-server and multi-thread approach to resolve : the current complexity of the Internet. : : Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng. : : Quagga is intended to be used as a Route Server and a Route Reflector. It is : not a toolkit, it provides full routing power under a new architecture. : Quagga by design has a process for each protocol. : : Quagga is a fork of GNU Zebra. 

并为每个网关使用不同的权重(成本)

 router1.example.net# conf t router1.example.net(config)# int tun0 router1.example.net(config-if)# ip ospf authentication message-digest router1.example.net(config-if)# ip ospf message-digest-key 1 md5 SHdJLapbQ1 router1.example.net(config-if)# ip ospf cost 10 router1.example.net(config-if)# write Configuration saved to /etc/quagga/ospfd.conf router1.example.net# conf t router1.example.net(config)# int tun1 router1.example.net(config-if)# ip ospf authentication message-digest router1.example.net(config-if)# ip ospf message-digest-key 1 md5 SHdJLapbQ1 router1.example.net(config-if)# ip ospf cost 20 router1.example.net(config-if)# write Configuration saved to /etc/quagga/ospfd.conf 

哇,这很酷,从来没有听说过夸格。 我会做它旧学校和脚本,并运行它从克朗:)(非常KLUDGY)

就像先创build两个文件一样。

 # cat /root/route1.txt 1.1.1.1 # cat /root/route2.txt 2.2.2.2 

那么这样一个脚本这样的cron(或在“真正的”循环)

 #!/bin/bash route1=`cat /root/route1.txt` route2=`cat /root/route2.txt` $status=`ping -n -c 1 -q $route1 | grep -c "1 received"` if [ "$status" == "1" ]; then echo "good stuff" > /dev/null else echo "bad stuff" > /dev/null route del [rest of command to delete current default $route1] route add default gateway $route2 echo "$route1" > /root/route2.txt echo "$route2" > /root/route1.txt fi 

就像我说的那样,非常可爱啊? 🙂