WEB-DL

转载:DDNS方案收集

文以转载收藏为主,文末会添加原始文章地址。

一、AliDDNS 2.0

下载地址:

最新版本:https://ilemonrain.com/download/shell/AliDDNSv2.sh

2. AliDDNS 2.0 部署教程

脚本整体不需要做任何修改!如果你不理解AliDDNS 2.0的运行原理,请不要擅自改动!因乱改脚本核心导致运行崩溃,作者有权拒绝回答任何问题!

首先,登录你的服务器,安装必需组件:

For CentOS:

yum install -y wget curl cronie

For Debian 8+:

apt install -y wget curl cron

For Ubuntu/Debian 7:

apt-get install -y wget curl cron

然后下载AliDDNS脚本到你的服务器上:

wget -O /usr/sbin/AliDDNS-v2.0.sh https://ilemonrain.com/download/shell/AliDDNSv2.sh
下载地址请参考上面的 更新记录 & 下载地址 一节!

为脚本文件加上可执行属性:

chmod +x /usr/sbin/AliDDNS-v2.0.sh

执行脚本,开始配置:

/usr/sbin/AliDDNS-v2.0.sh

弹出启动菜单:

AliDDNS 工具 (阿里云云解析修改工具)

使用方法 (Usage):
AliDDNS.sh run 配置并运行工具 (如果已有配置将会直接运行)
AliDDNS.sh config 仅配置工具
AliDDNS.sh clean 清理配置文件及运行环境
AliDDNS.sh version 显示版本信息

[Info] 选择你要使用的功能:

  1. 配置并运行 AliDDNS
  2. 仅配置 AliDDNS
  3. 清理环境
  4. 退出

输入数字以选择: _

在这里,我们输入 1 (数字1) ,后按下回车,开始进入AliDDNS配置向导:

[Info] 请输入一级域名 (比如 example.com)
(此项必须填写,查看帮助请输入“h”):

假如你需要设置AliDDNS的域名为ddns.example.com,那么请在这里输入 example.com

分解开就是 [ddns] . [example.com]

同时,登录阿里云云解析 https://dns.console.aliyun.com/,在需要DDNS的域名上,添加一个记录:

记录类型:A
主机记录:[请填写你的二级域名]
解析线路:默认
记录值:127.0.0.1 (或者随便填写一个IP地址)
TTL: [请根据实际需要选择合适的TTL]
同步默认线路:是 (勾选)

简单粗暴的,看都不看的复制粘贴,作者也有权拒绝回答任何问题!

完成后按下回车键,继续填写二级域名:

[Info] 请输入二级域名 (比如 ddns)
(此项必须填写,查看帮助请输入“h”):

同上面的范例,我们输入 ddns ,之后按下回车键继续:

[Info] 请输入记录的TTL(Time-To-Live)值:
(默认为600,查看帮助请输入“h”):

如果你使用的是免费版的阿里云云解析,此处可以填写的数值范围为:600~86400
如果你使用的是收费版(企业版)的阿里云云解析,此处可以填写的数值范围为:1~86400 (根据你购买的产品类型决定)

填写完成后,按下回车键继续:

[Info] 请输入阿里云AccessKey ID
(此项必须填写,查看帮助请输入“h”):

AccessKey ID 和 AccessKey Secret 推荐使用 子用户AccessKey(访问控制台RAM) 分配的权限!这样最安全!

使用子用户AccessKey,请分配 AliyunDNSReadOnlyAccess(只读访问云解析(DNS)的权限) 和 AliyunDNSFullAccess(管理云解析(DNS)的权限) 这两个权限!推荐有动手能力的用户使用子用户AccessKey!

如果不会操作或者图省事,请使用 全局AccessKey !但此时一定要注意!千万不要泄露你的全局AccessKey或者将你的全局AccessKey发布到公网上!这样等同于把你的号白送人,还可以名正言顺的白嫖你的阿里云账号!如果发生泄露,请立刻删除泄露的AccessKey!

填写完成后,按下回车键继续:

[Info] 请输入阿里云Access Key Secret
(此项必须填写,查看帮助请输入“h”):

同上,填写你的AccessKey ID对应的AccessKey Secret。获取你的AccessKey Secret属于账号高风险操作,请准备好用来接收阿里云验证码的手机!

填写完成后,新版的AliDDNS 2.0如果没有激活专家模式,会直接进入执行流程;如果启动了专家模式,以下参数请在你理解的基础上填写!否则请一律留空!

[Info] 请输入获取本机IP使用的命令
(查看帮助请输入“h”):

输入获取本机IP地址使用的命令。如果你不懂或者不需要配置,请留空,直接回车!

[Info] 请输入解析使用的DNS服务器
(此项必须填写,查看帮助请输入“h”):

输入nslookup命令解析使用的DNS服务器。如果你不懂或者不需要配置,请留空,直接回车!

之后,会自动开始DDNS(测试)运行过程:

[Info] 检测到存在的配置,自动读取现有配置
如果你不需要,请通过菜单中的清理环境选项进行清除[Info] 正在写入配置文件……
[Info] 正在获取本机IP……
[Info] 本机IP:...
[Info] 正在获取 ddns.example.com 的IP……
[Info] 解析结果:ddns.example.com -> 127.0.0.1
[Info] 正在生成时间戳……
[Info] 获取到RecordID:*
[Info] 正在更新解析记录……
{“RecordId”:”“,”RequestId”:”“}
[Info] 已经更新RecordID:*
[Success] DDNS记录更新成功,新的IP为:...

出现最后的 DDNS记录更新成功 提示,即为DDNS记录同步成功,稍后等待DNS解析生效,即可完成DDNS域名更换!

3. Crontab (定时任务) 部署教程

首先,在命令行执行命令:

crontab -e

会弹出一个提示,问选择哪个编辑器,请按照自己的喜好选择一个文本编辑器:

Select an editor. To change later, run ‘select-editor’.

  1. /bin/nano <—- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny

Choose 1-3 [1]:

选择完成后,会打开一个文本编辑器,请在文件的最后添加如下一行:

*/5 * * * * /usr/sbin/AliDDNS-v2.0.sh run >/dev/null 2>&1 &

添加完成后,保存退出。

当提示 crontab: installing new crontab 时,表示crontab写入成功,执行命令重启cron进程:

For CentOS:

service crond restart

For Ubuntu/Debian:

service cron restart

并将Cron加入开机启动项:

For CentOS:

chkconfig crond on

For Ubuntu/Debian:

systemctl enable cron

即可完成定时任务的部署。

二、CloudFlare_DDNS

配置DDNS

Centos安装unzip:

yum install unzip

Debian/Ubuntu安装unzip:

apt-get install unzip

下载文档

 

wget -N --no-check-certificate https://lula.fun/usr/uploads/2018/06/795788678.zip
unzip 795788678.zip
mkdir /home/CloudFlare_DDNS
cp -f /root/config.conf /home/CloudFlare_DDNS

登陆CloudFlare

获取API KEY

如图选择第一个

获取zone_id

点击域名,下方会显示此域名的zone_id

解析域名

前缀填写自己想要的,IP随意,记得关闭小彩云

编辑config.conf

vi /home/CloudFlare_DDNS/config.conf

Fuck_2018-08-04_16-02-46.png
输入i进行编辑,先填写上面三项,注意:不要有空格邮箱填写CloudFlare的注册邮箱
编辑完成后输入ESC退出编辑,然后输入:wq回车保存

获取record_id

命令行输入

bash CloudFlare_DDNS_Setter.sh

输入1


你会得到一段代码,找到里面对应DDNS域名解析id,即为record_id

接下来继续编辑config.conf

vi /home/CloudFlare_DDNS/config.conf

填写后面的三项,域名填写你刚才解析的域名例如ddns.yourdomain.com
ttl填写120即可

解析NAT VPS IP

命令行输入

bash CloudFlare_DDNS_Setter.sh --ddns

登陆CloudFlare查看IP是否自动修改为服务器的IP
如果同步失败请检查API_kEY是否正确[清除缓存后查看]

配置Crontab任务

服务器IP变动后需要即时解析IP,这不废话么
Crontab一般自带,如果没有

Crontab安装教程

1.centos安装crontab

yum install vixie-cron crontabs   #安装Crontab
chkconfig crond on   #设置开机启动Crontab
service crond start   #启动Crontab

2.debian安装crontab

apt-get install cron   #安装Crontab
/etc/init.d/cron restart   #重启Crontab

配置任务

使用crontab -e进入任务编辑,i进入编辑模式

输入

*/5 * * * * bash CloudFlare_DDNS_Setter.sh --ddns

脚本设置为5分钟运行一次,保存退出

ESC退出编辑模式,:wq保存,此时再去CloudFlare修改一下IP地址(自定义一个不是当前服务器的IP),静心等待5分钟,看看IP是否更新

参考地址:

https://blog.ilemonrain.com/linux/aliddns-v2.html
https://lula.fun/ddns.html

dnspod动态DNS的shell脚本

项目地址:

https://github.com/lixuy/dnspod-ddns-with-bashshell

如果本文说明和Github上有不一致的地方,请以Github的文档为准。

Dnspod-DDNS-with-BashShell

利用Dnspod的api和shell脚本搭建自己的动态域名服务。
应friends要求写的,dnspod的限制比较多,对调用次数比较小气,频次高了(API文档说的是一小时5次)就会冻结API一小时,返回API usage is limited的报错。所以本脚本进行多次对比确保减少API调用。
CloudXns另见:

https://github.com/lixuy/CloudXNS-DDNS-with-BashShellhttps://github.com/lixuy/CloudXNS-DDNS-with-PowerShell

使用方法

本脚本分为两个版本,一个是获取自己外网ip的版本dnspod_ddns.sh,一个是直接获取自己网卡设备上的ip的版本dnspod_ddns_line.sh(对于多拨或者路由器网关用户适用)。

获取api的ID和Token

api的ID和Token可以在后台获取:

创建一个 Token
输入 Token 名称
Token 创建成功

创建一个 Token,依次点击 用户中心 -> 安全设置 -> API Token:  点击创建一个 Token,输入 Token 名称即可,名称仅用来标记 Token,方便用户管理 Token ,不参与鉴权。 
点击 “确定” 之后,Token 创建成功,会弹出如下提示框: 

dnspod_ddns.sh

参数说明

参数填写说明
API_ID在个人中心后台的安全设置里面获取ID
API_Token在个人中心后台的安全设置里面获取Token
domain你所注册的主域名,例如baidu.com,qq.com,china.edu.cn,example.com
host主机记录名,例如www.baidu.com的主机记录名是www,image.www.weibo.com的主机记录是image.www,home.example.com的主机记录名是home
Email填写你的邮箱。(根据API规范要求)
CHECKURL用于检查自己的外网IP是什么的网址,注释掉该参数会跳过所有检查(仅验证域名记录是否存在)直接执行更新记录(会导致高频率调用更新);建议的备选CHECKURL:http://ip.3322.org http://myip.ipip.net http://ip.xdty.org
OUT指定使用某个网卡设备进行联网通信(默认被注释掉)。注意,一些系统的负载均衡功能可能会导致该参数无效。推荐使用ip a命令查看网卡设备名称。

推荐的部署方法

把如上所述的参数填好即可。
本脚本没有自带循环,因为linux平台几乎都有Crontab(计划任务),利用计划任务可以实现开机启动循环执行脚本并设定循环频率。

命令参考
新建计划任务输入crontab -e
按a进入编辑模式,输入
*/1 * * * * /root/dnspod_ddns.sh &> /dev/null
意思是每隔一分钟执行/root/dnspod_ddns.sh并屏蔽输出日志。当然,如果你需要记录日志可以直接重定向至保存路径。 然后按Esc,输入:wq回车保存退出即可。
更多关于Crontab的使用方法此处不再详述。
另外对于一些带有Web管理界面嵌入式系统(比如openwrt),有图形化的计划任务菜单管理,可以直接把脚本粘贴进去。

工作过程

1、用CHECKURL检查自己的外网ip和本地解析记录是否相同,相同则退出;
2、使用API获取域名在Dnspod平台的ip记录,如果ip记录和本地解析记录或者外网解析记录相同则退出;获取记录异常也会退出并返回错误信息(例如域名不存在No Record);
3、执行DNS更新,并返回执行结果。

注意事项

本脚本不会自动创建子域名,请务必先到后台添加一个随意的子域名A记录,否则会提示No Record; 如果你看到API usage is limited的报错,是由于调用API频率过高账号被冻结(一小时后解封)

dnspod_ddns_line.sh

仅说明与上面脚本参数不同的地方。因该脚本是用于获取网卡设备ip,所以没有CHECKURL参数。

参数说明
DEV从网卡设备(例如eht0)上获取ip,并与DNS记录比对更新。推荐使用ip a命令查看网卡设备名称。
码字很辛苦,转载请注明来自非WEB-DL资源站《转载:DDNS方案收集》

评论