首页 > 程序 > openwrt自动重拨直到得到想要的ip

作者:ghostry 发布时间:2015-08-29 浏览: 17297

转载注明出处: https://blog.ghostry.cn/program/619.html

因为ipv4资源紧张,国内ipv6又迟迟没有普及.导致一些运营商用公网ip和私网ip混合使用.甚至完全私网.
完全私网没办法啦,只能换运营商.混用的这些(比如移动铁通),如果确实有公网ip需要.可以用一些技术手段实现.

正好逛论坛的时候看到一个.先转载过来.等需要的时候可以用一下.最近倒是没什么需要.先留着吧,万一呢.
来源
redial.sh

#!/bin/sh
times='0'
for i in `seq 50`;
    #做50次拨号循环,50次如果都没拨上也停止
do
    sleep 2
    wanip=$(ifconfig pppoe-wan 2> /dev/null | grep 'inet addr' | awk '{print $2}' | cut -d: -f2)
    #获取wan口ip
    sleep 2 
    pubip=$(wget -qO - ddns.oray.com/checkip|tr -cd [0-9.])
    #从网络获取公网IP
    echo "Public IP:" $pubip
    echo "WAN IP:" $wanip
    #显示IP
    if [ "$wanip" = "" ]||[ "$wanip" = "0.0.0.0" ]; then
    #如果获取的IP是无效,记为错误
        if [ "$times" -ge "3" ]&&[ "$wanip" = "" ]||[ "$wanip" = "0.0.0.0" ]; then
        #如果连续5次都还是没有获取到ip,重拨
            times='0'
            ifdown wan | ifup wan 
            sleep 2
            continue
        else
            times=`expr $times + 1`;
            echo "error times :" $times
            echo "waitting two seconds"
            sleep 2
        fi
    elif [ "$pubip" = "$wanip" ]; then
    #如果外网IP和本地IP相同,则保留IP
        echo "dial success"
        break

    else
    #如果获取的是内网IP,重拨
        echo "Intranet IP:" $wanip 
        echo "Redial ..."
        ifdown wan | ifup wan 
        sleep 2
    fi
done

标签: openwrt ipv6 shell ipv4

上一篇: apache配置参数和系统资源占用的关系
下一篇: ubuntu 14.04下使用vnc4server

已有 3 条评论 »

  1. 这样是下下策,既然有混用,表示isp有公网分配权限直接投诉吧

  2. 公司电信给了IPv6但是IPv4是100.64的内网段
    而且现在使用一台机子装个Windows当软路由简直坑

    1. 主要还是v6没普及,普及后v4就可以忽略了.

添加新评论 »

*
*

欢迎评论!歡迎評論!Comments welcome!komentoj bonvenaj!댓글 오신 것을 환영합니다!
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :cold: :cryy: :cute: :shy: :sleep: :struggle: :tea: :yahou: