OpenWRT 动态 DNS(DDNS)设置教程

DDNS

家里宽带有公网 IP 的话,可以做很多有趣的事情。比如远程控制家里的电脑(Windows/Linux/MacOS 均可),也可以远程访问家里的 NAS,直接播放存在家里设备上的电影、音乐等等。

不过我们家宽的公网 IP 都不是固定 IP,重启光猫、路由器 IP 会变,隔一段时间运营商也会下发新的 IP。所以我们需要用动态 DNS(DDNS)将最新的 IP 绑定到固定的域名上,这样就只需要使用固定的域名,不用担心 IP 改变导致无法连接了。

大部分路由器都内置了 DDNS 功能,不过随着监管收紧,这类服务也在逐渐关停,参考:便捷不再,TP-LINK 的 TPDDNS 将停止服务

如果你有一台运行 OpenWRT 的路由器或软路由,推荐创建自己的 DDNS,因为路由器本身就要 7×24 运行,用它来检测、更新 DNS 再合适不过了。

硬件和域名

既然你会点进这篇教程,我会默认你已经拥有运行 OpenWRT 的硬件,而且你的 OpenWRT 固件中包含 DDNS 组件。

除了 OpenWRT,还需要一个域名。

本文耕读君会以阿里云的设置来举例,其他域名注册商的操作类似,没有域名的话可以先购买:

DDNS 跟你用什么域名没有任何关系。如果只是用于 DDNS,那么挑便宜好记的注册就行。

获取 AccessKey

OpenWRT 的 DDNS 服务需要用到 AccessKey,这样程序才能获取权限去更新 DNS 记录。可以参照以下步骤获取阿里云的 AccessKey。

首先登录阿里云控制台,将鼠标移动到右上角账号,在弹出的窗口上点击「AccessKey」。

阿里云 AccessKey 入口

在弹出的提示中点击「使用 RAM 用户 AccessKey」。RAM 用户相当于一个子账号,我们只赋予它最小权限,避免 Key 泄露导致整个账号被控制。

阿里云 AccessKey 安全提示

在新页面点击左侧菜单里的「用户」:

阿里云新建 RAM 用户

然后点击「创建用户」按钮:

阿里云新建 RAM 用户

只需要填写登录名称,勾选「使用永久 AccessKey 访问」,再勾选确认按钮上方的「我确认必须创建 AccessKey」,最后点击确定按钮就可以完成 RAM 用户的创建。

阿里云新建 RAM 用户

在这一步,我们需要把 AccessKey ID 和 AccessKey Secret 复制保存到本地,方便后续使用。ID 可以理解为账号,Secret 可以理解为密码。

切记不要分享 AccessKey 给别人!

阿里云 AccessKey ID 和 Secret

设置权限

此时 RAM 账户只是一个空壳,需要给它赋予权限。点击「权限管理」-「新增授权」:

阿里云 RAM 账户新增授权

然后搜索「dns」,在下方勾选「AliyunDNSFullAccess」,它会出现在右侧窗口,最后点击「确认新增授权」按钮,权限就添加好了。

阿里云 RAM 用户添加权限

添加 DNS 记录

DDNS 服务会通过特定接口检测当前的公网 IP,然后与域名原来指向的 IP 做对比,如果不同则将新 IP 更新到 DNS 记录中。

为此,我们可以先在域名添加一条初始的 DNS 记录。

在阿里云域名控制台可以看到当前持有域名的列表,点击目标域名右侧的「解析」,进入 DNS 记录管理页面。

阿里云域名列表

点击「添加记录」,记录类型选择「A 记录」,这是一个指向 IPv4 的记录类型。

主机记录填你希望使用的前缀,这里假设填写「lizhi」,那么之后会用到的完整域名就是 lizhi.pcoic.com

记录值可以填 127.0.0.1,这是一个本地回环地址,我们当作临时占位符来用,稍后就会被 DDNS 程序覆盖。

阿里云添加域名 DNS 记录

最后点击「确定」保存记录即可。

创建 DDNS 服务

登录 OpenWRT,进入 DDNS 页面。不同固件的入口可能会不一样,名字一般是「动态 DNS」。

OpenWRT 动态 DNS 程序

在添加新服务前,建议点击「更新 DDNS 服务列表」。因为程序支持的服务可能增加也可能减少,域名 DNS 的接口也可能改变。

点击「添加新服务」按钮,给服务取个名字,IP 版本选择 IPv4(虽然也支持 IPv6,但 v4 已经足够),提供商选择 aliyun.com

OpenWRT 创建 DDNS 服务

创建好之后,点击下方对应服务右侧的「编辑」按钮,即可开始添加配置信息。

OpenWRT DDNS 重新加载服务

配置 DDNS 服务

在基础设置这里,可以按照我的截图来填写。

  • 查询主机、域名都填写刚才添加的 DNS 记录,例如:lizhi.pcoic.com
  • 用户名:AccessKey ID
  • 密码:AccessKey Secret
OpenWRT DDNS 服务基础设置

高级设置页面中,需要注意的是「IP 地址来源」。这个选项决定了 DDNS 程序如何获取你的公网 IP。

像耕读君家里的软路由是以旁路由的形式接入的,所以通过「接口」以及「网络」获取到的都是主路由分配的内网 IP,只能通过「URL」的形式获取真正的公网 IP。

如果不确定的情况下,建议选择「URL」,并将「用于检测的 URL」改成 https://ip.3322.net/ ,这个网址会返回你的公网 IP 给 DDNS 程序。

OpenWRT DDNS 服务高级设置

还有一个需要更改的是「计时器设定」。这个设置决定了 OpenWRT 上的 DDNS 程序多久检查一次 IP。

前面说过,我们家宽的公网 IP 在很多情况下都会改变,如果不想 IP 变了之后 DNS 记录还迟迟不更新,就可以把间隔时间设置得短一些。比如我把检查间隔设置成 5 分钟,强制更新周期设置为 30 分钟:

OpenWRT DDNS 服务计时器设定

保存后,DDNS 服务就设置好了。另外要注意,每次更改了服务的设置,都要点击 DDNS 程序主页面下方的「保存并应用」按钮才会生效。

OpenWRT 保存并应用设置

启动 DDNS 程序 & 手动更新 DNS 记录

如果在你的界面上有「启动 DDNS」的按钮,说明当前主程序没有运行,即使添加了服务也没有用。你只需点击「启动 DDNS」即可,下图是程序启动后的正常状态。

OpenWRT 动态 DNS 程序

此时如果想验证一下,看 DDNS 服务能否获取正确的 IP 并更新到 DNS 记录中,可以点击服务右侧的「重新加载」按钮。

OpenWRT DDNS 重新加载服务

这个操作会重启服务,实现手动更新的效果。等服务运行完成,可以切换到阿里云的域名管理页面,看看指向的 IP 是否已经更新。

另外,DDNS 程序本身也会记录日志。点击「编辑」,在服务的设置页切换到「日志查看器」,再点击「读取/重新读取 日志文件」按钮,就可以看到 IP 的变更日志了。

OpenWRT DDNS 日志查看器

如果设置没有问题,那么域名就已经指向你宽带的公网 IP 了。其他域名注册商的操作类似,按照以上思路,稍微摸索下就能解决。

接下来可以关闭手机的 Wi-Fi,用微软的 Windows 或 VNC Viewer 这类应用测试远程桌面控制,用 Termius 远程 SSH 登录,以及用 Documents 测试远程连接家里的 WebDev/SMB 服务等。

关于 SMB,推荐阅读:Windows 添加 Samba 共享失败?看完这篇你就能搞定了

耕读君
耕读君

热爱科技,热爱折腾,有一个可爱的女儿

文章: 384