当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Linux 策略路由

Unix/Linux
linux 操作技巧收集_
linux下如何读取使用iso 镜像文件的方法
Linux平台下文件的压缩与解压参数说明
Linux下常用压缩格式的压缩与解压方法
Linux JDK,TOMCAT安装及环境设置
Linux sleep命令使用参数
Linux cat命令参数
nfs 配置的简单例子
linux kill 关闭进程命令
linux ultrasphinx Anonymous modules have no name to be referenced by
Linux oracle 9i图文安装方法一
Linux oracle 9i图文安装教程二
Linux oracle 9i图文安装教程三
Linux oracle 9i图文安装教程四
Linux oracle 9i图文安装教程五
Linux oracle 9i图文安装教程六 完结篇
linux AS3 oracle9i 安装指南
Linux 下 (RedHat 9.0) JDK,Tomcat,MySQL的安装
RedHat 9.0下Apache+PHP+MySQL服务器安装配置
Linux 下用 Python 连接 MSSql Server 2008

Unix/Linux 中的 Linux 策略路由


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 61 ::
收藏到网摘: n/a

传说 负载均衡
1.添加网卡 插入网卡,启动机器,修改/etc/modules.conf并加入 alias eth2 driver.o 2.配置adsl拨号 通过adsl-setup程序创建ppp0和ppp1的拨号配置文件,并保存配置。 修改/etc/sysconfig/network-script/ifcfg-ppp*文件,将其中的PIDFILE参数设为: PIDFILE=/var/run/ppp-adsl*.pid 其中*对应0、1等 如果不修改此参数将无法启动第二个ppp接口。 3.启动ppp接口 因为adsl-start 命令缺省只能启动第一的ppp接口。所以要启动两个接口,必须指定配置文件。 adsl-start /etc/sysconfig/network-script/ifcfg-ppp0 adsl-start /etc/sysconfig/network-script/ifcfg-ppp1 4.添加路由表 缺省情况下,系统只有3个路由表,local、main、default,路由规则为所有进入的数据报都参照main、defaul来决策路由,这可以通过ip rule ls来查看。其输出如下: 代码: [root@linuxrouter root]# ip rule ls 0: from all lookup local 32766: from all lookup main 32767: from all lookup 253 [root@linuxrouter root]# 要实现策略路由,添加额外的路由表是必须的。 下面两条命令分别添加名为ppp0和ppp1的路由表。 echo 201 ppp0 >> /etc/iproutes/rt_tables echo 202 ppp1 >> /etc/iproutes/rt_tables 5.创建路由表项 上面创建的两个路由表都是空表,需要在其中注入路由表项。 本人编写了如下脚本用于注入路由表项: 代码: #!/bin/bash # Name: cprt # This program copy the route from route table to route table, # exclude the default route entry. if [ -z "" -o -z "" ]; then echo $"usage: cprt " exit 1 fi SOURCE= DEST= # Clear the destination route table echo $"Clearing route table $DEST ......" echo /sbin/ip route flush table $DEST # Inject routes from source to destination echo $"Injecting route from $SOURCE to $DEST ......" /sbin/ip route ls table $SOURCE | grep -v default > /tmp/route-tmp while read line; do /sbin/ip route add table $DEST $line done < /tmp/route-tmp" 把main表中的路由表项复制到ppp0和ppp1中。 将下面命令加入到/etc/rc.d/rc.local中。 cprt main ppp0 cprt main ppp1 此时,两个路由表中都有相同的路由表项了,除了default路由以外。缺省路由的添加要通过另外的途径添加。当ppp激活,或者掉线时,pppd守护进程会调用/etc/ppp/目录下的ip-up、ip-down脚本,这些教本又分别调用ip-up.local、ip-down.local。在此我们利用这两个脚本来对路由表和流量控制策略进行维护,此脚本需要人工创建。 下面时本例中的脚本: 代码: #!/bin/bash # Name: ip-up.local # Created by lyking@CU check_default_route () { LC_ALL=C ip route list table match 0/0 | grep -q default } # Determin device here # We should use IFNAME as the interface name.For some reason, the IFNAME maybe not # same as the LINKNAME. And the route table should associate with the IFNAME. For # some conveniency, I name the route table as "ppp0" and "ppp1". RT_TABLE=$IFNAME # Add or change static route here if [ ! `check_default_route $RT_TABLE` ] ; then ip route change default dev $IFNAME table $RT_TABLE else ip route add default dev $IFNAME table $RT_TABLE fi # Write some messages for later trubleshooting. echo >> /var/log/ifchang.log echo ": $IFNAME going up at `date`." >> /var/log/ifchang.log echo ": $IFNAME got address: $IPLOCAL, peer address is $IPREMOTE." >> /var/log/ifchang.log echo ": Table $RT_TABLE default route change to `ip route ls table $RT_TABLE | grep default`." >> /var/log/ifchang.log # Refresh routing cache to activating the routing immediately. ip route flush cache 代码: #!/bin/bash # Name: ip-down.local # Created by lyking@CU cd /etc/sysconfig/network-scripts . network-functions # Determin device here # We should use IFNAME as the interface name.For some reason, the IFNAME maybe not # same as the LINKNAME. And the route table should associate with the IFNAME. For # some conveniency, I name the route table as "ppp0" and "ppp1". RT_TABLE=$IFNAME PPPS="ppp0 ppp1" # Looking for a valide connection to Internet DEFAULT_RT="" for i in $PPPS ; do echo "Checking $i ..." >> /tmp/if-down.log if [ ! `is_available $i` ] ; then echo "$i is available." >> /tmp/if-down.log DEFAULT_RT=$i break fi done # Update default route here if [ $DEFAULT_RT != "" ] ; then ip route add default dev $DEFAULT_R