adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...
【好玩的網絡】系列面向普通人的網絡科普視頻。我在我的嗶哩嗶哩賬號(up主:旋律果子)更新【好玩的網絡】視頻版,在我的知乎(用戶:曾彥)專欄更新【好玩的網絡】文字版。最新消息以及預告在我的個人網站www.yzeng1995.top發布,大家可以關注我的嗶哩嗶哩(旋律果子)和知乎賬號(曾彥)。其中,我的知乎專欄歡迎網絡愛好者的投稿以及補充。
本期B站視頻連接:【好玩的網絡-第5期】寶藏up分享自編ddns程序,17行代碼輕松實現免費通用ddns,服務器/NAS小伙伴的福音_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili
大家好,我是你們的小伙伴果子。我相信這一期視頻大家已經期待很久了!
好了,廢話不多說,直接進入今天的正題。第4期視頻,我簡要介紹了dns與ddns的原理,也準備將我自己開發的ddns程序免費分享給大家。這一期,我介紹一下我自己開發的程序的原理以及使用方法。
1.原理以及優勢
我的ddns程序的原理是通過調用dns服務商dnspod的api接口實現更新IP地址。Dnspod提供的服務是完全免費的,穩定性也非常不錯,而且不受三級域名名稱和數量的限制。這里所指的三級域名指的是類似上一期所講到的www,picture等域名。你可以輕輕松松創建足夠多的三級域名進行解析。
三級域名2.使用的開發語言以及功能簡介
程序使用的是shell script語言(bash),也就是linux系統最開始的那個命令行界面。這個程序在linux、mac等支持bash環境的系統都能運行,通常,系統自帶的環境已經足夠,不需要安裝其他依賴。經過測試,程序也運行的相當穩定,自從開發好之后就沒出現過問題,我也至少有5個服務器都是在用這個程序。對于程序安全性也無需擔心,因為它是開源的,你可以自己去查看代碼或者修改代碼。不過這個腳本暫時只支持ipv4的ddns,因為我家暫時沒有公網ipv6地址,后期有需要再加。另外,如果你知道武漢電信家庭寬帶有ipv6,歡迎在彈幕和評論區留言,或者給我發私信,非常感謝。
程序的開發語言為bash script3.程序實現過程以及使用方法
現在就來看看我是如何用17行代碼實現ddns的吧。大家初看這個程序,可能感覺挺復雜,但其實原理非常簡單,稍作解釋就能明白。程序的第一行直接聲明了程序的運行環境為bash shell,沒錯,就是你打開的那個命令行,linux系統的初始環境。第一個代碼塊需要填寫dnspod服務商的認證信息,這個信息在dnspod官網上進行申請,相當于賬號和密碼。
程序需要填寫的信息Domain這一項應該填寫你所購買的二級域名,一般具有以下形式。Subdomain這一行需要填寫子域名,也就是三級域名,只填寫第一部分,如www。下面的程序看著挺復雜,不用去管它,其主要功能是從dnspod中獲取當前子域名的A記錄,也就是dns服務器中記錄的ip地址。下一個代碼塊主要是是獲得當前實際的公網IP。最后程序判斷當前實際IP地址和服務器中解析的地址是否一致。如果一致則不進行操作,因為dns服務器會限制不正常操作的次數,在真實IP和記錄ip相同的情況下強制調用api就屬于不正常操作。因此,只有在IP地址不一致時,才會修改dns服務器中的地址為當前實際的公網IP地址。
獲取A記錄以及判斷IP是否需要更新為了避免api被濫用,賬號被封禁,因此應判斷ip地址是否發生改變原理很簡單吧,使用起來也非常的easy。我們只需要填寫認證信息和子域名信息,再將程序添加到系統的定時任務中去,就能夠實現ddns解析了。如果有不明白的,請暫停下來看操作。
使用程序只需要修改3行4.操作步驟總結
我們來具體演示關鍵步驟:第1步,需要在域名注冊商添加dns主機記錄為dnspod的主機記錄,并等待要求等待的時間,一般為72個小時。
在哪里購買的域名就在哪個網站的管理控制臺里找第2步,我們進入dnspod的官網,將購買的二級域名添加到dnspod中。
將購買的二級域名添加到dnspod中第3步,在管理控制臺中創建認證信息。
在dnspod管理控制臺中創建認證信息第4步,我們進入域名解析中,新添加一條A記錄,并設置好三級域名,地址任意填寫一個ipv4地址,其他默認即可,點擊確認。
新添加一條A記錄,并設置好三級域名第5步,將api調用的密鑰和需要解析的二級域名和三級域名填寫入程序,運行一次程序進行測試,觀察dnspod管理頁面中的ip地址是否變為當前的公網IP地址。
第6步,我們將這個程序加入到系統定時任務中去。例如在linux系統中打開這個目錄(/etc/crontab),添加一行自動執行的記錄。
將程序添加到系統的定時任務中#/etc/crontab中定時任務: */10 * * * * root /usr/local/sbin/dnspod_ddns.sh 1>&2> /dev/null這樣我們就配置好了。非常的easy。這個程序我會放到視頻簡介中,在我的github中也能找到。如果使用過程中遇到問題,請在評論區留言。文字版教程我也會發布在B站專欄和知乎專欄中,感興趣的小伙伴可以關注我,以免錯失最新消息。我也建立了一個qq交流群1084369522,歡迎大家加入討論。
這就是本期視頻的全部內容了,希望能幫助到大家。如果本期視頻三連數量超過3000,我會將ipv6功能也加進去,再做個教程。感謝大家的支持~~
本人網站www.yzeng1995.top
程序下載:(大家有興趣可以數數有用的代碼是不是17行)
https://github.com/yzeng1995/fast_set_centos/blob/master/usr_local_sbin/dnspod_ddns.sh
#!/bin/bash# This program establish ddns service # to modify the public ip address of dns server. # The dns server is dnspod.TOKEN="177,4e" DOMAIN="y5.t" SUB_DOMAIN="test"# TOKEN=`cat dnspod_ddns.conf|grep TOKEN|awk -F'=' '{print $2}'` # DOMAIN=`cat dnspod_ddns.conf|grep -e '^DOMAIN'|awk -F'=' '{print $2}'` # SUB_DOMAIN=`cat dnspod_ddns.conf|grep SUB_DOMAIN|awk -F'=' '{print $2}'`DATA="login_token=$TOKEN&format=json&domain=$DOMAIN&sub_domain=$SUB_DOMAIN&record_type=A&offset=0&length=3" JOSN_RECORDS=`curl -s -X POST https://dnsapi.cn/Record.List -d $DATA`RECORD_ID=`echo $JOSN_RECORDS|sed '/id/ s/.*id":"(.*)","ttl.*/1/'` LINE_ID=`echo $JOSN_RECORDS|sed '/line_id/ s/.*line_id":"(.*)","type.*/1/'` #=================get record ip IP_RESOLVED=`echo $JOSN_RECORDS|sed '/value/ s/.*value":"(.*)","enabled.*/1/'`#================get real ip REAL_IP=`cat</dev/tcp/ns1.dnspod.net/6666` #REAL_IP="2.2.3.2" if [ $REAL_IP != $IP_RESOLVED ]; then#================modify recordDATA="login_token=$TOKEN&format=json&domain=$DOMAIN&record_id=$RECORD_ID&sub_domain=$SUB_DOMAIN&value=$REAL_IP&record_type=A&record_line_id=$LINE_ID"# echo $DATAJSON_RESULT=`curl -s -X POST https://dnsapi.cn/Record.Modify -d $DATA`echo $JSON_RESULT >> /var/log/dnspod_ddns.logIP_RESOLVED=$REAL_IP fi總結
以上是生活随笔為你收集整理的adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c 将数字数组转成字符串_C+|用指针指
- 下一篇: 防沉迷人脸识别可以扫照片吗_人脸识别的智