用自己的域名配置动态域名解析(DDNS) (四)


这是我写的这个ddns程序的第三个大版本了。由于阿里域名的到期,我就放弃了阿里。在经过了很多对比之后我选用了linode,虽然它不提供域名注册,但是它却提供域名解析服务,对ddns来说这就足够了。

程序这次依然采用了 linux + php 的组合方案,这么做主要是因为对于ddns这个场景来说 php的性能足够,没有必要用c语言。
另外如果你在用软路由之类的话,也可以直接参考本文的方式直接在软路由里面部署。不需要考虑软路由的CPU架构是不是x86_64。

改用 linode 的 api 之后发现在代码实现上要远远比用阿里的api方便多了,没有阿里那种将请求的数据进行绕来绕去的编码的过程,简单的调用,简单的返回,方便直接。对于阿里的那一套编码规则我在上一篇:https://www.timeline.menu/article/co/ddns.3.html 已经讲过了,感兴趣的可以去看一下。

由于上次有很多人反应有些问题不知道如何解决,也没有可以讨论的地方,所以这次我也为大家讨论有关于ddns的技术开放了一个论坛,地址是:
https://www.explor.club/discuss/viewforum.php?f=75&language=zh_cmn_hans
这个地址中最后的参数是指定的界面的语言,zh_cmn_hans是中文简体,如果你习惯的语言是中文繁体的话就改成zh_cmn_hant,如果需要英文就改成en_us
由于这是一个开放性的论坛程序,有可能你需要借助浏览器的翻译功能,帮你将不同的语种翻译成你习惯的语言。也请不要强求别人用你习惯的语言发表内容。
同时,任何人在这个论坛里不需要用特殊的代指词,大大方方的用原词即可,我们不会要求你输入手机号,也不会要求你做实名认证,唯一的必备项仅仅是需要一个邮箱地址用以注册。这是没办法的下策,曾经我们也曾不用注册就可以自由讨论,但是我们遭受了海量的广告填充,造成了大家正常的沟通被那些无聊的内容淹没,无奈之下,我们才要求仅限注册用户参与讨论。

注意:请大家务必小心骗子!!! 我没有为这套ddns程序开设任何QQ群或者微信群,所有QQ账号、QQ群、微信账号、微信群都是假的,不要相信里面的任何人的付费要求,如果将来有商业化的话,我会放在 https://www.timeline.menu 或者 https://www.explor.club 上。

本程序代码完全开源,也不存在需要付费的情况。代码地址为 https://gitlab.com/timeline.menu/ddns 。你可以用版本控制工具链 git 进行拉回,也可以直接下载压缩包,地址是 https://gitlab.com/timeline.menu/ddns/-/archive/v3.0/ddns-v3.0.zip 或者 https://gitlab.com/timeline.menu/ddns/-/archive/v3.0/ddns-v3.0.tar.bz2 这两个压缩包内容完全一样,仅仅压缩格式不一样,一个是.zip包,一个是.tar.bz2包。下载回来解压就可以看见所有的代码了,里面还有readme文档。其中readme.for user.txt是写给普通用户的,里面也有部署步骤可能参照。

如果你在部署过程中遇到任何问题都可以去刚才提到的论坛中提问,我会非常乐意为你解答。





下面是引用 readme.for user.txt 里的部署步骤:

在本文中我会假设:将本程序代码拉回本地后 放在了 /mnt/apps/ddns/ 下。
如果你与我放置的路径不同的话,请记得将本文中之后的路径都一一对应。


本程序默认的日志路径是 /mnt/logs/ddns/
因为用于运行本程序的系统用户并不一定具有这个路径的权限,所以在这里需要手动做以下两步操作:
建立这个路径:
sudo mkdir -p /mnt/logs/ddns/
sudo chmod 777 /mnt/logs/ddns/




下面开始正式部署:
一共只有三步:


第一步:打开 /mnt/apps/ddns/dns.php 按自己的实际需求修改以下五个变量
$dns["dev"]
$dns["domain_0"]
$dns["domain_1"]
$dns["domain_2"]
$dns["api"]["token"]


第二步:执行:
chmod +x /mnt/apps/ddns/ipv4.sh
确保 ipv4.sh 具备可执行权限,因为我们需要它从网卡拿出ip地址
chmod +x /mnt/apps/ddns/ipv6.sh
确保 ipv6.sh 具备可执行权限,因为我们需要它从网卡拿出ip地址



第三步:是定时任务:
先打开
/mnt/apps/ddns/ddns.cron
修改下面这三行中的 <你的本地用户名> 部份,改成你要用来执行定时任务的本地用户名,默认的是expl
MAILTO=<你的本地用户名>
HOME=/home/<你的本地用户名>/
*/1 * * * * <你的本地用户名> php /mnt/apps/ddns/dns.php

接着复制到 /etc/cron.d/ 中去
sudo cp -v /mnt/apps/ddns/ddns.cron /etc/cron.d/
留意一下复制过去后的属主,需要为 root:root
ls -laZh /etc/cron.d/ddns.cron
如果不是 root:root 的话就执行
sudo chown root:root /etc/cron.d/ddns.cron


到此,本ddns程序就部署完成了。




注意:
如果你的系统没有开启 cronie.service 的开机自启的话就执行:
sudo systemctl start cronie.service
sudo systemctl enable cronie.service
一般说来 cronie.service 都是默认开机自启的,所以这一步一般不需要。
可以使用这条命令来确定一下:
sudo systemctl status cronie.service




--

本文由 http://www.timeline.menu/article/co/ddns.4.html 原创,转载时请标明出处。
本文设有讨论区,地址是 https://www.explor.club/discuss/viewforum.php?f=75&language=zh_cmn_hans ,欢迎发表你对本文的看法。如文中有错误,也欢迎指出。