余利区

 找回密码
 立即注册
查看: 73|回复: 0

自编ddns程序/免费/支持IPv4/IPv6/附操作步骤,服务器、nas ...

[复制链接]

3

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-12-31 13:15:53 | 显示全部楼层 |阅读模式
标题:自编ddns程序/免费/支持IPv4/IPv6/附操作步骤,服务器、nas玩家看过来!【好玩的网络-第5期】
摘要:自编ddns程序,开源、免费分享,附原理、操作步骤,服务器、nas玩家必备,远程访问必备!
如何自己编写一个DDNS程序
DDNS代码讲解
DDNS如何配置
支持几乎所有linux系统主机、软路由、服务器。
支持Centos/Ubuntu等服务器,Openwrt等软路由,NAS系统,MacOS系统
支持IPV4和IPV6,IPV6的配置方法和IPV4一致。
程序代码下载:点击文末小尾巴



本期视频传送门:分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音




本系列视频/图文

<hr/>
大家好,我是你们的小伙伴果子。
第4期视频,简要介绍了dns与ddns的原理,这一期,介绍果子自己开发的ddns程序的原理以及使用方法, 免费分享给大家。为了避免api改版失效,想获得最新版本,关注博主,点点小尾巴即可。

1.原理以及优势



果子的ddns程序的原理是通过调用dns服务商dnspod的api接口实现更新IP地址。




Dnspod提供的服务是完全免费的,稳定性也非常不错,而且不受三级域名名称和数量的限制。这里所指的三级域名指的是类似上一期所讲到的www,picture等域名。你可以轻轻松松创建足够多的三级域名进行解析。




三级域名



2.使用的开发语言以及功能简介



程序使用的是shell script语言(bash),也就是linux系统最开始的那个命令行界面。这个程序在linux、mac等支持bash环境的系统都能运行,通常,系统自带的环境已经足够,不需要安装其他依赖。




程序的开发语言为bash script



经过测试,程序也运行得相当稳定,自从开发好之后就没出现过问题,我也至少有5个服务器都是在用这个程序。



对于程序安全性也无需担心,因为它是开源的,你可以自己去查看代码或者修改代码。
果子分享的脚本支持IPv4/IPv6的ddns。

3.程序实现过程以及使用方法



现在就来看看果子是如何用17行代码实现ddns的吧。大家初看这个程序,可能感觉挺复杂,但其实原理非常简单,稍作解释就能明白。




程序需要填写的信息


程序的第一行直接声明了程序的运行环境为bash shell,




没错,就是你打开的那个命令行,linux系统的初始环境。




第一个代码块需要填写dnspod服务商的认证信息,




这个信息在dnspod官网上进行申请,相当于账号和密码。







Domain这一项应该填写你所购买的二级域名,



一般具有以下形式。




Subdomain这一行需要填写子域名,




也就是三级域名,只填写第一部分,如www。




下面的程序看着挺复杂,不用去管它,




其主要功能是从dnspod中获取当前子域名的A记录,也就是dns服务器中记录的ip地址。




下一个代码块主要是是获得当前实际的公网IP。






最后程序判断当前实际IP地址和服务器中解析的地址是否一致。




如果一致则不进行操作,因为dns服务器会限制不正常操作的次数,在真实IP和记录ip相同的情况下强制调用api就属于不正常操作。




为了避免api被滥用,账号被封禁,因此应判断ip地址是否发生改变



因此,只有在IP地址不一致时,才会修改dns服务器中的地址为当前实际的公网IP地址。




获取A记录以及判断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。
这个程序,请关注博主,点点小尾巴。如果使用过程中遇到问题,请在评论区留言。感兴趣的小伙伴可以关注博主,以免错失最新消息。

麻辣小鱼干/程序下载:(大家有兴趣可以数数有用的代码是不是17行)
下面是IPv4 ddns的代码,为了避免api改版失效,想获得最新版本以及IPv6代码请关注博主,点点小尾巴!

#!/bin/bash  # This program establish ddns service # to modify the public ip address of dns server. # The dns server is dnspod. # /etc/crontab # if centos etc. # */10 * * * * root /usr/local/sbin/dnspod_ddns.sh 1>&2> /dev/null # /etc/crontabs/root # if openwrt etc. # */10 * * * * /usr/sbin/dnspod_ddns.sh  TOKEN="1,44e" DOMAIN="y5.p" 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 -4 -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=`curl -4 -s  myip.ipip.net|awk -F' |:' '{print $3}'`  #REAL_IP="2.2.3.2" if [ $REAL_IP != $IP_RESOLVED ]; then         #================modify record         DATA="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 $DATA         JSON_RESULT=`curl -4 -s -X POST https://dnsapi.cn/Record.Modify -d $DATA`         echo $JSON_RESULT >> /var/log/dnspod_ddns.log         IP_RESOLVED=$REAL_IP fi
图文编辑:旋律果子 猫小爪
旋律果子: 网络Geek/Linux开发者/中国科学院大学在读博士/科技数码博主/国家水利水电二级建造师/优质科技领域创作者
常驻小尾巴:
-------------------
作者介绍与教程列表(知识空间):教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

云顶设计嘉兴有限公司模板设计.

免责声明:本站上数据均为演示站数据,如购买模板可以上DISCUZ应用中心购买,欢迎惠顾.

云顶官方站点:云顶设计 模板原创设计:云顶模板   Powered by Discuz! X3.4© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表