利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)

更新记录

2020-01-03
– 修复了12月31日由于 dnspod API 改动导致的失效。

2019-05-24

– 支持IPV6(如你所料,之前所说的支持是假的)
– 根据网站的更新,api调用使用TLS v1.2,解决了之前调用失败的问题(感谢@lth410 指出)。

——————————-以下正文———————————————

DDNS是什么

对于DHCP方式获得的IP,无论对于局域网内来说,还是外网来说,都会有使得IP地址每隔一段时间变化一次,如果想要通过恒定不变的地址访问主机,就需要动态域名解析。用一句话说明原理是:把动态变化的IP地址绑定到固定不变的域名上,这样便是以不变应万变,只要记住域名就可以了。

什么时候需要用?

应用场景举例:

1. 在公司局域网内,小明在自己的电脑上建立了一个FTP服务器用来共享文件。但他使用普通的上网账号上网,主机接入局域网后需要认证账号,随机分配IP地址。每次断线之后都会使得IP地址发生变化,这样一来,小明需要时刻记录下当前的IP地址,才能通过该地址访问到FTP服务器。做动态域名解析后,主机IP绑定到小明自己的域名,一旦IP地址发生变化,更新域名解析内容,他依旧可以通过域名访问到FTP服务器。

2. 阿杰办理了电信宽带后幸运地发现,获得的IP可以从外网直接访问(之所以说他幸运,是因为现在IPV4资源紧张,宽带运营商都是做了一层NAT再后在给用户分配内网IP,很多人实际公用一个出口IP. )。阿杰于是在自己的主机上搭了一个IP摄像头,这样无论在何地都可以通过网络查看家里的情况。IP虽然是公网IP,但却是动态分配的(公网静态IP要10万块钱一年),每断开一次就会变化一次。因此他可以选择动态域名解析。

DDNS可以解决什么? 答:可以把变化的IP自动动态地映射到域名上,通过不变的域名访问变化IP的主机;

DDNS不能解决什么?答:本身不能实现端口映射,因此如果主机在NAT网络内部,而你又没有权限在路由器上设置端口映射,那么DDNS就无解了,需要做反向代理或者端口穿透。

怎么做?

根据能力和预算有不同的做法:

不差钱可以直接去花生壳购买动态域名服务,随便还能提供内网穿透的功能;

自己折腾可以使用DNSPod + 个人域名 + ArDNSPod脚本.

利用DNSPod实现动态域名解析

首先需要注册一个域名,去腾讯云注册最为方便,因为DNSPod 2015年被腾讯收购后和腾讯云的账号打通了。

登陆dnspod控制台https://console.dnspod.cn/dns/list,创建一条A记录解析,IP值暂时随便填就行:

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图

在 dnspod 的管理界面https://console.dnspod.cn/account/token# 创建API Token

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图1

创建成功后获得ID和Token,

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图2

利用这两个信息,就可以通过API修改域名解析值了,详见API文档:https://www.dnspod.cn/docs/info.html#d

下载ArDNSPod客户端

ArDNSPod是利用DNSPod实现动态解析的项目,github地址:ArDNSPod https://github.com/anrip/ArDNSPod

笔者重新作了一些修改,可以选择要解析的IP类型,包括外网,内网,IPv6,见

https://github.com/imki911/ArDNSPod (复制到浏览器打开,避免被csdn劫持)

将之前得到的ID和token写入dns.conf 文件, 并指定要绑定的子域名↓

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图3

运行ddnspod.sh,就可以获得IP地址,更新域名的解析值了(这里选择的是解析LAN 地址)。

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图4

到域名控制台查看,已经更新了记录值. 现在就可以通过域名ddns1.imki.club 访问主机了。

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图5

IPV6解析

1. 在网页管理界面中新建一条解析ipv6的AAAA记录,可以先随便乱填一个地址。

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)插图6

2. 在ddnspod.sh 开头,IPtype值改为3,切换到 IPv6 解析。

3. 运行ifconfig,查看具有IPv6地址的网卡设备名,例如eth0等

4. ddnspod.sh 69行,将 eth0 替换成本机的网卡设备名。确保单独运行该命令可以返回ipv6地址

ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

5. 配置dns.conf文件,运行ddnspod.sh即可更新解析值。

自动更新解析

DDNS的第一个D含义在于动态,即IP地址变化之后自动更新域名记录值,这可以通过把脚本设置为定时任务cron来实现。

原文链接:https://blog.csdn.net/Imkiimki/article/details/83794355?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168466843816800182184030%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=168466843816800182184030&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-15-83794355-null-null.blog_rank_default&utm_term=NAS%E3%80%81%E7%BE%A4%E6%99%96%E3%80%81%E9%98%BF%E9%87%8C%E4%BA%91%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E3%80%81%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E3%80%81ipv6%E3%80%81ddns%E3%80%81%E8%BD%BB%E9%87%8F%E7%BA%A7%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E9%93%81%E5%A8%81%E9%A9%AC%E3%80%81%E5%A8%81%E8%81%94%E9%80%9A%E3%80%81DSM%E3%80%81DSM6.0%E3%80%81%E7%BE%A4%E6%99%96nas%E3%80%81%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%81%E8%9C%97%E7%89%9B%E6%98%9F%E9%99%85%E3%80%81%E9%BB%91%E7%BE%A4%E6%99%96%E3%80%81docker%E3%80%81%E5%AE%B9%E5%99%A8%E9%95%9C%E5%83%8F%E3%80%81%E5%9F%9F%E5%90%8D%E6%B3%A8%E5%86%8C%E3%80%81%E5%AE%9D%E5%A1%94%E3%80%81%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E3%80%81nginx%E3%80%81frp%E3%80%81%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享