ddns-scripts-principle-of-bb-on-openwrt
更新的url
更新的url全部都记录在/usr/lib/ddns/services,如需增加新的ddns服务商,则需要把该服务商的更新url填于此处。
更新的url网上找来
| 1 | http://[USERNAME]:[PASSWORD]@ddns.oray.com/ph/update?hostname=[DOMAIN]&myip=[IP] | 
更新的url, 公云API有提供:http://www.pubyun.com/wiki/%E5%B8%AE%E5%8A%A9:api
| 1 | http://[USERNAME]:[PASSWORD]@members.3322.org/dyndns/update?system=dyndns&hostname=[DOMAIN]&myip=[IP] | 
上报流程
启动/etc/init.d/ddns start。
拿出/usr/lib/ddns/services里面的对应更新url,并存于update_url变量中。
然后将update_url里面的USERNAME、PASSWORD和DOMAIN分别用配置文件/etc/config/ddns中的username、password和domain替换(以上面的花生壳更新url为例)。
update_url中的IP用当前路由器wan口ip替换掉,最终存于final_url变量中。
然后通过nslookup [DOMAIN]命令查找到域名的公网IP,存于registered_ip变量中。
然后registered_ip与路由器的wan口IP进行比较:
- 相同的话则不上报
- 不相同的话,则通过/usr/bin/wget -O - ${final_url}上报给ddns服务商。
相关配置参数
| 1 | config service 'oray' | 
ip_source和ip_network的解释如下:
| 1 | # If "ip_source" is "network" you specify a network section in your | 
配合ddns的默认配置可看出,ip_source和ip_network是成对出现的:
| 1 | #option ip_source "network" | 
| 1 | #option ip_source "interface" | 
| 1 | #option ip_source "script" | 
按照上面的ddns配置,如果你的路由是二级路由,那么wan口ip是局域网地址时,也照样会把本wan口的ip上报给ddns服务商的。
ip_url参数:
此配置没有填写ip_url参数,因为ddns脚本获取当前wan口ip时,先判断ip_source参数
- ip_source = "network",则最终通过- ubus call network.interface dump拿到wan口ip。
- ip_source = "interface",则通过- ifconfig拿到对应网口ip。
- ip_source = "script",则执行自定义脚本。
- 以上都不是(相当于ip_source = “web”),则通过命令wget -O - ${ip_url}拿到公网ip,即访问${ip_url}地址来得到公网ip。如果还拿不到那就访问默认的http://checkip.dyndns.org网址拿公网ip。