1. 首页
  2. 科技数码

一招搞定路由器下全部设备的ddns

需求再现

如果你有以下需求:

  1. 没有ipv4公网地址,但是想要在外访问家中设备。

  2. 不想折腾穿透等复杂操作,或者对zerotier每次还要打开软件感到疲倦

  3. 想要让内网下windows可以远程桌面,但是找了半天发现windows下ddns软件不好用

  4. socat启动后出现各种问题

那么这篇文章所介绍的方法一定适合你。为了简介本文不再解释有状态无状态、socat、ipv6前缀后缀等名词,而且本人也未必能够解释清楚,还可能误导大家。只要大家跟着步骤走就可以啦。


本文旨在针对没有公网ipv4地址的小伙伴(目前三大运营商基本上都完成了ipv6公网部署,除了极少部分地区ipv6是大内网)实现只在路由器端进行部署,路由器下各个客户端无需安装任何软件即可实现每台设备的ipv6地址和域名绑定,在不使用socat等ipv6转ipv4端口转发工具的情况下完成外网直接访问内网设备。

需要你的路由器可以运行sh脚本同时可以自定义ipv6防火墙。


开始部署

以下环节以openwrt为例。其他路由系统按照自己的系统操作即可。

第一步

获得自己的域名。这里推荐免费的dynv6域名服务,虽然不是顶级域名,但是他家可以直接设定mac地址和ipv6前缀自动组合。(因为ipv6地址后缀是根据设备的mac地址生成的,一般不会变动)。进入网页后注册。

注册账户注册账户

第二步

点击创建域名,按照下图进行填写

注册域名注册域名

第三步

点进你刚才注册的域名,复制下你的域名和密码(其实是token)

复制关键信息复制关键信息

然后点击记录,开始填写mac地址。注意添加AAAA记录,你路由下有几个设备要联网就添加几个,填写的信息看图。

mac地址mac地址

到此结束,等到上传了ipv6前缀后,dynv6网站会自动帮我们结合mac地址生成完整的ipv6地址

第四步

创建脚本,按照注释修改。(主要是填入你的域名和token)
由于大妈对代码支持不好,这里上传写好的脚本文件。各位用记事本或者编程软件打开修改即可。
脚本下载链接:点击下载
修改完成后上传到openwrt中,建议放到/bin目录下。

第五步

验证脚本。openwrt进入TTYD终端,输入账号和密码登录后运行脚本看是否成功输出。

验证脚本验证脚本

如果出现了问题也不要急,按照我下面给出的排查即可:

  • 如果打马赛克的地方没有成功显示,多半是你的接口填错了,看一下我脚本里写的注释,改一下对应接口。

  • 如果出现了linexxxx,说明你在更改脚本的时候改了不该改的东西,建议输入vim “脚本名称”进入看一下是不是格式哪里弄错了。

  • 如果出现了ipv6前缀,但是没有上传成功,可能是/60那里出现了问题,检查一下你的前缀长度是不是60.

如果进行到这里都没有问题,可以进行最后一步定时执行了。

第六步

添加定时任务,使得脚本可以定时监测ipv6地址变动

添加定时添加定时

最后一步

到防火墙位置,点击端口转发,对你所需要的端口进行放行。这一步大家按照需求自己寻找教程吧,我这里就不详细说了。最后根据你的“设备名.域名”练一下试试吧。
此处注意,如果你没有设置回流,可能会出现在同一局域网下的设备无法访问的情况,你只需要切换到外网环境就正常了。

一招搞定路由器下全部设备的ddns

写在末尾

有人可能会说设置socat进行ipv6转ipv4,还能解决ipv6无法直接访问qb等问题,但是我在使用socat的过程中发现和我正在使用的插件有冲突,于是使用了这个方法。
也可能有人会说,直接在每个设备上放一个ddns脚本就可以了,毕竟各大dns服务商都给了api。但是我个人觉得一个脚本完成全部操作更方便一点。
笔者学疏才浅,难免会有描述错误之处,还望大家批评指正。有疑问也可以留言,我会竭尽所能回复。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/47144.html