前面写了篇关于OpenWrt上DNS配置的,说了下作为路由器上网时,各种dns配置,对上网的影响,详见DNS基本知识以及OpenWrt路由器DNS配置详解。有人在问,这个dns配置,和常看到的动态DNS是啥区别。今天分享下动态DNS相关的原理,以及在OpenWrt上配置的过程,欢迎各位读者指正。
我结合这张图来解释吧
总体来说,动态dns能够解决ip变化时,客户端访问的问题。目前随着ipv6的兴起,不管是在家庭网络环境,还是互联网上的服务,IP变化成为常态。所以动态DNS能够很好弥补普通DNS的问题,保证服务访问顺畅。
动态dns应用案例应用举例如下:
这个话题即我们说的内网穿透。比如你配置了iptv融合,想要在外网环境也观看家里面的iptv。或者你家里面有个NAS,你想随时随地将你旅行的照片上传到家里面的NAS空间中。这些都可以参考本文的配置思路来实现。
开始之前,你需要准备如下的东西
以上除了路由器,全部免费,哈哈哈哈哈。
对了我选择的路由器是下面这个,大家可以参考:
这里cloudflare对应最开始组网图里面的域名解析服务上。进入主页,选择添加域,将你的域名添加到cloudflare来托管。我这里是已经添加完成的,我的域名是 emulyin.us.kg
托管完成之后,点击下面的域名,进入域名管理,添加一条AAAA的解析记录。名称随便写,我这里写了ddnsgo,记录选择AAAA(对应ipv6),值随便写,反正后面都会被OpenWrt上的ddnsgo组件根据实际的v6地址来改写。另外,关闭代理模式,然后保存。
创建一个api key,给ddnsgo提供入口,来改写这个域名。右上角,头像下拉框点开,选择我的个人资料 -- API令牌 -- 创建令牌创建的时候,类型选择编辑区域 DNS,区域资源部分,选择刚刚我们托管的域名
剩下的一路下一步即可。创建完成,记得保存对应的密钥。
选择其他的服务解析服务商,如腾讯/阿里等,类似的,可能会有一个用户名或者密码
这里使用ddns-go,就是前面组网图上说的那个监听组件。这里我选择的是ddns-go,当时你也可以选择其他的,这个东西都是一样的,实现原理和思路都是一样的。
这个包在OpenWrt自身带的软件仓库里面没有,需要手动到github上去下载。
项目地址:https://github.com/sirpdboy/luci-app-ddns-go。
找到release,现在看到最新的是6.7.0的版本。根据你的路由器的架构,选择对应的ipk,比如我是x86的,选择ddns-go_6.7.0-1_x86_64.ipk。另外不管什么架构,还需要选择luci-app-ddns-go(图形界面)和luci-i18n-ddns-go-zh-cn(中文支持)
下载之后传到了路由器上,或者路由器上用wget/curl命令直接下载。安装完成设置下密码,后续配置的时候需要用密码登录。
# 将下载下来的包,放到路由器上
root@openwrt:~# ls -l
-rw-r--r-- 1 root root 3931396 Oct 11 09:15 ddns-go_6.7.0-1_x86_64.ipk
-rw-r--r-- 1 root root 5199 Oct 11 09:14 luci-app-ddns-go_1.4.5_all.ipk
-rw-r--r-- 1 root root 1750 Oct 11 09:14 luci-i18n-ddns-go-zh-cn_git-24.100.44971-c6c0236_all.ipk
# 使用如下的命令安装即可
opkg install *.ipk
# 安装完成,查看
root@openwrt:~# ddns-go -h
Usage of ddns-go:
-c string
Custom configuration file path (default "/root/.ddns_go_config.yaml")
-cacheTimes int
Cache times (default 5)
-dns string
Custom DNS server address, example: 8.8.8.8
-f int
Update frequency(seconds) (default 300)
-l string
Listen address (default ":9876")
-noweb
No web service
-resetPassword string
Reset password to the one entered
-s string
Service management (install|uninstall|restart)
-skipVerify
Skip certificate verification
-u Upgrade ddns-go to the latest version
-v ddns-go version
# 修改下adminstrator的密码,后面配置的时候要用
# 下面命令YOURPASSWD换成你想要配置的密码
ddns-go -resetPassword YOURPASSWD
# 以上安装完成,可以登录路由器刷新页面,在服务下面可以看到对应的入口。
安装了luci-app-ddns-go,刷新下浏览器页面,在服务下可以看到DDNS-GO菜单,点进去,如果服务没启动,将服务启动,另外,启用web服务,指定dns解析服务器,我们用了Cloudflare,就选它吧。其他的保持默认。
点击页面打开ddns-go后台,登录需要密码, 用户名:adminstrator 密码:安装的时候设置
进入之后,provider选择cloudflare,下面的token选择创建api得到的key。
填写这个token的目的,就是可以通过api的方式去更新cloudflare上的解析记录。
下拉到下面,ipv4部分,Enabled取消勾选。因为家里面的环境一般没有公网ipv4。ipv6部分:Enabled打勾 获取ip部分,选择api,有逗号隔开几个url,在路由器上curl下,不通的删掉,通的留下。这里的作用就是最开始图中,绿色线缆部分,监听本地ip的部分。比如:
root@openwrt:~# curl https://speed.neu6.edu.cn/getIP.php
240e:399:e5d:7c00:be24:11ff:fea2:ef56
root@openwrt:~#
看到我的v6地址是240e:399:e5d:7c00:be24:11ff:fea2:ef56
domains部分,选择我们在cloudflare上添加的解析记录,ddnsgo.emulyin.us.kg。如果有多个,填写多行。
填写完成之后,保存。
这个时候,查看cloudflare的解析,发现地址已经动态更新完成
在有v6的环境下,访问ddnsgo.emulyin.us.kg 。
动态DNS很好弥补了DNS在ip变化的情况下,外部的访问问题。在本文OpenWrt下,我们选择V6地址,是因为我们路由器能获取到V6的地址,而且是公网的v6地址。所以我们可以用这样的方法来操作。使用动态DNS的前提是,不管你服务器上的ip怎么变,都要保证网络可达, 否则即使配置了,解析到了,访问不了也是没用的。
以上就是关于DDNS相关的测试验证,欢迎各位指正。 - END -