|
我现在用修改群晖自定义DDNS配置,强力推荐。
ssh连接到群晖
修改/etc/ddns_provider.conf,在文件最后增加以下内容:
[USER_dynv6]
queryurl=https://dynv6.net
modulepath=/usr/syno/bin/ddns/dynv6.php
website=https://dynv6.com
复制代码
将附件中的dynv6.php放到 /usr/syno/bin/ddns 目录下。用chmod修改权限为755。
到控制面板->外部访问->DDNS->新增
选"*dynv6",主机名称填写申请到的二级域名如:xxxx.dynv6.net
用户名随便写,没用到;密码/密钥填写:token。
这种方式使用群晖的更新机制,应该只有在开机及IP地址变化时才会更新,测试过不影响硬盘休眠。
而且是在本机取得IPV6地址后直接设置给服务器,目前未发现有更新出错的情况。
dynv6.php 以下代码:
#!/usr/bin/php -d open_basedir=/usr/syno/bin/ddns
<?php
if ($argc !== 5) {
echo 'badparam';
exit();
}
$account = $argv[1];
$token = (string)$argv[2];
$hostname = (string)$argv[3];
$ip = (string)$argv[4];
$netmask = 128;
$dev = 'dev eth0';
// check the hostname contains '.'
if (strpos($hostname, '.') === false) {
echo 'badparam';
exit();
}
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
$ip = 'auto';
}
exec("ip -6 addr list scope global | grep -v \" fd\" | sed -n 's/.*inet6 \\([0-9a-f:]\\+\\).*/\\1/p' | head -n 1", $out, $stats);
$ipv6 = $out[0];
if (!filter_var($ipv6, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo 'badparam';
exit();
}
$url = 'https://dynv6.com/api/update?hostname='.$hostname.'&ipv6='.$ipv6.'&token='.$token;
$req = curl_init();
curl_setopt($req, CURLOPT_URL, $url);
curl_setopt($req, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($req);
curl_close($req);
echo 'res:[' . $res . ']';
switch(trim($res)) {
case 'addresses updated':
echo 'good';
break;
case 'invalid authentication token':
echo 'badauth';
break;
case 'hostname not found':
echo 'nohost';
break;
case 'addresses unchanged':
echo 'nochg';
break;
default:
echo 'badconn';
break;
}
现在问题是不能IPV6无法访问,插拔一下网口就正常访问了,过2天访问又不行了,我有IPV4公网IP的,现在只想用IPV6访问,在浏览器直接访问https://dynv6.com/api/update?hostname=你的域名&ipv6=你的IPV6地址&token=你的token 能正常更新的,dynv6官网记录只显示一条AAAA记录 是IPV6地址,请问这是啥情况呀?
|
|