群晖ddns ipv6 ipv4 (ddnsipv6识别到ipv4)

#头条群星10月榜#

标题:自编ddns程序/免费/支持IPv4/IPv6/附操作步骤,服务器、nas玩家看过来!【好玩的网络-第5期】

摘要:自编ddns程序,开源、免费分享,附原理、操作步骤,支持IPv4/IPv6,服务器、nas玩家必备,远程访问必备!

- 如何自己编写一个DDNS程序

- DDNS代码讲解

- DDNS如何配置

- 支持几乎所有linux系统主机、软路由、服务器。

- 支持Centos/Ubuntu等服务器,Openwrt等软路由,NAS系统,MacOS系统

- 支持IPV4和IPV6,IPV6的配置方法和IPV4一致。

文末附ddns程序*载下**方式!

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

本系列视频/图文

大家好,我是你们的小伙伴果子。

第4期视频,简要介绍了 dns与ddns 的原理,这一期,介绍果子自己开发的ddns程序的原理以及使用方法, 免费分享给大家。 为了避免api改版失效, 关注博主,私信“ddns”,获取最新版

1.原理以及优势

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

三级域名

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

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

程序的开发语言为bash script

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

对于程序安全性也无需担心,因为它是开源的,你可以自己去查看代码或者修改代码。

果子分享的脚本支持IPv4/IPv6的ddns。

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

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

程序需要填写的信息

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

自建ddns解析服务器连接nas,ddnsipv6ipv4

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

一般具有以下形式。

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

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

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

自建ddns解析服务器连接nas,ddnsipv6ipv4

获取A记录以及判断IP是否需要更新

原理很简单吧,使用起来也非常的easy。我们只需要填写认证信息和子域名信息,再将程序添加到系统的定时任务中去,就能够实现ddns解析了。如果有不明白的,请暂停下来看操作。

自建ddns解析服务器连接nas,ddnsipv6ipv4

使用程序只需要修改3行

自建ddns解析服务器连接nas,ddnsipv6ipv4

4.操作步骤总结

自建ddns解析服务器连接nas,ddnsipv6ipv4

我们来具体演示关键步骤:第1步,需要在域名注册商添加dns主机记录为dnspod的主机记录,

自建ddns解析服务器连接nas,ddnsipv6ipv4

并等待要求等待的时间,一般为72个小时。

自建ddns解析服务器连接nas,ddnsipv6ipv4

在哪里购买的域名就在哪个网站的管理控制台里找

第2步,我们进入dnspod的官网,将购买的二级域名添加到dnspod中。

自建ddns解析服务器连接nas,ddnsipv6ipv4

自建ddns解析服务器连接nas,ddnsipv6ipv4

将购买的二级域名添加到dnspod中

第3步,在管理控制台中创建认证信息。

自建ddns解析服务器连接nas,ddnsipv6ipv4

在dnspod管理控制台中创建认证信息

第4步,我们进入域名解析中,新添加一条A记录,并设置好三级域名,地址任意填写一个IPv4地址,其他默认即可,点击确认。

自建ddns解析服务器连接nas,ddnsipv6ipv4

新添加一条A记录,并设置好三级域名

第5步,将api调用的密钥和需要解析的二级域名和三级域名填写入程序,

自建ddns解析服务器连接nas,ddnsipv6ipv4

自建ddns解析服务器连接nas,ddnsipv6ipv4

运行一次程序进行测试,观察dnspod管理页面中的ip地址是否变为当前的公网IP地址。

自建ddns解析服务器连接nas,ddnsipv6ipv4

第6步,我们将这个程序加入到系统定时任务中去。例如在linux系统中打开这个目录(/etc/crontab),添加一行自动执行的记录。

自建ddns解析服务器连接nas,ddnsipv6ipv4

将程序添加到系统的定时任务中

#/etc/crontab中定时任务:
*/10 * * * * root /usr/local/sbin/dnspod_ddns.sh 1>&2> /dev/null

这样我们就配置好了。非常的easy。这个程序,请关注博主,私信“ddns”。如果使用过程中遇到问题,请在评论区留言。感兴趣的小伙伴可以关注博主,以免错失最新消息。

自建ddns解析服务器连接nas,ddnsipv6ipv4

程序*载下**

麻辣小鱼干/程序*载下**:(大家有兴趣可以数数有用的代码是不是17行)

下面是IPv4 ddns的代码, 为了避免api改版失效想获得最新版本以及 IPv6代码请关注博主,私信“ddns”

#!/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开发者/中国科学院大学在读博士/科技数码博主/国家水利水电二级建造师/优质科技领域创作者