• 欢迎访问南思工作室官方站点.
  • 文章内容如有失效请文章下留言,我们看到后会第一时间处理。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏南思工作室吧。
  • 图片服务器和主服务器都挂了CDN,如有异常,请留言,我们会尽快处理。

通过宝塔面板+阿里云API(php)搭建秒级DDNS动态域名解析

服务器 nansi 来源: zimr 8个月前 (04-21) 583次浏览 0个评论
实现原理

1.在一个公网固定 IP 的服务器上部署 PHP 版域名解析 API 作为服务端
2.客户端访问服务器的 URL
3.服务器 GET 客户端 IP 并把客户端 IP 解析到指定的域名 A 记录上



需要的环境有

1.固定 IP 的公网服务器 并运行宝塔面板(面板环境 推荐 nginx+php,Apache+php 作为备选)
2.阿里云域名,并申请阿里云 AccessKey, AccessKeySecret(先保存记录)
3.动态 IP 带宽(公网非城域),并且有可运行 linux 的设备 且 24 小时不关机,(我个人在家有群晖和宝塔面板都是不关机的;也可以树莓派甚至是可 curl 的路由)


                        

适用环境

家庭或者公司有公网访问需求的,私有云盘,工作资料私有共享;  可能有人用过花生壳,效果大家都知道 不多说



如果满足条件就继续:

一,公网服务器配置
                1.解析一个自定域名到该服务器,并通过面板创建对应的网站,不需要数据库。
                2.再解析一个要作为动态域名的子域名,指向暂时 IP 随便写一个
                2.ssh 进入新建网站根目录,运行命令(由阿里云提供)
               

git clone https://github.com/roura356a/alicloud-php-dns-updater.git dyndns-updater

                3.这时候就会有根目录下就有有一个文件夹        dyndns-updater
                4.进入 dyndns-updater 文件夹找到 index.php  点击编辑

代码如下:

<!--?php date_default_timezone_set('UTC'); include_once 'alicloud-php-updaterecord/V20150109/AlicloudUpdateRecord.php'; use Roura\Alicloud\V20150109\AlicloudUpdateRecord; $AccessKeyId = '填写你的 AccessKeyId'; $AccessKeySecret = '填写你的 AccessKeySecret'; $updater = new AlicloudUpdateRecord($AccessKeyId, $AccessKeySecret); $newIp = $_SERVER['REMOTE_ADDR']; // New IP $updater->setDomainName('填写你的顶级域名(没有 www)如 abc.com');
$updater->setRecordType('A');
$updater->setRR('填写作为动态解析的子域名');
$updater->setValue($newIp);
print_r($updater->sendRequest());
</pre>
</div>
</div>
<p>修改后保存,然后进行先测试,然后再作安全方面配置<br ?-->
浏览器打开
<span style="color: #0000ff;">http://你服务端域名/dyndns-updater/</span>

如果返回格式

Array
(
 [RecordId] => 3666544576879860
 [RequestId] => F4VDF8A-D2DF-49VV-ER00-458D6918FDDE
)

那么说明解析成功,应该稍后就能收到 DNS 变更邮件提醒,如果没有返回则检查配置,和确认你的动态 IP 是否是城域

安全配置

 

接下来做安全方面配置,避免你的 url 泄露,无论谁 一访问 A 记录就解析成别人的了,总之谁访问就解析谁;
宝塔面板点击站点修改——网站目录——密码访问   点击开启,密码建议稍复杂 我这里举例为 账号:btdnsadmin  密码:passwd
设置后 服务器端就完成了;

接下来,来到动态 IP 环境中,使用你的 linux 或者宝塔面板 创建定时任务执行脚本
这里指正阿里云的密码传参带””的问题并不是所有环境都能用,这里列举宝塔面板 计划任务中的脚本执行

执行命令(脚本) 时间周期建议 10 分钟一次就行,本人测试过 1 分钟  都是能稳定运行的

curl -u btdnsadmin:passwd http://<span style="color: #0000ff; background-color: #ffffff;">你服务端域名</span>/dyndns-updater/index.php

btdnsadmin:passwd 为你服务端为网站建立的访问账号:密码

返回日志

★[2018-04-21 22:34:02] Successful
----------------------------------------------------------------------------
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   183    0   183    0     0    309      0 --:--:-- --:--:-- --:--:--   309
Array
(
    [RequestId] => F4VDF8A-D2DF-49VV-ER00-458D6918FDDE
    [HostId] => dns.aliyuncs.com
    [Code] => DomainRecordDuplicate
)

说明执行成功

如没有公网服务器的,那么就只能选择纯客户端版 python 的 这里就脱离宝塔面板内容了,就不说了  度娘有一堆教程。
如果动态 IP 宽带没有公网 IP 的,可以尝试部署 Ngrok 内网穿透

感谢宝塔能有这样的环境给我们各种折腾;


南思工作室 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:通过宝塔面板+阿里云 API(php)搭建秒级 DDNS 动态域名解析
免责声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!
喜欢 (4)
关于作者:
南思工作室管理员
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址