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 的管理界面
https://console.dnspod.cn/account/token#
创建API Token
创建成功后获得ID和Token,
利用这两个信息,就可以通过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
文件, 并指定要绑定的子域名↓
运行ddnspod.sh,就可以获得IP地址,更新域名的解析值了(这里选择的是解析LAN 地址)。
到域名控制台查看,已经更新了记录值. 现在就可以通过域名ddns1.imki.club 访问主机了。
IPV6解析
1. 在网页管理界面中新建一条解析ipv6的AAAA记录,可以先随便乱填一个地址。
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
来实现。
我加入了
IPv6
自动
解析
脚本。到手直接用。非常适合家里有群晖NAS但是只有公网
IPv6
的家庭宽带。绝对是优秀的D
DNS
方案。
本脚本的工作流程是:对比云端
解析
记录-> 不存在则添加 -> 存在则更新。
脚本运行依赖:curl、openssl (注:群晖NAS环境默认自带这些工具,无需安装!)
使用方法:
1、首先,登录阿里控制台:
1-1)进入《云
解析
DNS
》,新增待
解析
的域名记录,如:example.com;
1-2) 进入《AccessKey 管理》,获取AccessKey(没有则创建)。
2、然后,打开alid
dns
.sh脚本,在Setting里设置AccessKey,如下:
access_key_id=""
access_key_secret=""
3、最后,执行alid
dns
.sh脚本,如:
./alid
dns
.sh [OPTION] <String>
如何拿到超级管理员账户+密码,打电话给你10086说宽带故障了让上门来维修,业务员上门来后你直接告诉他,我要 超级管理员账户+密码 ,就算你说让改 PPPoE 拨号上网 他们都不知道这个是干嘛的,很多人不会愿意给你超级管理员账户密码,你直接表态我有用处,记住了他们可能会给你一个默认的超级管理员账户密码,你先试试能不能登录成功,因为我的移动宽带就是超级管理员账户密码不是默认的,在装完宽带后光猫会自动随机重置密码,因为这个问题折腾了几天,那个业务员死活说这个就是超级管理员账户和密码。
1、http://www.anrip.com/post/872
2、http://fengwan.blog.51cto.com/508652/1404534/
源码
地址
:https://github.com/anrip/Ar
DNS
Pod
只是源码只能
实现
获取本地IP,若是有路由器,仅能获得
内网
地址
。,要向获得
外网
地址
:需要结合两篇文章。
两个文件,放到/usr/bin下面。...
自2016年6月1日起,苹果要求所有提交AppStore的iOS应用必须支持
IPv6
-only环境,根据苹果开发者网站的声明,大部分现有应用程序已经通过NSURLSession和CFNetwork APIs兼容该协议。依然使用IPv4 APIs的或者硬件编码IP
地址
的开发者将需要手工调整应用代码来适应苹果的最新策略。随着IPv4
地址
用完,转移到
地址
更丰富的
IPv6
协议正在变得越来越重要。
经过全面的测试和灰度发布,腾讯云
DNS
Pod
域名解析
已全面支持AppStore
IPv6
-only网络环境,已有成..
脚本内容根据实际情况填写,上面只是示例 规则很简单,从注释中可以看到左到右分别是 分钟(0~59)、小时(0~23)、天(1~31)、月(1~12)、星期(0~6)、用户名、要定时执行的命令或者脚本。只有运行了d
dns
pod
.sh才能检查IP
地址
是否变更并加以修改,所以只要定时运行该脚本,就能
实现
DNS
动态
解析
,使用crontab能
实现
定时运行功能。首先需要注册一个域名,首选腾讯云域名,因为
DNS
Pod
2015年被腾讯收购后和腾讯云的账号打通了。安装crontabs服务并设置开机自启。
公司电信宽带(PPoE)分配了一个公网IP,但它每过一段时间就变了,如果我要用它远程桌面,意味着每过一段时间就要改一次IP,记一个新的IP,非常复杂,该如何用一个固定的
地址
来替代这些变化的IP并且
实现
定时自动替换呢?虽然可以通过购买EIP来固定这个
地址
,但是成本稍微高了。替代的办法就是
动态
解析
,用一个别名代替变换的IP。而别名就是域名,用一个固定的域名,
解析
到这些IP,即可
实现
D
DNS
。
由于最近搬了办公室,两个办公室两条宽带,现在的办公室与之前的办公室网络不互通,之前的办公室有一台Windows Server2008的服务器做了文件共享。现在换了办公室不能够访问。咨询网工师傅,说调试费用+网线费用3000,遂放弃硬件解决方案。 在查阅资料及结合现有的资源决定使用 IIS+FTP+D
DNS
POD
来
实现
外网
访问。
一.安装IIS及FTP(如已安装请略过此步)参考
地址
二.IIS部署FTP站点
快捷导航开始如何购买域名?如何设置API(密钥)重点如何使用D
DNS
动态域名
服务为什么使用D
DNS
利用
脚本更新
DNS
常见问题我无法
利用
脚本获取到
IPV6
地址
我无法执行这个脚本
本代码已在Linux环境测试,理论上可以在各种Linux设备进行D
DNS
动态域名
服务,如群晖等NAS或Linux虚拟机。
在开始之前,首先你需要在腾讯云上购买域名或
域名解析
服务在腾讯云上。
如何购买域名?
在腾讯云域名注册网页上,可以购买域名。
在购买完成后,可以进入腾讯云的域名控制台,查看域名信息。
如何设置API(密钥)
手机设置--更多--移动网络--接入点名称(APN)--进去找到APN协议--设置为 ipv4/
ipv6
保存退出,则手机流量上网的时候就会同时得到一个IPV4
地址
和一个
IPV6
地址
。
该APP运行在安卓设备上,可以将该安卓设备的
IPV6
地址
实时
解析
出来,并能监视IP
地址
的变化,一旦IP发生改变,域名就会指向新的IP
地址
。
摘要使用shell脚本和
dns
pod
官方提供的api
实现
域名的d
dns
动态
解析
,本脚本只会在ip有改变的时候才对
dns
pod
域名做
解析
更改,而不是定时去更改。脚本适用Linux和openwrt,前提是有bash下面是openwrt系统的路由使用方法1更换openwrt的源加速
地址
sed -i 's/downloads.openwrt.org/openwrt.legion.pt/' /etc/opk...
IPV6
阿里DDAS
因为需要在家搭建一套环境,并且需要公网能访问。国内的ipv4的
地址
,各大运营商基本都不会分配ipv4
地址
(电信宽带好像有地方可以,但是听说很贵),而且是
动态
的,每过段时间就会改变。
发现移动宽带的公网
ipv6
地址
是可以获取到的,但是也会
动态
刷新。想稳定访问就加上阿里的d
dns
的域名访问。
### 1.准备工作
因为宽带接入家里基本是都是需要通过光猫拨号后,再接入路由器。这样就拿不到真实的公网
ipv6
地址
,需要先将光猫中的设置改为桥接模式,再让路由器输入宽带账户和密码拨号。这个过程我调