首页 > 程序 > openwrt自动重拨直到得到想要的ip
作者:ghostry 发布时间:2015-08-29 浏览: 17221
转载注明出处: 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
上一篇: apache配置参数和系统资源占用的关系下一篇: ubuntu 14.04下使用vnc4server
这样是下下策,既然有混用,表示isp有公网分配权限直接投诉吧
公司电信给了IPv6但是IPv4是100.64的内网段
而且现在使用一台机子装个Windows当软路由简直坑
主要还是v6没普及,普及后v4就可以忽略了.