前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenWrt配置和使用DDNS-GO

OpenWrt配置和使用DDNS-GO

作者头像
用户1160092
发布2024-11-12 10:37:45
1750
发布2024-11-12 10:37:45
举报
文章被收录于专栏:MUM笔记

前面写了篇关于OpenWrt上DNS配置的,说了下作为路由器上网时,各种dns配置,对上网的影响,详见DNS基本知识以及OpenWrt路由器DNS配置详解。有人在问,这个dns配置,和常看到的动态DNS是啥区别。今天分享下动态DNS相关的原理,以及在OpenWrt上配置的过程,欢迎各位读者指正。

动态DNS是什么

我结合这张图来解释吧

  1. 我们正常上网的行为,图中①~⑤黑线部分。前面说的OpenWrt上的DNS配置,也是针对这部分的配置和优化。
  2. 但是如果我的web服务器没有固定的公网ip,比如今天是1.1.1.1, 明天变成了2.2.2.2 , 那么我就需要根据变化,随时更新我的dns解析记录
  3. 上面的问题,开发人员写了个监听组件,部署在这个服务器上。这个组件动态的检查服务器的公网ip,然后通过dns解析服务商的api,将这个变了的ip,更新到原来的解析记录上。这个过程随ip变化,更新我们的dns记录,就是我们所谓的动态DNS了。
  4. 从我用户的角度来看,我访问某一个服务,我只关心对应的域名,这个域名后面的ip,我不关心是什么,也不管他是否变化,只要网络可达,我就能访问到这个服务。

总体来说,动态dns能够解决ip变化时,客户端访问的问题。目前随着ipv6的兴起,不管是在家庭网络环境,还是互联网上的服务,IP变化成为常态。所以动态DNS能够很好弥补普通DNS的问题,保证服务访问顺畅。

动态dns应用案例应用举例如下:

  • 远程访问 使用动态 DNS,您可以远程访问内部网络资源,这里对我们家庭网络环境来说,即所谓的内网穿透。例如文件服务器、Web 服务器或远程桌面服务。
  • 应用托管服务 获取用于托管的静态 IP 地址代价昂贵,并且针对大型企业提供定价。处于早期发展阶段的初创企业和小型企业使用动态 DNS 在内部基础设施上托管服务或应用程序。他们可以托管网站、FTP 服务器、游戏服务器或任何其他服务,这些服务需要一致且可访问的域名。

OpenWrt下如何通过动态dns解决外网访问问题

这个话题即我们说的内网穿透。比如你配置了iptv融合,想要在外网环境也观看家里面的iptv。或者你家里面有个NAS,你想随时随地将你旅行的照片上传到家里面的NAS空间中。这些都可以参考本文的配置思路来实现。

开始之前

开始之前,你需要准备如下的东西

  1. 一个域名。可以花钱买,也有一些免费的二级域名。我这里用的是emulyin.us.kg
  2. 一个刷了OpenWrt的路由器。固件版本和硬件无所谓,能刷上OpenWrt就行。这里路由器的作用就是最开始组网图里面的web应用服务器。
  3. 确保你的网络环境支持ipv6。家庭组网下,可能不一定有v4的地址,但是一般都有v6的地址,v6地址都是所谓的公网地址。如果你家里的环境连ipv6地址都没有,那可以联系运营商问问什么情况,或者看下是否你的光猫配置有问题。
  4. 去注册一个域名解析服务上的账号,把你的的域名放到这个服务商上去解析。我这里用的cloudflare(选择他主要是免费,你也可以选择腾讯,阿里这些,好像也有免费的计划)

以上除了路由器,全部免费,哈哈哈哈哈。

对了我选择的路由器是下面这个,大家可以参考:

cloudflare上配置

这里cloudflare对应最开始组网图里面的域名解析服务上。进入主页,选择添加域,将你的域名添加到cloudflare来托管。我这里是已经添加完成的,我的域名是 emulyin.us.kg

托管完成之后,点击下面的域名,进入域名管理,添加一条AAAA的解析记录。名称随便写,我这里写了ddnsgo,记录选择AAAA(对应ipv6),值随便写,反正后面都会被OpenWrt上的ddnsgo组件根据实际的v6地址来改写。另外,关闭代理模式,然后保存。

创建一个api key,给ddnsgo提供入口,来改写这个域名。右上角,头像下拉框点开,选择我的个人资料 -- API令牌 -- 创建令牌创建的时候,类型选择编辑区域 DNS,区域资源部分,选择刚刚我们托管的域名

剩下的一路下一步即可。创建完成,记得保存对应的密钥。

选择其他的服务解析服务商,如腾讯/阿里等,类似的,可能会有一个用户名或者密码

OpenWrt安装ddns-go

这里使用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命令直接下载。安装完成设置下密码,后续配置的时候需要用密码登录。

代码语言:javascript
复制
# 将下载下来的包,放到路由器上
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

# 以上安装完成,可以登录路由器刷新页面,在服务下面可以看到对应的入口。


DDNS-GO配置

安装了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的部分。比如:

代码语言:javascript
复制
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:ef56domains部分,选择我们在cloudflare上添加的解析记录,ddnsgo.emulyin.us.kg。如果有多个,填写多行。

填写完成之后,保存。

验证

这个时候,查看cloudflare的解析,发现地址已经动态更新完成

在有v6的环境下,访问ddnsgo.emulyin.us.kg 。

总结

动态DNS很好弥补了DNS在ip变化的情况下,外部的访问问题。在本文OpenWrt下,我们选择V6地址,是因为我们路由器能获取到V6的地址,而且是公网的v6地址。所以我们可以用这样的方法来操作。使用动态DNS的前提是,不管你服务器上的ip怎么变,都要保证网络可达, 否则即使配置了,解析到了,访问不了也是没用的。

以上就是关于DDNS相关的测试验证,欢迎各位指正。 - END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MUM笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动态DNS是什么
  • OpenWrt下如何通过动态dns解决外网访问问题
    • 开始之前
      • cloudflare上配置
        • OpenWrt安装ddns-go
          • DDNS-GO配置
            • 验证
            • 总结
            相关产品与服务
            云解析 DNS
            云解析 DNS 提供快速、稳定且高可用的 DNS 解析服务,支持智能解析、流量调度、安全防护。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档