说来话长了。从双11前关注华硕路由器,购买前特意网上搜索了一下,最后来到了本站。为以后RT-AC68U刷机打下了基础。
买路由器就是用来刷的。
接触了梅林固件,从刷第一版开始,在小宝同志和各位大侠们一致努力下,让我们的路由器发出第二春。喵~~呜[此处应有掌声]
我的是悲催的大局域网:广州长城宽带50M,仅仅是下载速度稍微快点。
所以都知道长宽的网络是不能外网的,无论怎么设置都不行。当然我是没有用【软件中心 – 穿透DDNS】。
无意中朋友的联通手机升级套餐,赠送一条10M小水管,跟宽频电视合作,送了一年网络。
接上后就开启了双WAN线路,测试期间发现联通的宽带竟然可以外网,而且80,21,22,23,443各种端口都没有封闭
所以我的外网访问就是:http://XXXX.asuscomm.com
华硕本身自带的DDNS可以正常使用,只能识别首选WAN接口的IP,因为我有长城宽带送的大麦盒子,还未破解,不能用第三方网络。如果切换了WAN口的位置,DDNS又不能获取联通宽带的IP…
这几天查阅了论坛所有关于DDNS的主题以及各种双线、单线拨号的问题,有所收获。
当然各位大侠还是高抬贵手,让我给新来的小白解疑。
刷了大梅林,就算了入了团。基本的一些指令以及操作需要提前学习下,例如SSH登录,telnet登录,WinSCP登录操作等等。
首先是开启了双WAN,线路接口插对。
以我的网络为示例,首选 WAN是长城宽带,大局域网。第二 WAN是可以外网的联通宽带。负载均衡随意填写↓↓↓
然后进入DDNS,提前注册好花生壳免费域名,输入进去 ↓↓↓
然后点电脑的开始,运行输入cmd,可以ping下自己的域名,例如XXXX.vicp.net
可以看到IP是第一WAN的。不着急,继续
打开WinSCP登陆,进入/jffs/scripts/ 目录,新建文件ddns.sh ↓↓↓
输入以下内容后保存:
#!/bin/sh
username=nvram get ddns_username_x
pass=nvram get ddns_passwd_x
hostname=nvram get ddns_hostname_x
wanip=nvram get wan1_ipaddr
case $(curl -s “http://$username:$pass@ddns.oray.com/ph/update?hostname=$hostname&myip=$wanip”) in
good|nochg*) /sbin/ddns_custom_updated 1
;;
*) /sbin/ddns_custom_updated 0
;;
esac
这个脚本是根据已经填好的花生壳DDNS配置,自动获取用户名和密码,强制更新第二WAN的IP
注意红色脚本里面的wan1就是WAN2,wan0是第一wan口,代码中的0一般指的是第一位,从0开始嘛~
保存后,需要设置脚本的权限为0755:在脚本文件ddns.sh点鼠标右键,将圈框的位置内输入0755点确定即可。 ↓↓↓
已经完成了脚本部分,只剩下让它隔段时间运行就ok了。
可以测试下脚本,telnet 登录进路由器,键入/jffs/scripts/ddns.sh,回车后看看有木有反应。木有就对了,错了也不会有提示的,嘎嘎
所以你要保证在DDNS里输入的用户名和密码是正确的。不正确的话,DDNS里会提示。(只是我太懒,不想修改提示部分,直接抄过来就用)
运行后,稍等片刻在ping下花生壳域名看看有没有正确获取第二WAN的IP
现在进入设置自动运行时间:
登录路由器主界面,进入Tools => Script
参数配置类型选择:超时脚本
超时时间:720 (这里是按照10的倍数计算的。也就是7200秒=2小时 每隔2小时运行一次脚本)
脚本配置:/jffs/scripts/ddns.sh
点+号保存。
进阶设置DDNS:
即使你没有开启DDNS,或开启了非花生壳DDNS,也可以用命令手动更新WAN2的IP到第三方DDNS,需要输入用户名和密码以及域名。
还是ddns.sh文件,写入超时启动脚本就行。
花生壳、3322以及NO-IP都支持http提交更新域名,配置文件要写对。
花生壳:
#!/bin/sh
username=”花生壳用户名”
pass=”花生壳密码”
hostname=”域名”
wanip=nvram get wan1_ipaddr
case $(curl -s “http://$username:$pass@ddns.oray.com/ph/update?hostname=$hostname&myip=$wanip”) in
good|nochg*) /sbin/ddns_custom_updated 1
;;
*) /sbin/ddns_custom_updated 0
;;
esac
3322:(强烈推荐)
#!/bin/sh
username=”3322用户名”
pass=”3322密码”
hostname=”域名”
wanip=nvram get wan1_ipaddr
wget -q -O – “http://$username:$pass@members.3322.net/dyndns/update?hostname=$hostname&myip=$wanip”
if [ $? -eq 0 ]; then
/sbin/ddns_custom_updated 1
else
/sbin/ddns_custom_updated 0
fi
NO-IP:
#!/bin/bash
username=”NOIP用户名”
pass=”NOIP密码”
hostname=”NOIP域名”
wanip=nvram get wan1_ipaddr
noipurl=”http://$username:$pass@dynupdate.no-ip.com/nic/update?hostname=$hostname&myip=$wanip”
arNslookup() {
local inter=”http://119.29.29.29/d?dn=”
wget –quiet –output-document=- $inter$hostname
}
local DomainIP=$(arNslookup)
if [ “$wanip” = “$DomainIP” ]; then
echo “no need to update”
exit 0
else
curl “$noipurl”
fi
—————————————-我是邪恶的分割线————-够长了吗————————————
再为大家服务,更新下自用的DDNSPOD获取第二WAN的IP代码:(注意保存为UTF-8编码格式)
- #!/bin/sh
- #################################################
- # AnripDdns v5.08
- # 基于DNSPod用户API实现的动态域名客户端
- # 作者: 若海[mail@anrip.com]
- # 介绍: http://www.anrip.com/ddnspod
- # 时间: 2016-02-24 16:25:00
- # Mod: 荒野无灯 http://ihacklog.com 2016-03-16
- #################################################
- # 获得本地外网IP (wan0=第1wan wan1=第2wan)
- arIpAdress() {
- local inter=
nvram get wan0_ipaddr
- echo $inter
- }
- # 查询域名地址
- # 参数: 待查询域名
- arNslookup() {
- local inter=”http://tool.ihacklog.com/net/ip.php?domain=”
- wget –quiet –output-document=- $inter$1
- }
- # 读取接口数据
- # 参数: 接口类型 待提交数据
- arApiPost() {
- local agent=”AnripDdns/5.07(mail@anrip.com)”
- local inter=”https://dnsapi.cn/${1:?’Info.Version’}”
- if [ “x${arToken}” = “x” ]; then # undefine token
- local param=”login_email=${arMail}&login_password=${arPass}&format=json&${2}”
- else
- local param=”login_token=${arToken}&format=json&${2}”
- fi
- wget –quiet –no-check-certificate –output-document=- –user-agent=$agent –post-data $param $inter
- }
- # 更新记录信息
- # 参数: 主域名 子域名
- arDdnsUpdate() {
- local domainID recordID recordRS recordCD
- # 获得域名ID
- domainID=$(arApiPost “Domain.Info” “domain=${1}”)
- domainID=$(echo $domainID | sed ‘s/.\+{“id”:”\([0-9]\+\)”.\+/\1/’)
- # 获得记录ID
- recordID=$(arApiPost “Record.List” “domain_id=${domainID}&sub_domain=${2}”)
- recordID=$(echo $recordID | sed ‘s/.\+\[{“id”:”\([0-9]\+\)”.\+/\1/’)
- # 更新记录IP
- recordRS=$(arApiPost “Record.Ddns” “domain_id=${domainID}&record_id=${recordID}&sub_domain=${2}&record_line=默认&value=$hostIP”)
- recordCD=$(echo $recordRS | sed ‘s/.\+{“code”:”\([0-9]\+\)”.\+/\1/’)
- # 输出记录IP
- if [ “$recordCD” == “1” ]; then
- echo $recordRS | sed ‘s/.\+,”value”:”\([0-9\.]\+\)”.\+/\1/’
- return 1
- fi
- # 输出错误信息
- echo $recordRS | sed ‘s/.\+,”message”:”\([^”]\+\)”.\+/\1/’
- }
- # 动态检查更新
- # 参数: 主域名 子域名
- arDdnsCheck() {
- local postRS
- local hostIP=$(arIpAdress)
- local lastIP=$(arNslookup “${2}.${1}”)
- echo “hostIP: ${hostIP}”
- echo “lastIP: ${lastIP}”
- if [ “$lastIP” != “$hostIP” ]; then
- postRS=$(arDdnsUpdate $1 $2)
- echo “postRS: ${postRS}”
- if [ $? -ne 1 ]; then
- return 1
- fi
- fi
- return 0
- }
- ###################################################
- # 使用Token认证(免登陆,安全性更高,推荐使用) 请去 https://www.dnspod.cn/console/user/security 获取
- arToken=”tokenID,token”
- # 使用邮箱和密码认证(不启用Token用这个)
- arMail=””
- arPass=””
- ###################################################
- # 检查更新域名
- arDdnsCheck “abc.com” “ac68u”
- if [ $? -eq 0 ]; then
- /sbin/ddns_custom_updated 1
- else
- /sbin/ddns_custom_updated 0
- fi
复制代码
#此处感谢网友@ntkevin 解决了提交IP的问题。
—————————————–
首先你得有域名才能用到DDNSPOD。不懂请善用搜索
其他参考文章:
DDNS内网穿透之路由器设置
http://koolshare.cn/thread-23740-1-1.html
Over
By 2015/12/15 1:31
自从入了AC68U,每晚睡的好晚…
RT
转载请注明:徐自远的乱七八糟小站 » 双线路/双拨 WAN自由选择DDNS的IP 支持花生壳-3322-NOIP-(更新DNSPOD代码) – 梅林 – KoolShare – 源于玩家 服务玩家