DDNS动态域名解析IPv6地址

通过公网IPv6地址实现远程访问专栏系列文章:

  1. 《使用公网IPv6远程访问内网设备》
  2. 《DDNS动态域名解析IPv6地址》

付费提示!

由于本文教程中需要使用域名和域名解析服务,因此存在付费内容。域名可自行在阿里云、腾讯云、华为云等云服务提供商进行购买,域名解析服务则可以自行选择使用云服务提供商所提供的免费解析服务,也可以将域名托管至第三方服务提供商,例如大名鼎鼎的Cloudflare。
根据不同的顶级域名,域名价格从几块钱到上百元不等,可自行选择。

一、前言

在上一篇文章《使用公网IPv6远程访问内网设备》的文末,我们提到了使用IPv6地址进行远程访问几个缺陷:

  1. IPv6 地址很长,不方便记忆;
  2. 公网 IPv6 地址并非固定不变,在一定情况下,地址发生变更,如果不能及时获取地址,则无法进行远程访问
  3. 部分网络无IPv6的Internet访问权限,比如公司内网等,则无法访问任何IPv6地址

这三个缺陷,从解决方案的角度来看,我们可以将其分为两类,缺陷1、2分为一类,缺陷3分为第二类。本文我们就来详细介绍一下,如何解决第一类问题,IPv6地址难以记忆且不定时更新。

二、方案简介

折腾过IPv4的朋友应该也遇到过这类问题,虽然IPv4地址相对简短,更好记忆,但是一串毫无意义的数字,总归还是难以记忆。解决方案的思路和IPv4相同,都是通过申请域名和设置域名的DNS解析服务,将简单好记的域名绑定到自己的公网IP上,后续可直接通过域名进行访问无需再记忆IP地址,仅需记住自定义的域名即可。域名有多方便记忆应该所有人都有所体会,例如百度(baidu.com)、淘宝(taobao.com)等。

对于IP不断更新变化的问题,不论是IPv4还是IPv6都存在,解决思路并不复杂,简单来说,我们在本地定时获取光猫或者路由器通过拨号获取的IP地址,即WAN口地址,并与上一次获取记录进行比较判断,如果IP发生变化,则通知用户重新设置DNS解析,或者通过DNS服务的API接口,自动进行设置。自动设置的过程实际上就是文章的标题,DDNS解析IP地址。

我们来看一下 Wiki 对 DDNS 的解释:

动态DNS(英语:Dynamic DNS,简称DDNS)是域名系统(DNS)中的一种自动更新名称服务器(Name server)内容的技术。根据互联网的域名订立规则,域名必须跟从固定的IP地址。但动态DNS系统为动态网域提供一个固定的名称服务器(Name server),透过即时更新,使外界用户能够连上动态用户的网址。

这个术语被用来描述两种不同的概念。在互联网的管理层面来说,动态DNS更新是指创建一个DNS系统,能够自动更新传统的DNS记录,而不需要手动编辑。这个机制在RFC 2136中被解释,利用TSIG机制来提供安全性。——Wiki百科

OK,话不多说,下面开始逐步进行详细的说明和介绍

三、详细操作步骤

因为作者本人使用的是腾讯云,所以接下来的教程中,将全部按照腾讯云进行示范,对于其他的域名提供商,整理流程大同小异,也可参考进行。

3.1、申请域名

这里我们选择了 “.top” 这个顶级域名,并二级域名自定义输入了 “ipv6test”,那么最终我们所申请的域名就是 “ipv6test.top”。

什么是 “顶级域名” 和 “二级域名” 请自行百度或者Google搜索,这里不展开赘述了。

域名购买的过程中有坑点,需要单独注意下,上图中已经标明了,这里再简单说明一下:

  1. 将域名添加到购物车之后,会弹出 “DNS解析(专业版)” 和 “SSL证书” 这两个购买项, 我们确实需要使用 DNS 解析服务,但是免费版本已经足够使用,无需再单独购买专业版;而 “SSL证书” 我们可以从第三方进行免费申请,根本不需要这个
  2. 点击查询后展示的域名价格是 “首年价格”,折扣力度比较大,但是!!!后续每年的续费价格则会恢复原价,导致续费价格会比首年价格贵好几倍!!!如果不想每年重新购买域名,那么最好直接买一个续费价格也相对比便宜的域名。(富哥们不需要在意这个)

现在购买域名需要实名审核,在结算界面会需要创建一个个人信息模板,按要求填写后,购买成功即可。作者之前已经注册了域名,因此这里不再重复注册了。

3.2、添加DNS解析记录

完成域名注册后,和上面的第一步一样,通过云产品中的域名注册,回到我的域名界面,原本的空列表中会显示你刚刚注册的域名,刚刚注册完成的,可能服务状态会显示 “实名认证审核中”,这个审核时长补丁。如果实名信息是之前已经认证过的,很快就能通过审核,最终如下图所示:

当服务状态显示为正常时,我们点击后边的解析按钮,进行 DNS 解析记录设置。

在点击"添加记录"按钮之后,出现一条空白的解析记录,一共有5项待填充内容,分别是:

  1. 主机记录
  2. 记录类型
  3. 线路类型
  4. 记录值
  5. TTL
    一般来说,我们只需要填写其中的主机记录、记录类型和记录值三项就行,线路类型和TTL保持默认即可。

3.2.1、主机记录

鼠标点击对应的填充框,下面都会有对应提示,先来看看主机记录:

用通俗的语言来说,主机记录就是域名的前缀,通常指三级及以上的域名(腾讯云的提示中描述的时二级域名,这个描述和计算机网络中的标准定义有差异,本文将按照标准定义进行描述),比如作者申请注册的域名为 “testdomaim.xyz”,我想添加一条解析记录到 “ipv6.testdomain.xyz”,那么主机记录这里就需要填写 “ipv6”;要是还想添加一个域名叫 “ipv4.testdomain.xyz”,那么主机记录就填 “ipv4”。因为我们注册申请了一个二级域名,那么这个二级域名之上的三级域名,四级域名都可以自行设置分配。

主机记录中有两个特殊的值:“@” 和 “*”。“@” 用于直接解析我们申请的二级域名,也就是 “testdomain.xyz”,当你直接访问这个域名时,DNS服务器将会查询主机记录为 “@” 的解析记录。“*” 则用于泛解析,故名思意,解析泛域名,意味着所有的三级域名都将通过这条解析记录进行查询。当设置了 “*” 泛解析后,再单独设置某个三级域名解析记录,将会出现访问错误的情况。

3.2.2、记录类型

记录类型只能点击下方提示的条目进行自动填充,由于我们这次需要指定的 IP 地址为 IPv6 类型,因此这里我们选择 “AAAA” 记录类型。

3.2.3、记录值

简单来说,待访问的终端 IP 地址。通过上一步的教程,我们将电脑的 IPv6 地址填入即可(请先确认地址有效,通过 mstsc 直接填入 IPv6 地址进行连接测试)。

完成以上三项内容填写后,点击保存,我们就完成了 “ipv6.testdomain.xyz” 这个域名到我们电脑的 IPv6 地址解析记录添加。如下图所示:

打开CMD,进行 ping 连接测试 ping -6 ipv6.testdomain.xyz
image

显示正常 ping 通,说明解析服务已经正常生效了。然后我们再使用 mstsc 进行远程方式试试:

image

也能正常进行远程连接了。至此我们已经完成了通过域名解析到IPv6地址,并进行远程访问的所有设置。接下来我们进行 DDNS 动态域名解析的相关设置。

3.3、DDNS设置

由于我的路由器 openwrt 固件中自带 DDNS 插件,因此下文将以路由器中的插件 “动态 DNS” 进行配置说明。

这里推荐一个多平台(win、linux、macos等)可用,且支持docker运行的开源 DDNS 服务:“ddns-go”,可以直接前往 github 仓库查看其使用说明。整体使用和下文配置大同小异,可相互参考借鉴。

openwrt 中的 “动态 DNS” 界面如下:
image

可以看到我已经添加了一条配置,下面我们将详细介绍如何通过 “动态 DNS” 插件完成对腾讯云域名的动态解析设置。

image

点击添加按钮后,进入详细配置:

image

由于不同 DNS 服务提供商所需要填充的设置也不同,因此进入以后我们先选择 “DDNS 服务提供商”,由于我们是通过腾讯云注册的,腾讯云提供的默认服务商为 DNSPOD,因此这里我们选择 “dnspod.cn”:

image

点击更改提供者之后,就能看到详细的配置项了:

image

其中 dsnpod 的用户 id 和 token,可前往 DNSPOD 控制台进行创建。

image

将此处获取的 id 和 token 填入到插件配置中,填充完成后点击右下角 “保存&应用” 完成配置创建。然后点击下图中的启动按钮,即可启动 DDNS 服务:

image

我们在点击修改按钮进入配置界面,点击上方的"日志查看器",点击"读取/重新读取日志文件",查看下方日志内容:

可以看到服务已经可以正常查询指定域名的 DNS 解析记录和本地 IPv6 地址。若日志中出现了 "warning " 和 “error” 等级的日志内容,则说明有配置不正确,需要根据日志提示进行排查和修改。

DDNS 服务会每隔几分钟轮询 DNS 解析记录和本地 IP,如果本地 IP 发生变更,则会调用 DNSPod 的 API 接口,将新的 IP 地址注册到 DNSPod 中,修改对应域名的解析记录,完美解决了 IP 地址不定时更新的问题。

3.4、端口转发

注意!!!
如果 DDNS 服务直接运行在期望访问的远程主机上,则不需要进行此章节的设置!

本来配置 DDNS 解析本地 IPv6 地址的过程在上一章节就完全结束了,但是由于作者是通过路由器获取的 IPv6 地址,直接访问域名的话,实际上访问的是路由器。因此如果需要远程访问路由器下的某台电脑,则还需要在路由器的防火墙中,设置端口转发,将流量转发到指定的子网设备中。

openwrt 防火墙的端口转发仅支持 IPv4 to IPv4。我们现在需要进行 IPv6 向 IPv4 进行转发,因此还需借助另一个插件 “Socat”,来完成 IPv6 流量向 IPv4 地址的转发。

点击插件界面的 “添加” 按钮,按下图所示完成配置后,点击 “保存&应用”,即可完成最后的端口转发设置。

image

四、总结

在本文中,我们注册申请了一个二级域名,并通过设置域名的 DNS 解析记录,使得可以通过域名来对内网下的windows主机进行远程访问。完全自定义的二级和三级域名,可以是具备标识意义的名称,完美解决了 IP 地址难以记忆的问题。

我们又通过 DDNS 服务插件完成了当 IP 地址变更时,自动更新对应域名的 DNS 解析记录,确保 IP 变更时,域名仍然能正确指向我们的终端设备。

通过《使用公网IPv6远程访问内网设备》和本文的所有配置,一般家用场景下已经能完美通过公网 IPv6 地址进行远程访问内网设备了。当然还有进阶的玩法,比如通过 DNSPod 提供的泛解析和路由器的端口转发,我们可以用不同的三级域名来访问家中的不同服务,再加上 Nginx 反向代理,实现全服务的 https 访问。

后续有时间,也许会补上 DDNS 泛解析和 Nginx 反向代理,实现内网服务的 https 外网访问。

当前专题系列还有一个问题尚未解决,要能够解析 IPv6 的域名,则当前网路需要能访问 IPv6 网络,但是部分网络环境下,这是个不可解决的难题,比如公司内网为了网络安全,往往会关闭 IPv6 网络,此时即使我们有正确的域名和解析记录,我们也无法完成远程访问。

限于篇幅原因,我们将在下一篇文章中来解决这一难题,敬请期待~

猜你喜欢

转载自blog.csdn.net/qq_38894585/article/details/130204797