免费好用的DDNS

发布于 2020-03-07  2.18k 次阅读


DNS,即域名解析,在他前面加个D就是DDNS( Dynamic Domain Name Server动态域名解析),用于动态公网ip解析到一个固定域名使用。

这边使用3322公云的ddns服务,原因有三个

1.免费,也比较稳定

2.自带免费域名

3.只需要一条命令即可更新ip地址,这方便我们日后在客户端进行ip更新。

公云官网:http://www.pubyun.com/

该注册注册该登陆登陆,不用多BB。

免费版只有一个动态解析名额

然后新建一个动态域名,选择免费后缀即可,随便填一个前缀即可,后期需要绑定自家域名只需要做一个CANME解析即可。


接下来我们该配置客户端了,根据公云的文档,更新ip只需要这一个命令:

lynx -mime_header -auth=用户名:密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=你的公云DDNS域名"

所以我们只需要做一个cron定时任务即可更新ip

先去装一个lynx,大部分发行版基本自带但是如果不带也没关系。

lynx命令是纯文本模式的网页浏览器,不支持图形、音频、视频等多媒体信息

Ubuntu/Debian: sudo apt-get install lynx -y

Cent OS: sudo yum install -y lynx

root@smallxushell:~ $ sudo apt-get install lynx -y
root@smallxucent:~ $ sudo yum install -y lynx 

安装完毕后配置Cron,如果发行版没带请自行安装。

编写sh脚本:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
lynx -mime_header -auth=你的公云用户名:密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=你的公云域名"
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "◉[$endDate] 200 ok"
echo "----------------------------------------------------------------------------"

赋予执行权限

sudo chmod 777 ddns.sh

修改并保存好,然后配置Cron.

新建一个Cron的表达式,用.cron后缀来方便分类

nano ddns.cron

文件内这样写:

30 * * * * ~/你脚本路径/ddns.sh >> /var/log/ddns.log 2>&1

/var/log/ddns.log 为任务执行日志,你可以把他搞到别的地方去。

这里表示在每个小时的第三十分钟进行更新ip,由于公云免费版有更新频率限制,频率快并没有用,如想要其他更新频率,请自行学习Cron的表达式。

表达式含义
* * * * *每分钟执行一次
30 * * * *每小时的30分执行一次
*/5 * * * *每5分钟执行一次
0/5 * * * *每5分钟执行一次,且仅在0,5,15,20...55分执行
5 0 * * *每天的00:05执行一次

把ddns加入到定时任务:

crontab ddns.cron

查看定时任务:

crontab -l

手动执行一下看看ip是否更新:

./ddns.sh


努力学习ing