利用群晖自带的DDNS更改添加自定义DDNS服务商-适合一切非阿里系腾讯系域名使用

利用群晖自带的DDNS更改添加自定义DDNS服务商-适合一切非阿里系腾讯系域名使用

前言

群晖的ddns-go已经满足大部分普通玩家的需求,ddns-go有套件版和docker版。已经支持腾讯、阿里、百度的域名ddns服务。设置简单易用。 但是还有一部分不是阿里腾讯购买的域名该如何在群晖设置ddns呢,理论支持所有域名服务商,因此写个设置教程。 当然也许有更好的方法,也希望我的教程能帮到你。

介绍-关于 He.net DNS

Hurricane Electric 是一家位于美国的全球互联网服务提供商,该公司成立于 1994 年,提供 IPv4 和 IPv6 接入,以及位于美国圣荷西的数据中心服务。该公司是世界上最大的交换中心参与者,其参与的交换中心包括了所有 73 个 Euro-IX 的交换中心。 He.net 同时也提供免费的 DNS 域名解析服务,凭借 Hurricane Electric 强大的服务器与技术实力,He.net DNS 的域名解析服务非常地稳定,并且一直以来 He.net DNS 都是可以免费使用,DNS 支持 A, AAAA, CNAME, MX, NS, TXT, SRV, SSHFP, SPF, RP, NAPTR, HINFO, LOC 和 PTR 等解析记录,同时支持IPv4 和 IPv6,非常全面。每个帐户允许添加 50 个域名,不限制解析记录条数,一般用户是足够使用了。

准备工作

设置注册教程参考:https://help.laoxuehost.com/domain-name/he-net-dns.html 不再赘述

设置

进群晖ssh或者用winscp登入后台后在/usr/syno/bin/ddns目录创建一个新php格式的文件,名字随意。例:henetddns.php 以任何方式打开粘贴以下代码即可。 当然你也可以直接下载我设置好的php文件拖入使用即可 点击下载
#!/usr/bin/php -d open_basedir=/usr/syno/bin/ddns
<?php
$script = (string)$argv[0];
$ret = 'badagent';
if($argc !== 5)
{
  echo $ret;
  syslog(LOG_CRIT, $script.':'.__LINE__.' '.$ret);
  exit();
}
$token = (string)$argv[2];
$hostname = (string)$argv[3];
$ip = (string)$argv[4];
// check the hostname contains '.'
if(strpos($hostname, '.') === false)
{
  echo $ret;
  syslog(LOG_CRIT, $script.':'.__LINE__.' '.$ret);
  exit();
}
// only for IPv4 format
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4))
{
  echo $ret;
  syslog(LOG_CRIT, $script.':'.__LINE__.' '.$ret);
  exit();
}
//$url = 'https://dynv6.com/api/update?hostname='.$hostname.'&ipv4='.$ip.'&token='.$token;
$url = 'https://'.$hostname.':'.$token.'@dyn.dns.he.net/nic/update?hostname='.$hostname.'&myip='.$ip;
echo $url;
syslog(LOG_CRIT, $script.':'.__LINE__.' REQUEST '.$url);
$req = curl_init();
curl_setopt($req, CURLOPT_URL, $url);
curl_setopt($req, CURLOPT_RETURNTRANSFER, TRUE);
$res = curl_exec($req);
curl_close($req);
syslog(LOG_CRIT, $script.':'.__LINE__.' RESPONSE '.$res);
switch(trim($res))
{
  case 'addresses updated':
    $ret = 'good';
    break;
  case "addresses unchanged":
    $ret = 'nochg';
    break;
  case 'hostname not found':
    $ret = 'nohost';
    break;
  default:
    $ret = trim($res);
}
echo $ret;
syslog(LOG_CRIT, $script.':'.__LINE__.' '.$ret);
  • 接着在/etc.defaults/ddns_provider.conf文件中加入以下内容:
[HE_DDNS]
        modulepath=DynDNS
        queryurl=https://dyn.dns.he.net/nic/update?hostname=__HOSTNAME__&myip=__MYIP__

  • 按图设置
  • 然后在DDNS配置中选择HE_DDNS,假设主机名是 abc.example.org ,在主机名和用户名都填写 abc.example.org , 密码处填写HE.NET中生成的TOKEN即可

教程结束

设置成功页面