用PHP搞掂黑群晖IPv6的DNSPod解析【7月23日更新,支持v4和v6】

3 篇文章 0 订阅
1 篇文章 0 订阅

无意中客服给我开了ipv4的公网,那就继续写个ipv4的,哈哈~~增加IPV4的A记录更新,可以同时更新A记录和AAAA记录

源码不放了,毛点积分哈哈,下载点这里 https://download.csdn.net/download/alinathz/86248707
在这里插入图片描述

=============================================================================================
最近在玩黑群晖,所以有段时间没更新了,黑裙真的没点知识的还真玩不起来。

昨晚在家里虚拟机测试了用sh脚本来搞DNSPod解析,今天在物理机上发现不能用~~~~wocao…仔细看了下记录,发现物理机里的wget版本过低,没法用TLSv1_2,尝试了用ipkg安装wget-ssl,发现也是没卵用,因为安装下来的版本还是没法用TLSv1_2,准备放弃的时候灵光一闪,直接用php来处理完事。

先简单说一下:php文件只支持腾讯云的DNSPod,也只支持IPv6,v4的就用群晖自带的吧。本帖最下面提供DNSPod.php文件下载和源码,积分有多的点下载给个1分,哈哈~,步骤如下:

1、如果你的域名在腾讯云,直接登录域名解析控制台,添加一个AAAA记录(ipv6)的子域名;

2、进入 API秘钥,创建秘钥,然后把ID和TOKEN记录下来。

3、下载 DNSPod.php,修改最上面的3个变量:
如API的ID为:123456
TOKEN为:fgd897dfg789sdgahu43jkfg89dj4332g
主域名:126.com
子域名:mail
填写如下:

$token = '123456,fgd897dfg789sdgahu43jkfg89dj4332g';
$domain = '126.com';
$sub_name = 'mail';

4、用黑群晖里面的File Station把修改好的DNSPod.php上传到 home 目录下,也可以上传到你自己的目录,自己能找到就行,随意!
在这里插入图片描述
5、打开 控制面板 =》信息中心 =》任务计划

6、新增 =》 计划的任务 =》用户定义的脚本

7、在计划选项卡中,设置运行频率:每5分钟,最后运行时间:23:55
在这里插入图片描述
8、在任务设置选项卡中设置脚本命令:php /volume1/homes/你的用户名/DNSPod.php
在这里插入图片描述
9、最后,最后当然是点确定啦!!然后如果想看结果,可以查看计划任务的日志,或者用SSH登录到群晖,直接运行php /volume1/homes/你的用户名/DNSPod.php查看结果。
在这里插入图片描述
SSH登录后运行的结果:
在这里插入图片描述

好了,不用在担心找不到你的nas了!!!

下载 :DNSPod.php

源码如下:

<?php
/**
 *
 * 只支持 腾讯云DNSPod,同时也只支持IPV6
 *
 * 将该php文件上传到群晖,然后添加到任务计划即可
 * 详细使用方法和疑问,请访问:https://blog.csdn.net/alinathz/article/details/125602194
 *
 *
 * 修改下面3个变量即可
 * $token 为接口的 id,token(中间用英文逗号相连)
 * $domain 为主域名
 * $sub_name 为子域名前缀,如mail.126.com,则改为mail
 */


$token = '123456,fgd897dfg789sdgahu43jkfg89dj4332g';
$domain = '126.com';
$sub_name = 'mail';


$dns = new DdnsPod($token,$domain,$sub_name);

$dns->dnsCheck();

/**
 * DDNSPOD 类
 */
class DdnsPod{
	private $token, $domain, $sub_name;
	public function __construct($token,$domain,$sub_name)
    {
        $this->token = $token;
        $this->domain = $domain;
        $this->sub_name = $sub_name;
    }
    /**
     * [检查更新dns]
     * @return [type] [description]
     */
	public function dnsCheck(){
		$localIp = $this->getIpv6();
		$dnsInfo = $this->dnsInfo();
		echo "###########################################################################".PHP_EOL;
		echo '# 设备地址:'.$localIp.PHP_EOL;
		echo '# 解析记录:'.$this->sub_name.'.'.$this->domain.' => '.$dnsInfo['ip'].PHP_EOL;
		if ($localIp == $dnsInfo['ip']) {
			echo '# 处理结果:当前设备地址与解析记录一致,无须更新...'.PHP_EOL;
		}else{
			$rs = $this->dnsUpdate($dnsInfo['id'], $localIp);
			if ($rs['code'] == '1') {
				echo '# 处理结果:更新成功...'.PHP_EOL;
				echo '# 修改记录:'.$this->sub_name.'.'.$this->domain.' => '.$localIp.PHP_EOL;
			}
		}
		echo "###########################################################################".PHP_EOL;
	}
	/**
	 * [更新dns]
	 * @return [type] [description]
	 */
	public function dnsUpdate($id, $ip){
		$str = 'domain='.$this->domain.'&record_id='.$id.'&sub_domain='.$this->sub_name.'&record_type=AAAA&record_line=默认&value='.$ip;
		list($httpCode, $response) = $this->apiPost('Record.Modify', $str);
		$json = json_decode($response, true);
		if ($json['status']['code'] == '1') {
			return ['code' =>$json['status']['code'], 'msg'=>$json['record']['value']];
		}else{
			return ['code' =>$json['status']['code'], 'msg'=>$json['status']['message']];
		}
	}
	/**
	 * [获取公网ipv6]
	 * @return [字符串] ipv6字符串
	 */
	public function getIpv6(){
		exec("ifconfig", $out, $stats);
		foreach($out as $value){
			$tmp = explode('inet6 addr:',$value);
			$tmp1 = explode(':',trim($tmp[1]));
			if ($tmp1[0] != 'fe80' && !empty($tmp1[0])) {
				list($ipv6) = explode('/', trim($tmp[1]));
				return $ipv6;
			}
		}
	}
	/**
	 * [获取dns信息]
	 * @return [数组] id,type,ip,name
	 */
	public function dnsInfo(){
		$str = 'domain='.$this->domain.'&sub_name_domain='.$this->sub_name.'&record_type=AAAA';
		list($httpCode, $response) = $this->apiPost('Record.List', $str);
		$json = json_decode($response, true);
		if ($json['status']['code'] != '1') {
			echo '错误:'.$json['status']['message'].PHP_EOL;
			exit();
		}else{
			if (count($json['records']) > 0) {
				$rs = '';
				foreach($json['records'] as $key => $value){
					if ($value['type'] == 'AAAA' && $value['name'] == $this->sub_name) {
						$rs = ['id' => $value['id'], 'type'=>$value['type'], 'ip'=>$value['value'], 'name'=> $value['name']];
						continue;
					}
				}
				if (!empty($rs)) {
					return $rs;
				}else{
					echo '错误:找不到域名 '.$this->sub_name.'.'.$this->domain.' 的AAAA记录...'.PHP_EOL;
					exit();
				}
			}else{
				echo '错误:找不到域名 '.$this->sub_name.'.'.$this->domain.' 的AAAA记录...'.PHP_EOL;
				exit();
			}
		}
	}
	/**
	 * [apiPost description]
	 * @param  [字符串]  $handler   [操作]
	 * @param  [字符串]  $parameter [参数]
	 * @return [数组]
	 */
	public function apiPost($handler, $parameter)
	{
		$url = 'https://dnsapi.cn/'.$handler;
		$parameter = 'login_token='.$this->token.'&format=json&'.$parameter;
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $parameter);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
		$response = curl_exec($ch);
		$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		curl_close($ch);
		return array($httpCode, $response);
	}
}
?>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: DNSPod是国内领先的DNS服务提供商,其技术架构主要包括以下几个方面: 1. DNSPod采用了分布式架构,部署了多个DNS服务器,通过智能DNS解析算法将用户的请求分配到最近的服务器上,从而提高了访问速度和稳定性。 2. DNSPod使用高性能的DNS解析软件,如PowerDNS和Unbound,这些软件具有较高的并发处理能力和缓存机制,可以有效地提高DNS解析效率。 3. DNSPod还采用了多层缓存机制,包括本地DNS缓存、ISP DNS缓存和DNSPod服务器缓存,从而降低了DNS解析的延迟时间。 4. DNSPod还提供了多种安全性保障措施,如DDoS攻击防御、DNS劫持检测和防御、DNSSEC数字签名等,保证了用户的DNS服务安全可靠。 总的来说,DNSPod技术架构采用了现代化的分布式架构、高性能软件、多层缓存机制和安全性保障措施,这些技术手段保证了DNSPod的高效稳定和安全可靠。 ### 回答2: dnspod 是一种基于云技术的域名解析服务平台,它的技术架构主要分为三个层次:用户接入层、解析请求层和数据存储层。 在用户接入层,dnspod 提供了简洁友好的用户界面和丰富的 API 接口,方便用户管理域名和解析记录。用户可以通过网页或者 API 接口对域名进行添加、删除、修改等操作,也可以设置解析记录、域名锁定等功能。 解析请求层是 dnspod 的核心技术层。它使用了分布式系统的架构,通过在全球各地部署的服务器节点接收和处理来自用户的解析请求。这些服务器会根据用户设定的解析记录,将解析请求解析成具体的 IP 地址,并将解析结果返回给用户的设备,从而实现域名解析dnspod 根据智能负载均衡算法,选择距离用户最近的服务器节点进行解析操作,提高解析速度和可靠性。 在数据存储层,dnspod 使用了高可用性分布式数据库和缓存技术。它将用户的域名和解析记录信息存储在多个数据库节点中,以实现数据的冗余备份和快速读写。同时,为了提高数据的读取速度,dnspod 还使用了缓存技术,将热门的解析记录缓存在内存中,加快解析的响应速度。 总结来说,dnspod 的技术架构采用了分布式系统和云计算技术,通过全球的服务器节点和智能负载均衡算法,实现了快速、可靠的域名解析服务。同时,高可用性的数据库和缓存技术保证了数据的安全和高效访问。这些技术的应用,使得 dnspod 在域名解析服务领域具有竞争优势。 ### 回答3: DNSPod是国内领先的云解析服务商,提供域名解析、CDN加速、DDoS防护等服务。其技术架构主要包括四个方面。 首先是分布式架构。DNSPod采用分布式架构部署在多个数据中心,确保服务的高可用性和可扩展性。每个数据中心都有自己的DNS服务器集群,通过内部网络互联实现数据同步和负载均衡,用户请求可以快速响应并分配到最近的服务器处理。 其次是智能解析引擎。DNSPod利用智能解析引擎提供精确的域名解析服务。该引擎基于机器学习和大数据分析技术,能够根据用户的地理位置、网络环境等因素,选择最优的解析节点和解析策略,提供更快速、稳定的解析结果。 第三是大规模高性能DNS服务器集群。DNSPod构建了大规模的DNS服务器集群,每个服务器都运行高性能的DNS软件,并通过动态负载均衡算法将请求分配到最合适的服务器上。集群中的服务器通过内部通信协议同步数据,支持快速更新和分布式存储,以应对海量的解析请求和域名数据。 最后是安全防护机制。DNSPod具备强大的安全防护机制,包括DDoS防护、域名劫持监测、安全策略控制等。通过流量清洗系统和智能防火墙等技术,DNSPod能有效抵御各种网络攻击,保障用户的域名解析服务的稳定性和安全性。 总之,DNSPod技术架构采用分布式架构、智能解析引擎、大规模高性能DNS服务器集群和安全防护机制,以提供高可用、高性能、安全可靠的域名解析服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

୧⍢⃝୨ LonelyCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值