# echo "200 DIANXIN" >> /etc/iproute2/rt_table # ip route add default via $接电信网卡IP table DIANXIN # ip route add default via $接网通网卡IP # ip rule add fwmark 1 table DIANXIN # ip route flush cache # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d $电信IP -j MARK --set-mark 1 # . # . # .
ISP 的IP 段可以用下面文章里的方法收集 http://bbs.linuxsky.net/viewthread.php?tid=2496
负载均衡要和策略路由一起做比较麻烦,没经验。 线路保护的话,引用一个脚本
QUOTE: 可以通过每10s发送一个小的ping包到网关,看是否有回应,一般网关都是允许ping的。
这个可以通过一个expect程序(netwatch.exp)来完成,下面这个脚本发送一个字节为1的ping包给网关,并分析ping的输出信息,如果为 0% packet loss,表示正常,以0退出。如果超时(1秒钟),以1退出。
CODE:[Copy to clipboard]#!/usr/bin/expect
set target [lindex $argv 0] set timeout 1 spawn ping -c 1 -s 1 $target
expect { " 0% packet loss" { exit 0 } timeout { exit 1 } } 比如网关1为192.168.1.1,网关2为192.168.2.1,那么要监测这两个网关的话,可以这样:
CODE:[Copy to clipboard]#!/bin/sh
netwatch.exp 192.168.1.1 result1=$? netwatch.exp 192.168.2.1 result2=$? if [ "$result1" eq 0 ] && [ "$result2" eq 0 ] ; then
# 如果上次检测时连接丢失,而此次恢复正常 if [ -e /var/run/lost-connection ] ; then do some recovery action here ... rm /var/run/lost-connection fi
# 如果网关1不可达 elif [ "$result1" ne 0 ] ; then change default route to 192.168.2.1 do some action here, such as iptables NAT
# 创建连接丢失标识 touch /var/run/lost-connection
# 如果网关2不可达 elif [ "$result2" ne 0 ] ; then change default route to 192.168.1.1 do some action here, such as iptables NAT
# 创建连接丢失标识 touch /var/run/lost-connection fi
linky_fan做一些优化debian+pc server 跑300个节点应该没问题吧 |