新手问题 centos 环境下 双线切换策略(usb 4g上网卡+有线)

Anjie · 2018年02月28日 · 最后由 wg4197 回复于 2018年03月02日 · 184 次阅读

背景:有一终端程序,部署在客户那边,centos 环境,一个有线网口(够通过客户的局域网关访问外网),该程序需要访问我们的平台服务(部在阿里云)。为应对有线会发生网断线等网络异常情况,我们在终端电脑上插上一个 usb 4G 上网卡(不带 wifi)。

问题:如何在有线与 4g 之间切换访问外网平台服务?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

分享一下我的第一种方案 在应用程序之外,由脚本(如 shell、python) 控制系统的路由的默认网关,shell 脚本示例如下:

#!/bin/bash
gw_4g=192.168.8.1
gw_vlan=192.168.41.254
gw_service=183.232.231.173

route del default
route add default gw $gw_vlan

#添加gw_service的靜态路由
route del -host $gw_service
route add -host $gw_service gw $gw_vlan

while true
do  
    gw_curr=$(ip route show |grep default |awk '{print $3}')

    if ping -c 1 $gw_service >/dev/null 2>&1;
    then
        echo "connected"
        if test $gw_curr = $gw_vlan 
        then
            echo 'gw_vlan ->do nothing.'
        else
            echo 'gw_4g -> set gw_vlan'
            route del default gw $gw_4g
            route add default gw $gw_vlan
        fi
    else
        echo "unconnected";
                if test $gw_curr = $gw_4g
                then
            echo 'gw_4g ->do nothing.'
        else
            echo 'gw_vlan -> set gw_4g'
            route del default gw $gw_vlan
            route add default gw $gw_4g
        fi      
    fi
done
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册