單獨寫一篇文章出來,倒是有些沽名釣譽之嫌了。因爲之前的一篇文章已寫明了。無奈當今信息氾濫,深感往往沒有及時發現而造新輪子之痛,遂貿然用此標題。
此種客戶端,其工作過程非常簡單,無非是用URL之參數向dnspod傳遞一個更新的消息罷了。只是客戶端這邊環境複雜,不得不多判斷幾次了。
配置什麼的請參看這篇文章的2012年10月16日更新。
2013年6月8日更新:
完全脫離functions.sh
,使用wget
。無論是像OpenWrt
、dd-wrt
這类busybox
構建的環境,還是Ubuntu這樣的桌面發行版,還是优雅的FreeBSD
,都可以暢快地奔跑。
配置文件(/etc/sddns.conf
, $HOME/.sddns.conf
):
### edit this variable
login_email='[email protected]'
login_password='oooooo'
main_domain='baidu.com'
sub_domain='b' # b.baidu.com
###
wanip='c.lexun.com/ip'
### DO NOT EDIT THIS
2013年8月2日更新
发布0.0.9
版本,除了一些逻辑上的改动,主要增加了支持多个子域的功能。
配置文件如下:
login_email='[email protected]'
login_password='123'
main_domain='baidu.com'
sub_domain='a,b,c'
wanip='iframe.ip138.com/ic.asp'
### DOT NOT MODIFY THE FOLLOWING
一个子域不变, sub_domain='a'
,多个子域用逗号分隔 sub_domain='a,b,c'
。如果子域等配置参数有变化,需删除 ### DOT NOT MODIFY THE FOLLOWING
下所有内容。欢迎反馈问题。
至于动态监视内网网卡地址获得公网IP,可参考的东西如下:
获取eth0网卡IP地址:
ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
监控网络配置变化:
ip monitor
更多的参考:DDNS 的工作原理及其在 Linux 上的实现
2013年8月7日更新
本次更新主要增加对curl
及wget
的判断,優先用curl
,若沒有安裝則使用wget
。
需要說明的是幾個環境中的使用:
在一般的已安裝curl
的linux
中,需要註釋掉sddns.conf
中的 addon_opt
行,即在有 addon_opt
這行前面加 #
號:
#addon_opt='--cacert /etc/ssl/cacert.pem'
而在OpenWrt中,若安裝了curl, addon_opt
這行不能被註釋掉,並且按照此選項指定的路徑增加這個文件, cacert.pem
這個文件在這裏下載。
若沒有curl,使用wget時一般情況下 addon_opt='--no-check-certificate'
這行的註釋要去掉。在OpenWrt中的話不能使用busybox的wget,需 opkg install wget
安裝一下wget。
2014年2月13日更新
-
不再使用wget。若系統中沒有安裝curl,會提示並退出。
-
ip138的wanip是由於多了POST數據而導致獲致公網地址失敗,已修正。
-
檢測配置文件的讀權限。
2014年4月21日更新
-
配置文件
sddns.conf
:首先检测用户目录是否存在.sddns.conf
,若不存在,用/etc/sddns.conf
,否则用${HOME}/.sddns.conf
。 -
增加
port
模式,读取当前设备的网口IP作为公网IP,并使用API的value
参数传递。sddns.conf
如下配置:
port=eth0
mode=port
wanip 在 port
模式下不生效,可在 sddns.conf
可删去。另外若 mode
指定为其它值,如 mode=value
,仍会从wan_ip
取得公网地址,但会用value参数传递IP。
- 发布版本号:
0.0.9-2
2014年5月15日更新
-
發佈版本號:
0.0.9-3
-
修正多個子域情況下獲取
record_id
可能出錯的問題。
2015年5月24日更新
最近sddns无法正常更新dnspod的记录,原因如下:
-
dnspod的api接口强制使用https协议,http访问链接会重定向到https,从而使用http协议且curl没有编译ssl协议的调用出错。
-
dnspod的接口URL dnsapi.cn的域名证书过期,导致原来用
--cacert
的调用出错。
解决办法:
-
若因curl不支持https使用http的调用,需安装支持https的curl。
-
更新dnsapi.cn的根证书,已整理,下载链接见下方。
2015年6月25日更新
更新到0.0.9.4
,改动如下:
-
curl使用
-k
参数,忽略https证书验证的问题。所以现在本地没有根证书或dnspod的证书过期,都不会引发错误。 -
配置文件取消
mode
,只验证port
,若设置了port
,将忽略wanip
。 -
配置文件增加
refresh
配置参数,若设置为不为零的值,那么每次执行sddns都会向dnspod的接口发起更新的请求。 -
配置文件与运行时缓存数据的文件分离,配置文件不再要求写权限,缓存数据文件默认为
/tmp/sddns.cache
,可在配置文件中用runtime_file
指定。 -
增加curl及dnspod接口出错时的错误回显,方便查找原因。
-
配置文件中增加dnspod的
token
鉴权方式,token配置参数的格式为ID,Token
, 更多参见dnspod的说明。token鉴权的优先级高于用户名密码。
相關文章: