一. 什么DDNS?

  DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。

  DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析

拥有动态公网IP怎么实现DDNS_公网IP

 也就是说DDNS捕获用户每次变化的IP地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来进行交流。而最终客户所要记忆的全部,就是记住动态域名商给予的域名即可,而不用去管他们是如何实现的。

 动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个。但DDNS的IP是变动的、随机的。


二. 准备工作

  1. 拥有运营商提供的公网IP

由于此方案需要用到运营商提供的公网IP, 首先需要确认宽带是否拥有公网IP。确认方法如下:

1)登录猫机的网关管理页面,查看自己的WAN口IP地址(网关的网址通常为192.168.1.1或192.168.2.1,此网关地址根据设备的品牌不同可能也会有所不同,不清楚的可查看文章最下方)

2)通过https://www.ip138.com/ 查询你的外网IP地址 如果和WAN口IP一致。说明拥有公网IP,如果不一致则无法使用此方案,请考虑FRP进行内网穿透。


  1. 任意平台的域名


三. 开始配置

配置域名

1)本文使用的是腾讯云的DNSPod域名供应商为例,首先点击域名进入解析管理

拥有动态公网IP怎么实现DDNS_DDNS_02

2)点击"添加记录"后,记录类型选择"A"类型,主机记录为你即将作为公网IP对应的域名,记录值暂时填写在上一步查询到的外网IP,TTL值默认600即可。


配置DDNS-GO

本文使用了Github上的开源项目DDNS-GO,此项目基于go语言开发,功能比较齐全,配置起来也很简单所以使用它作为动态域名解析服务。该项目具有以下特性


  • 支持Mac、Windows、Linux系统,支持ARM、x86架构
  • 支持的域名服务商 Alidns(阿里云) Dnspod(腾讯云) Cloudflare 华为云 Callback
  • 支持接口/网卡获取IP
  • 支持以服务的方式运行
  • 默认间隔5分钟同步一次
  • 支持多个域名同时解析,公司必备
  • 支持多级域名
  • 网页中配置,简单又方便,可设置 登录用户名和密码 / 禁止从公网访问
  • 网页中方便快速查看最近50条日志,不需要跑docker中查看
  • 支持webhook通知
  • 支持TTL

项目链接: https://github.com/jeessy2/ddns-go

下面我们开始ddns-go的安装,由于我使用了CentOS系统进行本文将以Liunx的安装方式为例,其他安装方式请参考项目链接中的说明文档。

1)下载并解压https://github.com/jeessy2/ddns-go/releases

2)安装服务:sudo ./ddns-go -s install (注意: 如果提示权限问题,请给此文件777权限)

3)以上命令成功执行之后在浏览器中输入:http://你的本地IP:9876进入DDNS-GO的配置页面

拥有动态公网IP怎么实现DDNS_DNS_03

4)因为笔者使用了DnsPod域名供应商进行域名解析,所以在DNS服务商这里选择了DndPod。接下来需要申请一个DNSPod Token

打开DNSPod-Token配置页面,点击创建Token

拥有动态公网IP怎么实现DDNS_动态域名_04

输入Token的名称,点击确定后即可完成Token的创建。

拥有动态公网IP怎么实现DDNS_公网IP_05

拥有动态公网IP怎么实现DDNS_公网IP_06

生成的Token不会被DNSPod存储切只显示一次,请妥善保管!!!

5)回到DDNS-GO的配置页面,把刚刚生成的Token和Token的ID填写进DNS服务商配置中,TTL选择10分钟即可。

拥有动态公网IP怎么实现DDNS_动态域名_07

6) 在IPV4配置项Domains中配置需要将IP解析到的域名,如需解析到多个域名,配置多行即可

拥有动态公网IP怎么实现DDNS_动态域名_08

7) 这里建议关闭公网访问,如果需要公网访问一定要设置一个用户名和密码,这样安全系数更高一些

拥有动态公网IP怎么实现DDNS_DNS_09

8) 完成以上配置后,点击保存使配置生效

拥有动态公网IP怎么实现DDNS_动态域名_10

9) 以上均配置完成后可以直接打开CMD ping 一下域名,测试域名是否可以ping通

拥有动态公网IP怎么实现DDNS_DDNS_11

如果ping不同可能有以下原因

1.域名服务商的DNS解析缓慢,可能还没有传播开。静静等待10分钟左右再次尝试

2.配置DDNS-GO配置可能没有配置好,请检查配置