動態域名解析,縮寫ddns,它不同於我們常用的DNS解析,而是專門用於對付那種沒有固定公網 IP 的服務器地址解析的。
典型的使用情況就是:自家寬帶構建小服務器,沒有固定IP,想要上線,除了寫腳本發郵件外,就只有ddns這一條路可以走了。
目前來說,國內最知名的可能就是出了名的難用不穩定的花生殼了。國外的話有一個dynu也很不錯。
現在阿里雲開放了 API,那麼我們能否使用阿里雲的 API 自行實現一個ddns呢?原理自然很簡單,自己實現一個小客戶端,然後定期獲取自身外網 IP 然後通過 API 去修改一下對應的域名解析就好了!
當然,已經有人做了客戶端這部分的工作(感謝
),用 python 2 實現,所以,它是跨平台的。這裡我們用 Ubuntu 16.04 的vps來做例子。
首先從 github 克隆項目到本地:
1 2 |
Ubuntu:# cd /opt Ubuntu:/opt# git clone https://github.com/rfancn/aliyun-ddns-client.git |
然後把配置文件拷貝到指定位置並編輯:
1 2 3 |
Ubuntu:/opt# cd aliyun-ddns-client/ Ubuntu:/opt/aliyun-ddns-client# cp ddns.conf.example /etc/ddns.conf Ubuntu:/opt/aliyun-ddns-client# vi /etc/ddns.conf |
1 2 3 4 5 6 7 8 9 10 11 12 |
[DEFAULT] access_id = XUG8zYuSMNfieXYZ access_key = qdksYdEFe5ScGgIDcj9hN8KUk2RTXX interval = 600 debug = true [DomainRecord1] domain = logcg.com sub_domain = home type = A id = value = |
這裡,我們需要獲取阿里雲的 API 權限,獲取方法則是登錄阿里雲;
- 在後台首頁頂欄右邊找到“Access Keys”;
- 通過短信驗證之後點擊頁面右上邊按鈕創建一個新的 Access Key;
- 頁面所顯示的Access Key ID和 Access Key Secret 則為所需ID和Key。
獲取到 API 權限之後,我們再繼續來修改配置:
配置中的 間隔 無效不用管, [DomainRecord1] 則是你的域名字段,可以改成對應的名稱用來區別不同的子域而已,如果你要做多個子域的動態解析,那就寫多個字段即可。
針對這個字段裡, 域 為你的域名,主域; sub_domain 為要動態解析的子域,記得提前創建好,解析到任意 IP 即可。
比如說,要動態解析 home.logcg.com,那麼就按照上文的例子填寫。
類型 為解析記錄,比如 A 記錄(例子中的記錄);MX 記錄等。
最後 ID 和 值 留空,讓程序自行完成即可。
編輯完成之後,可以執行 Ubuntu的:/選擇/阿里雲-DDNS-客戶# 蟒蛇 DDNS.PY 來運行,第一次運行會得到錯誤 [錯誤] 您 必須 指定 域 記錄 ID. 沒關係,這是由於我們把 ID 字段留空的結果,程序會自行獲取完成,再執行一次試試看:
1 2 |
Ubuntu:~/aliyun-ddns-client# python ddns.py 2016-06-21 16:01:10 [INFO] Successfully sync done for record:DomainRecord1 |
去後台頁面刷新看看,解析地址已經更新了。
自動同步
那麼,現在我們來利用 Ubuntu 的任務管理來實現域名的動態解析:
1 |
Ubuntu:~# crontab -e |
我們在文件內容末尾追加一行,輸入:
1 |
*/1 * * * * cd /opt/aliyun-ddns-client && /usr/bin/python ddns.py |
這句表示每隔一分鐘,進入程序目錄(我們之前克隆客戶端的目錄),然後執行程序進行一次更新。
好了,至此我們的 home.logcg.com 域名就成了動態解析✌️
本文由 落格博客 原創撰寫:落格博客 » 利用阿里雲域名管理 API 實現 動態域名解析 ddns
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1768.html
這個蠻好的,對linux新手來說沒那麼複雜。一次就成功了
感謝。。。。
不能解析泛域名啊
我感覺這個對我有用,先馬克個
搞定了, 打上了PY的幾個Requests的包,就解決了 ,謝謝。
哈哈好吧,使用 python 的時候一定要注意版本和缺失包, 沒有 模 命名 XXX
碰到新問題,,,,
Ubuntu的@ Ubuntu的:/選擇/阿里雲,DDNS客戶端$蟒蛇ddns.py
未能得到有效的域名記錄信息
2016-07-08 23:30:14 [錯誤] 無法匹配遠程域記錄 http://www.wixxz.com
2016-07-08 23:30:14 [錯誤] 失敗做備案首次同步:DomainRecord1
在找原因中,,,,
不應該加 HTTP://,直接寫域名,哦, 萬維網.也不應該加的呀!哦對了,這個腳本不是我寫的哈,是rfancn
把阿里雲的返回數據打印出來看看
我的情況是時間錯誤
或者試試這個
https://github.com/shellc/aliyun-ddns
後來用原軟件解決了,是權限問題 3Q。
我也是這種問題,想請問一下怎麼解決的啊?謝謝
leolindaming@hotmail.com
Git了你的Aliyun-DDNS-client這個東東在應用的時候 出現了以下錯誤,博主有空的話幫看看喲, 我郵箱3117821@qq.com
Ubuntu的@ Ubuntu的:/選擇/阿里雲,DDNS客戶端$蟒蛇ddns.py
追溯 (最新最後調用):
文件 “ddns.py”, 線 21, 在
從進口幫手DDNSHelper
文件 “/選擇/阿里雲,DDNS客戶端/ helper.py”, 線 20, 在
從utils的進口DDNSUtils
文件 “/選擇/阿里雲,DDNS客戶端/ utils.py”, 線 20, 在
進口要求
導入錯誤: 無模塊命名請求
結束