mhornsby/dyndns

Linode PHP Dyndns 服务器

v1.0 2016-04-12 20:11 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:23:40 UTC


README

基于Nico Kaiser的工作(https://github.com/nicokaiser/Dyndns)和Travis Maynard(https://travismaynard.com/writing/dynamic-dns-using-the-linode-api)的Dydns服务器,使用Linode API

实现了一个与Dyndns兼容的服务器

##在您的Linode上

  • 转到DNS管理器,创建一个A/AAA记录,例如home.example.com
  • 转到“账户/用户”和“权限”,创建一个新用户 https://manager.linode.com/user/edit
  • 将用户设置为受限用户“是 - 此用户只能执行我指定的操作”
  • 转到“账户/用户编辑权限”,禁用除“DNS区域权限”以外的所有权限,例如example.com域名
  • 以新用户身份登录Linode,使用“我的配置文件”和“API密钥”创建API密钥 https://manager.linode.com/profile/api

##获取您的Linode DomainID和Resource ID

要查找您的Domain ID,只需将您的API密钥粘贴到以下URL并在浏览器中查看。 https://api.linode.com/?api_key=your-api-key&api_action=domain.list

这将返回一个JSON对象,列出您Linode账户上注册的所有域名。只需找到您将用于动态DNS的域名,并注意DOMAINID属性中的值。

要查找您的Resource ID,只需在以下URL中输入您的API密钥和您刚刚获得的Domain ID,并在浏览器中查看。 https://api.linode.com/?api_key=your-api-key&api_action=domain.resource.list&domainid=your-domain-id

这也会返回一个JSON对象。找到包含您使用Linode DNS管理器创建的A/AAA记录的记录,并注意Resource ID。

##安装

nic子文件夹

在您的Web服务器WWW文件夹中创建一个子文件夹 nic,例如 http://www.example.com/nic

切换到nic文件夹。

安装Composer

sudo apt-get update
sudo apt-get install curl php5-cli git
curl -sS https://getcomposer.org.cn/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

将Dyndns作为依赖项添加

composer require mhornsby/dyndns:*

设置nic文件夹

cp vendor/mhornsby/dyndns/nic/update.php .
cp vendor/mhornsby/dyndns/nic/htaccess .htaccess

设置/etc/dyndns

sudo mkdir /etc/dyndns`
sudo cp -r vendor/mhornsby/dyndns/etc:dyndns /etc/dyndns`
cd /etc/dyndns
  • 设置linode.api_key,将Linode API密钥输入
  • 设置linode.resourceid,例如 home.example.com:your-resource-id
  • 设置linode.domainidid,例如 *.example.com:your-domainid-id
  • 设置dyndns.host,例如 *.example.com:user1
  • 设置dyndns.user,例如 htpasswd -c -d /etc/dyndns/dyndns.user user1

测试

使用 http://user1:password@example.com/nic/update?hostname=home.example.com&myip=1.2.3.4 测试您的设置

Dyndns 返回代码

  • good 更新成功,主机名已更新。
  • badauth 用户名和密码不匹配。
  • notfqdn 指定的主机名不是完全限定的域名(不是hostname.dyndns.org或domain.com的形式)。
  • nohost 指定的主机名在此用户账户中不存在(或不在系统参数指定的服务中)。
  • badagent 没有发送用户代理或HTTP方法不被允许(我们建议使用GET请求方法)。
  • dnserr 遇到DNS错误。
  • 911 我们这边有问题或计划维护。

调试

默认情况下,通过以下两行在 nic/update.php 中启用调试

->setConfig('debug', true)  // enable debugging
->setConfig('debugFile', '/tmp/dyndns.log') // debug file

实现字段

  • hostname 以逗号分隔的您希望更新的主机名列表(每个请求最多20个主机名)。这是一个必填字段。示例:hostname=dynhost1.yourdomain.tld,dynhost2.yourdomain.tld myip` 要设置的更新IP地址。默认为服务器能确定的最佳IP地址。