OpenWrt(busybox版)配置dnspod動態域名客戶端


  告知:本程序源碼來自於linux/FreeBSD下的dnspod動態域名客戶端一文,由 vinoca 開發,由於 vinoca 沒有開發針對 busybox 的版本,遂將其代碼進行改編!請到 vinoca 博客獲取源代碼,再參考本文進行修改!

  本文使用的源代碼發佈版本號: 0.0.9-2  本文案例使用的OpenWrt版本:Backfire r33081;busybox版本:v1.15.3

配置過程

1. sddns 0.0.9-2 需要curl支持:

opkg install curl


2. DnsPod API需要SSL支持,而OpenWrt(busybox)安裝的curl默認無證書,需要到官方下載,並將下載完成的證書移動到指定位置:

wget http://curl.haxx.se/ca/cacert.pem
mkdir /etc/ssl
mv cacert.pem /etc/ssl/

3. 獲取由 vinoca 開發的sddns 0.0.9-2:爲保障原創作者權益,此處地址省略,請到作者博客查找下載鏈接!


4. 解壓縮:

tar -xzf sddns_0.0.9-2_all.tar.gz

5. 修改源代碼文件sddns中post函數:

本條目中,修改了DnsPod的API用法( vinoca 的可能是早期的API,反正我在查手冊的時候,要求是這樣的!)

post() {curl $addon_opt -sL -A $SIGN --data "login_email=$login_email&login_password=$login_password&format=json&error_on_empty=no&$1" "https://dnsapi.cn/$2"}

爲:

post() { curl $addon_opt -sL -X POST "https://dnsapi.cn/$2" --data "login_email=$login_email&login_password=$login_password&format=json&error_on_empty=no&$1"}

6. 修改源代碼文件sddbs中get_record_id函數所使用的正則:

本條中將原有針對子域名,獲取其records_id的通配方法由“.*”改爲“[^}]*”以防止主機名爲“@”時,修改NS或者MX記錄!這個問題我遇到過,它竟然將我的一條NS記錄給修改成A記錄,並動態了,真是嚇死個人,我以爲這下徹底玩兒完,沒想到原本不能配置的NS記錄竟然可以新增!還可以修改回來,萬幸,萬幸!

sed -rn "s/.*(\"records\":\[.[^]]+\]).*/\1/g;s/.*\{\"id\":\"([0-9]+)\",\"name\":\"$1\".*\"type\":\"A\".*/\1/p"

爲:

sed -rn "s/.*(\"records\":\[.[^]]+\]).*/\1/g;s/.*\{\"id\":\"([0-9]+)\",\"name\":\"$1\"[^}]*\"type\":\"A\".*/\1/p"


7. 修改採集wan口IP中的正則表達式:

這裏原有的正則限定有些不足,對PPPOE用戶來說(也可能是busybox用戶)無法得到IP,得到的IP爲空,修改後可從pppoe-wan口獲取到IP

cur_wanip=`ifconfig $port | sed -n '/inet addr:/s/.*inet addr:\(.*\) Bcast:.*/\1/p'`

爲:

cur_wanip=`ifconfig pppoe-wan | sed -n '/inet addr:/s/.*inet addr:\([0-9.]\{6,15\}\).*/\1/p'`


8. 修改sddns.conf文件(特別注意,要將addon_opt前面的#號去掉!):

如果是主域名,可使用@;另外如果是pppoe撥號的用戶,想要使用wan口的IP,那麼去掉port和mode前面的#號,並將port改爲pppoe-wan,或者ifconfig一下,看看你的IP在哪個口上,這樣比較準確!

login_email='[email protected]'
login_password='xxx'
main_domain='eg.com'
sub_domain='@,www'

wanip='http://c.lexun.com/ip/'
port=pppoe-wan

mode=port

addon_opt='--cacert /etc/ssl/cacert.pem'

### DOT NOT MODIFY THE FOLLOWING




9. 將sddns可執行文件放置到/usr/bin中去:

mv sddns /usr/bin/

10. 將sddns.conf配置文件放置到/etc目錄中去:

mv sddns.conf /etc/

11. 刪除或備份sddns_0.0.9-2_all.tar.gz

#刪除:

rm sddns_0.0.9-2_all.tar.gz


#備份:

mv sddns_0.0.9-2_all.tar.gz /backup/


12. 將sddn加入任務計劃:

crontab -e

在使用vi打開的文本中添加一行:

其中,“/15”表示每15分鐘執行一次,

“>> /dev/null 2>&1”表示不進行任何輸出(否則cron會email通知)

*/15 * * * * sddns >> /dev/null 2>&1


13.將cron設置爲開機啓動:

vi /etc/rc.local

在其中添加一行:

crond start

使用過程中需要注意的事項


1. 如果你修改了sddns.conf文件“### DOT NOT MODIFY THE FOLLOWING”上方的任何參數,最好將“### DOT NOT MODIFY THE FOLLOWING”下方所有的信息刪除掉,否則可能會出現意想不到的意外事件!


2. 下載cacert.pem時,如果速度太慢,可以用電腦下載後上傳(如果電腦使用的路由器正是openwrt所在的路由器,當電腦下載完成的時候,路由器也會同步完成。


3. 調試時不要太過頻繁,(指刪除“### DOT NOT MODIFY THE FOLLOWING”下方信息後執行sddns命令),每分鐘不超過5次最好,否則可能有被DnsPod臨時封禁賬號的危險,雖然封禁時間不長,但畢竟有了案底就不好了。


備忘和參考

1. Domain.Info返參

{"status":{"code":"1","message":"Action completed successful","created_at":"2014-05-14 20:19:04"},"domain":{"id":"111","name":"vss.so","punycode":"vss.so","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"","records":"5","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"no","beian":"no","user_id":"11","created_on":"2014-01-02 18:11:20","updated_on":"2014-05-14 15:41:06","ttl":"600","owner":"[email protected]","auth_to_anquanbao":true}}

2. Record.List返參

{"status":{"code":"1","message":"Action completed successful","created_at":"2014-05-14 21:23:32"},"domain":{"id":111,"name":"vss.so","punycode":"vss.so","grade":"DP_Free","owner":"[email protected]"},"info":{"sub_domains":"5","record_total":"5"},"records":[{"id":"112","name":"@","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"1.1.1.1","mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2014-05-14 20:58:44","use_aqb":"no"},{"id":"113","name":"@","line":"\u9ed8\u8ba4","type":"MX","ttl":"600","value":"vss.so.","mx":"5","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2014-04-25 01:51:07","use_aqb":"no"},{"id":"114","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"600","value":"f1g1ns1.dnspod.net.","mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2014-01-02 18:11:20","use_aqb":"no","hold":"hold"},{"id":"115","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"10","value":"f1g1ns2.dnspod.net.","mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2014-05-14 20:58:04","use_aqb":"no","hold":"hold"},{"id":"116","name":"www","line":"\u9ed8\u8ba4","type":"A","ttl":"10","value":"1.1.1.1","mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2014-05-14 20:51:20","use_aqb":"no"}]}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章