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

Unix/Linux
实用技巧:sys 请求:内核严重错误?没问题[ZT]
LINUX 的 HOSTID
出现这个信息:neighbour table overflow,什么原因?
如果用的是SCSI硬盘,在GRUB中显示root(hd0,0)对吗?
介绍一个下载LINUX、UNIX资料的网站,很不错
大家谁知道jdk那种.bin的安装文件是怎么做的?
如何新增一块硬盘
大侠帮我看看,怎么多了条route?
不用root密码也可以執行root的程序--Sudo
访问控制大师,使用pam来支持login的访问控制
Linux知识宝库:Kylix经典十大难题解决方法
小技巧:自制c语言编制cgi实现搜索
数据库管理员的难题,选择MySQL还是SQLServer
一托N的实现GRUB引导多个操作系统
网络技术之Linux网络的IPv6应用(1)
网络技术之Linux网络的IPv6应用(2)
网络技术之Linux网络的IPv6应用(3)
MySQL的远程连接出现错误提示分析
利用Perl列出系统环境变量清单范例
系统管理员必备常识之RAID磁盘阵列

Unix/Linux 中的 Linux 策略路由


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 49 ::
收藏到网摘: 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