Board logo

标题: 有高手知道怎么以批处理做网关的自动切换吗? [打印本页]

作者: ymtien     时间: 2006-11-29 07:18    标题: 有高手知道怎么以批处理做网关的自动切换吗?

如果目前的连线网关(Gateway)192.168.1.2 断线了,能够侦测并自动切换到另一个网关192.168.1.3,当192.168.1.2的连线愎恢了能够再切换回去,维持网路的畅通,有人知道以批处理要如果实现呢?在linux平台上是很轻易可以做到的但windows上就难呀~
不知道有没有高手可以提供一下技术交流~感谢


在linux下可以用shell scripts轻易完成上述的功能:

环境说明:

两条 ADSL 线路: 伺服器使用 ADSL Router (A) 对外连线, LAN User 透过 Linux NAT 使用 ADSL Router (B) 对外连线.
当 ADSL Router (B) 断线时, Linux NAT 自动调整路由, 让 LAN User 改以 ADSL Router (A) 对外连线.
当 ADSL Router (B) 线路恢复时, Linux NAT 自动调整路由, 让 LAN User 再从 ADSL Router (B) 对外连线.

Linux Shell Script:

假设 ADSL Router (A) 使用 Hinet 线路; ADSL Router (B) 使用 APOL 线路

源代码:
---------------------------------------------------------------------------------------------------------

#!/bin/sh

if [ -n "`route -n | grep 0.0.0.0 | grep UG | grep 192.168.1.254`" ]; then
        line="apol"
else
        line="hinet"
fi

while true;
do
        ping -c 1 -t 255 210.200.211.225 > /dev/null
        if [ $? != 0 ] && [ $line == "apol" ]; then
                echo "change to hinet"
                route del default gw 192.168.1.254
                route add default gw 192.168.0.254
                route add -host 210.200.211.225 gw 192.168.1.254
                line="hinet"
        elif [ $? == 0 ] && [ $line == "hinet" ]; then
                echo "change to apol"
                route del default gw 192.168.0.254
                route add default gw 192.168.1.254
                route del -host 210.200.211.225 gw 192.168.1.254
                line="apol"
        fi
        sleep 10s
done
----------------------------------------------------------------------------------------------------------

行号说明:

03~07 以目前 Default Gateway 的设定判断对外使用线路
09 无穷回圈
11 ping APOL public DNS IP
12~17 如果 ping 失败 (网路不通) 而且目前使用 APOL 线路者, 切换至 Hinet 的线路
16 设定对 APOL public DNS IP 的路由, 下次再 ping 这个 IP 时会从 192.168.1.254 这个 Gateway ping 出去, 以得知 APOL 线路是否已恢复
18~23 已切换使用 Hinet 线路, 而 APOL 线路已恢复时的处理: 还原路由设定, 让 LAN User 转回使用 APOL 线路
25 Script 程序暂停 10 秒钟
---------------------------------------------------------------------------------------------------------