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

利用DNSPod实现动态域名解析DDNS (解析内网、外网或IPV6地址)更新记录2020-01-03-修复了12月31日由于dnspodAPI改动导致的失效。2019-05-24-支持IPV6(如你所料,之前所说的支持是假的)-根据网站的更新,api调用使用TLSv1.2,解决了之前调用失败的问题(感谢@lth410指出)。——————————-以下正文—————–…

大家好,又见面了,我是你们的朋友全栈君。

更新记录

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地址)

创建成功后获得ID和Token,

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

利用这两个信息,就可以通过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地址)

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

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

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

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

IPV6解析

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

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

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://javaforall.net/132609.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java基础之java输入输出语句[通俗易懂]

    java基础之java输入输出语句[通俗易懂]1、使用Scanner使用时需要引入包importjava.util.Scanner;首先定义Scanner对象Java基础学习:java输入输出语句比如:Java基础学习:java输入输出语句2、使用BufferedReader用前需要引入importjava.io.Reader;Java基础学习:java输入输出语句比如:Java基础学习:java输入输出语句应该注意的是:Java把从键盘输入的数据一律看作是字符串,因此若要从键盘输入并让系统认可是数值型数据,必须经过转换。

    2022年5月25日
    38
  • 神经网络——Python实现BP神经网络算法(理论+例子+程序)

    神经网络——Python实现BP神经网络算法(理论+例子+程序)一、基于BP算法的多层感知器模型采用BP算法的多层感知器是至今为止应用最广泛的神经网络,在多层感知器的应用中,以图3-15所示的单隐层网络的应用最为普遍。一般习惯将单隐层前馈网称为三层感知器,所谓三层包括了输入层、隐层和输出层。算法最终结果采用梯度下降法,具体详细过程此处就省略了!二、BP算法的程序实现流程三、标准BP算法的改进——增加动量项标准BP算法在调整权值时,只按t时刻误差的梯度降方向调整,而没有考虑t时刻以前的梯度方向,从而常使训练过程发生振荡,收敛缓慢。为了提

    2025年9月16日
    5
  • C++ offsetof

    C++ offsetof这是一个宏,用于计算类中某个成员的地址相对于类实例的偏移量在C++11中,要求这个类standard_layout基本用法是这样子的:#include<stdio.h>/*printf*/#include<stddef.h>/*offsetof*/structfoo{chara;ch…

    2022年8月22日
    3
  • 微信小程序制作表格代码「建议收藏」

    微信小程序制作表格代码「建议收藏」微信小程序中没有专门的表格制作工具,不过使用列表渲染可以实现,下面是我做的表格图片:方法如下:在XXX.wxml中填写下面的代码参数内容{{item.code}}{{item.text}}{{item.type}}

    2022年7月27日
    43
  • 多语言网站(如何实现网站的多语言版本?)

    多语言网站(如何实现网站的多语言版本?)

    2021年9月23日
    39
  • Django(46)drf序列化类的使用(ModelSerializer)「建议收藏」

    Django(46)drf序列化类的使用(ModelSerializer)「建议收藏」前言我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializerModelSerializer先来看下ModelSer

    2022年7月30日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号