标题: 有高手知道怎么以批处理做网关的自动切换吗?
[打印本页]
作者: 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 秒钟
---------------------------------------------------------------------------------------------------------