当我们想充分利用宽带的作用,使用宽带做一些事情的时候,却因为家宽的外网 IP 是动态的而要用到动态域名服务DDNS。而大多数路由器支持的花生壳 DDNS 现在却要麻烦的实名认证,还有其他各种没鸟用、花里胡哨的垃圾软件。

至于宽带可以做什么 —— 配上斐讯的 K2/K2P 路由器可以使用各种代理、配上树莓派可以挂网站、网络代理、BT 下载服务……

先放两个相关链接

Dns­pod:[https://www.dnspod.cn/console/dns]
Dns­pod-DDNS-with-BashShell:[https://github.com/kkkgo/dnspod-ddns-with-bashshell/archive/master.zip]

使用方法

本文说明与 Github 上有不一致的地方,建议参照本文说明。

修改域名DNS地址

相关链接:[https://support.dnspod.cn/Kb/showarticle/tsid/177/]

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

获取API的ID和Token

API 的 ID 和 To­ken 在后台获取:

创建一个 To­ken,依次点击 用户中心 -> 安全设置 -> API To­ken:

创建一个 Token

点击创建一个 To­ken,输入 To­ken 名称即可,名称仅用来标记 To­ken,方便用户管理 To­ken ,不参与鉴权。

输入 Token 名称

点击 “确定” 之后,To­ken 创建成功,会弹出如下提示框:

Token 创建成功

dnspod_ddns.sh

参数说明

在脚本开头#CONF START到#CONF END之间为用户所需填写的参数:

参数填写说明

API_ID:在个人中心后台的安全设置里面获取ID

API_Token:在个人中心后台的安全设置里面获取Token

domain:你所注册的主域名,例如baidu.comqq.comchina.edu.cnexample.com

host:主机记录名,例如www.baidu.com的主机记录名是wwwimage.www.weibo.com的主机记录是image.wwwhome.example.com的主机记录名是home

CHECKURL:用于检查自己的外网IP是什么的网址,注释掉该参数会跳过本地DNS检查比对,直接执行(验证域名记录是否存在以及记录是否重复后)更新;建议的备选CHECKURL:http://ip.03k.org`http://ip.3322.org http://myip.ipip.net http://checkip.dns.he.net https://api-ipv4.ip.sb/ip`

OUT:指定使用某个网卡设备进行联网通信(默认被注释掉)。注意,一些系统的负载均衡功能可能会导致该参数无效。推荐使用ip a命令或者ifconfig命令查看网卡设备名称。

推荐的部署方法

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

命令参考
假设脚本已经填写好参数并加了可执行权限(chmod +x ./dnspod_ddns.sh),并位于/root/dnspod_ddns.sh:
新建计划任务输入echo "*/1 * * * * /root/dnspod_ddns.sh &> ~/ddns.log" > ddns.cron加入计划任务输入crontab ddns.cron清除多余文件输入rm -rf ddns.cron
意思是每隔一分钟执行/root/dns­pod_ddns.sh并将运行日志输出到根目录的ddns.log文件。

crontab -l 命令查看添加成功没。
另外对于一些带有 Web 管理界面嵌入式系统(比如 open­wrt),有图形化的计划任务菜单管理,可以直接把脚本粘贴进去。

注意事项

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

dnspod\_ddns\_line.sh

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

参数说明

参数填写说明

DEV:从网卡设备(例如eht0)上获取ip,并与DNS记录比对更新。推荐使用ip a命令ifconfig命令查看网卡设备名称。

日志参考

现象说明

[DNS IP]为Get Domain Failed:本地DNS解析出现问题(断网、DNS服务器不工作、域名记录错误)

[URL IP]为空:访问CHECKURL失败,检查网络访问CHECKURL是否正常

No Record:不存在该域名或者该主机记录(本脚本不会自动创建子域名,请务必先到后台添加一个随意的子域名A记录)

API usage is limited:调用API频率过高账号被冻结(一小时后解封),正常使用一般不会出现

[URL IP]或者[DEV IP] 和[DNS IP]不一样但和[API IP]一样:DNS有缓存,DNS记录是已经更新,属正常现象,会提示IP SAME IN API,SKIP UPDATE.自动忽略

Last modification:July 31, 2020
如果觉得我的文章对你有用,请随意赞赏