QUOTE
一个iproute2的应用实例--------------------------------------------------------------------------------公司有两条互联网线路分别接入到不同的ISP, 代理服务器用LINUX 2.4内核以上, 安装有三片网卡,通过如下脚本实现共享两条 互联网线路上网; 此方法只能完成路由级别的负载均衡,而不能完成包级别的负责均衡, 具体文档请查阅有关iproute2方面的资料;以下脚本只是为了配置方便而写的, 如果有更好更强大功能的脚本希望能起到抛砖引玉的作用;#more iproute2.sh#!/bin/shPATH=/usr/local/sbin:/usr/sbin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin################################################################################ ---------# | |eth1# | LINUX | ----------gw1 ---->ISP1# localnet| |ip1# eth0 ---| |# localip | |eth2# | BOX |----------gw2 ----> ISP2# | | ip2# ---------###############################################################################int1=eth1ip1=111.111.111.2gw1=111.111.111.1pref1=1int2=eth2ip2=222.222.222.2gw2=222.222.222.1pref2=1localnet=172.16.0.0/16localip=172.16.0.1###############################################################################start() {ip rule add from $ip1 lookup 100 prio 100ip route add $localnet via $localip table 100ip route add 0/0 via $gw1 table 100ip rule add from $ip2 lookup 101 prio 101ip route add $localnet via $localip table 101ip route add 0/0 via $gw2 table 101ip route del defaultip route add default equalize \nexthop via $gw1 dev $int1 weight $pref1 \nexthop via $gw2 dev $int2 weight $pref2ip route flush cache ; ip route flush cache ; ip route flush cache ;}stop() {ip rule del from $ip1 lookup 100 prio 100ip route del $localnet via $localip table 100ip route del 0/0 via $gw1 table 100ip rule del from $ip2 lookup 101 prio 101ip route del $localnet via $localip table 101ip route del 0/0 via $gw2 table 101ip route del default equalize \nexthop via $gw1 dev $int1 weight $pref1 \nexthop via $gw2 dev $int2 weight $pref2route add default gw $gw1ip route flush cache ; ip route flush cache ; ip route flush cache ;}status() {clearecho current route rule :echoip rule listechoecho current route table :echoip routeechoecho current route status :echoip route list cache |grep "via $gw1" |wc -l |while read line1doecho " nexthop via $gw1 ": $line1doneip route list cache |grep "via $gw2" |wc -l |while read line2doecho " nexthop via $gw2 ": $line2doneecho}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo $"Usage: $0 {start|stop|restart|status}"exit 1esacexit 0有关IPTABLES 的配合如下:# more iptables.sh#!/bin/bash/sbin/modprobe ip_tables/sbin/modprobe ip_conntrack_ftp/sbin/modprobe ip_nat_ftpecho 1 > /proc/sys/net/ipv4/ip_forward/sbin/iptables -F INPUT/sbin/iptables -F OUTPUT/sbin/iptables -F FORWARD/sbin/iptables -F POSTROUTING -t nat/sbin/iptables -F PREROUTING -t nat/sbin/iptables -F OUTPUT -t nat/sbin/iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT/sbin/iptables -A FORWARD -i eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT/sbin/iptables -t nat -A POSTROUTING -o eth+ -s 172.16.0.0/16 -j MASQUERADE/sbin/iptables -A FORWARD -s 172.16.0.0/16 -j ACCEPT完; __________________有人说一个人有烦恼是因为记性太好。那年开始,我忘记了很多事情,唯一有印象的,就是我喜欢桃花。gongguan008@msn.comapache CL 用的正是iproute2,uClibc的缩小版,好在功能没缩水我现在用它编自己的QOS,效果比CL自带的脚本(同样是用TC)好多了。。。 cl的内核默认没有打开高级路由控制。 那么要用高级路由的话,只能自己重新编译内核了。。。 嘿嘿,我的意思就是让老大重新编译一个内核。。。 QUOTE (henrt @ Mar 18 2005, 02:44 PM)
CL 用的正是iproute2,uClibc的缩小版,好在功能没缩水我现在用它编自己的QOS,效果比CL自带的脚本(同样是用TC)好多了。。。
什么地方有cl的qos设置的相关资料啊?兄弟方便共享你的脚本吗? QUOTE (henrt @ Mar 18 2005, 02:44 PM)
CL 用的正是iproute2,uClibc的缩小版,好在功能没缩水我现在用它编自己的QOS,效果比CL自带的脚本(同样是用TC)好多了。。。
绝对是缩水了的。有好几个选项和参数都不支持。 不能要求太高啦,libc版的iproute2 光执行文件就2xxk大啦。。。我认为不一定是他的功能缩水,因为CL的内核严重缩水,限制了iproute2研究自己做个功能全一点的小内核,试试就知道啦 cl是商业版的简化版,当然有差距了。
页:
[1]