adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...
【好玩的網(wǎng)絡(luò)】系列面向普通人的網(wǎng)絡(luò)科普視頻。我在我的嗶哩嗶哩賬號(up主:旋律果子)更新【好玩的網(wǎng)絡(luò)】視頻版,在我的知乎(用戶:曾彥)專欄更新【好玩的網(wǎng)絡(luò)】文字版。最新消息以及預(yù)告在我的個人網(wǎng)站www.yzeng1995.top發(fā)布,大家可以關(guān)注我的嗶哩嗶哩(旋律果子)和知乎賬號(曾彥)。其中,我的知乎專欄歡迎網(wǎng)絡(luò)愛好者的投稿以及補充。
本期B站視頻連接:【好玩的網(wǎng)絡(luò)-第5期】寶藏up分享自編ddns程序,17行代碼輕松實現(xiàn)免費通用ddns,服務(wù)器/NAS小伙伴的福音_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili
大家好,我是你們的小伙伴果子。我相信這一期視頻大家已經(jīng)期待很久了!
好了,廢話不多說,直接進入今天的正題。第4期視頻,我簡要介紹了dns與ddns的原理,也準備將我自己開發(fā)的ddns程序免費分享給大家。這一期,我介紹一下我自己開發(fā)的程序的原理以及使用方法。
1.原理以及優(yōu)勢
我的ddns程序的原理是通過調(diào)用dns服務(wù)商dnspod的api接口實現(xiàn)更新IP地址。Dnspod提供的服務(wù)是完全免費的,穩(wěn)定性也非常不錯,而且不受三級域名名稱和數(shù)量的限制。這里所指的三級域名指的是類似上一期所講到的www,picture等域名。你可以輕輕松松創(chuàng)建足夠多的三級域名進行解析。
三級域名2.使用的開發(fā)語言以及功能簡介
程序使用的是shell script語言(bash),也就是linux系統(tǒng)最開始的那個命令行界面。這個程序在linux、mac等支持bash環(huán)境的系統(tǒng)都能運行,通常,系統(tǒng)自帶的環(huán)境已經(jīng)足夠,不需要安裝其他依賴。經(jīng)過測試,程序也運行的相當(dāng)穩(wěn)定,自從開發(fā)好之后就沒出現(xiàn)過問題,我也至少有5個服務(wù)器都是在用這個程序。對于程序安全性也無需擔(dān)心,因為它是開源的,你可以自己去查看代碼或者修改代碼。不過這個腳本暫時只支持ipv4的ddns,因為我家暫時沒有公網(wǎng)ipv6地址,后期有需要再加。另外,如果你知道武漢電信家庭寬帶有ipv6,歡迎在彈幕和評論區(qū)留言,或者給我發(fā)私信,非常感謝。
程序的開發(fā)語言為bash script3.程序?qū)崿F(xiàn)過程以及使用方法
現(xiàn)在就來看看我是如何用17行代碼實現(xiàn)ddns的吧。大家初看這個程序,可能感覺挺復(fù)雜,但其實原理非常簡單,稍作解釋就能明白。程序的第一行直接聲明了程序的運行環(huán)境為bash shell,沒錯,就是你打開的那個命令行,linux系統(tǒng)的初始環(huán)境。第一個代碼塊需要填寫dnspod服務(wù)商的認證信息,這個信息在dnspod官網(wǎng)上進行申請,相當(dāng)于賬號和密碼。
程序需要填寫的信息Domain這一項應(yīng)該填寫你所購買的二級域名,一般具有以下形式。Subdomain這一行需要填寫子域名,也就是三級域名,只填寫第一部分,如www。下面的程序看著挺復(fù)雜,不用去管它,其主要功能是從dnspod中獲取當(dāng)前子域名的A記錄,也就是dns服務(wù)器中記錄的ip地址。下一個代碼塊主要是是獲得當(dāng)前實際的公網(wǎng)IP。最后程序判斷當(dāng)前實際IP地址和服務(wù)器中解析的地址是否一致。如果一致則不進行操作,因為dns服務(wù)器會限制不正常操作的次數(shù),在真實IP和記錄ip相同的情況下強制調(diào)用api就屬于不正常操作。因此,只有在IP地址不一致時,才會修改dns服務(wù)器中的地址為當(dāng)前實際的公網(wǎng)IP地址。
獲取A記錄以及判斷IP是否需要更新為了避免api被濫用,賬號被封禁,因此應(yīng)判斷ip地址是否發(fā)生改變原理很簡單吧,使用起來也非常的easy。我們只需要填寫認證信息和子域名信息,再將程序添加到系統(tǒng)的定時任務(wù)中去,就能夠?qū)崿F(xiàn)ddns解析了。如果有不明白的,請暫停下來看操作。
使用程序只需要修改3行4.操作步驟總結(jié)
我們來具體演示關(guān)鍵步驟:第1步,需要在域名注冊商添加dns主機記錄為dnspod的主機記錄,并等待要求等待的時間,一般為72個小時。
在哪里購買的域名就在哪個網(wǎng)站的管理控制臺里找第2步,我們進入dnspod的官網(wǎng),將購買的二級域名添加到dnspod中。
將購買的二級域名添加到dnspod中第3步,在管理控制臺中創(chuàng)建認證信息。
在dnspod管理控制臺中創(chuàng)建認證信息第4步,我們進入域名解析中,新添加一條A記錄,并設(shè)置好三級域名,地址任意填寫一個ipv4地址,其他默認即可,點擊確認。
新添加一條A記錄,并設(shè)置好三級域名第5步,將api調(diào)用的密鑰和需要解析的二級域名和三級域名填寫入程序,運行一次程序進行測試,觀察dnspod管理頁面中的ip地址是否變?yōu)楫?dāng)前的公網(wǎng)IP地址。
第6步,我們將這個程序加入到系統(tǒng)定時任務(wù)中去。例如在linux系統(tǒng)中打開這個目錄(/etc/crontab),添加一行自動執(zhí)行的記錄。
將程序添加到系統(tǒng)的定時任務(wù)中#/etc/crontab中定時任務(wù): */10 * * * * root /usr/local/sbin/dnspod_ddns.sh 1>&2> /dev/null這樣我們就配置好了。非常的easy。這個程序我會放到視頻簡介中,在我的github中也能找到。如果使用過程中遇到問題,請在評論區(qū)留言。文字版教程我也會發(fā)布在B站專欄和知乎專欄中,感興趣的小伙伴可以關(guān)注我,以免錯失最新消息。我也建立了一個qq交流群1084369522,歡迎大家加入討論。
這就是本期視頻的全部內(nèi)容了,希望能幫助到大家。如果本期視頻三連數(shù)量超過3000,我會將ipv6功能也加進去,再做個教程。感謝大家的支持~~
本人網(wǎng)站www.yzeng1995.top
程序下載:(大家有興趣可以數(shù)數(shù)有用的代碼是不是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總結(jié)
以上是生活随笔為你收集整理的adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c 将数字数组转成字符串_C+|用指针指
- 下一篇: 防沉迷人脸识别可以扫照片吗_人脸识别的智