设置OpenWRT的DNS解析
1 - 腾讯云DDNS设置
背景
希望通过动态域名方便的访问运行在家里的几台服务器。
由于我的域名目前是在腾讯云进行的域名解析,因此需要实现在 openwrt 中使用 腾讯云DDNS。
准备工作
创建子域名
在腾讯云控制台,选择要使用的域名:
https://console.dnspod.cn/dns/list
在其下创建一个新的 A 记录,如 dev
,记录值随便填写一个,后面会被 ddns 插件覆盖为正确的值。
由于是免费套餐,TTL 最小只能设置为 600 (单位秒,也就是十分钟)。
创建 API token
由于 ddns 插件是通过 API token 来执行 dns 记录更新,因此需要提前创建 API token。打开网页:
https://console.dnspod.cn/account/token/token
注意: 使用的 DNSPod Token,不是 腾讯云 API 密钥
创建密钥,设置为:
dev.skyao.io
ID :383XXX
Token :3de14556b8a8bXXXXXXXXXXXXXX
小心保存好这个 ID 和 token,后面要用。
配置openwrt
安装TencentDDNS
很幸运的是腾讯云提供了一个腾讯云DDNS 的 openwrt 插件:
https://openapp.qq.com/docs/OpenWRT/ddns.html
更新:这个网址现在(2023年6月)已经打不开了。但好在下载地址还可以使用:
这个插件很久没有更新了,不过目前还可以用。
安装方式参考上面文档的说明,在 openwrt 的 系统 -》软件包 页面进行网络安装:
Downloading http://openwrt-tencentddns-1301800460.cos.ap-guangzhou.myqcloud.com/luci-app-tencentddns_0.1.0-1_all.ipk
Installing luci-app-tencentddns (0.1.0-1) to root...
Configuring luci-app-tencentddns.
Collected errors:
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-hash
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-hash found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-null
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-null found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-aead
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-aead found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-manager
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-manager found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-user
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-user found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-crypto-authenc
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-authenc found, but incompatible with the architectures configured
* pkg_hash_check_unresolved: cannot find dependency kernel (= 5.15.86-1-6d22281f0efc3afbdd740ed895611758) for kmod-cryptodev
* pkg_hash_fetch_best_installation_candidate: Packages for kmod-cryptodev found, but incompatible with the architectures configured
一堆报错,我正要考虑这些依赖问题时,发现 openwrt 的左边导航条增加一个了 “腾讯云设置” 的分类,下面有 腾讯云 DDNS。实际验证确认上述报错不影响使用,就先忽略吧。
备注:后续网络安装时遇到无法安装的情况,报错文件不存在,莫名其妙。后来发现可以ssh到openwrt下,然后wget下载,再 okpg install 。
配置腾讯云 DDNS
进入 腾讯云 DDNS 设置界面,选择启动,勾选 “清除所有同名记录”, 密钥ID 和 密钥Token 填写前面保存的 DNSPod Token 的内容。WAN-IP来源 选择 wan,检查时间设置为最小的 1 分钟。
点击保存&应用:
2023-02-08 12:27:27 WAN-IP: 116.21.255.9
2023-02-08 12:27:27 DOMAIN-IP: 116.21.255.9
2023-02-08 12:27:27 IP dont need UPDATE...
验证ddns
此时去腾讯云的页面,可以看到dev这个a记录的值已经被修改为正确的ip地址:
https://console.dnspod.cn/dns/skyao.io/record
用 nslookup 命令检查:
nslookup dev.skyao.io
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: dev.skyao.io
Address: 116.21.255.9
备注:由于dns的缓冲,如果之前有解析过这个域名,则可能会继续沿用上一次解析的结果,稍等10分钟待 dns ttl 失效。
参考文档
2 - [归档]设置OpenWRT的smartdns
开启 smartdns 之后发现偶尔会遇到莫名其妙的问题,暂时先不用。
背景
smartdns 介绍
官方网站
https://pymumu.github.io/smartdns/
开启 smartdns
openwrt 一般自带 smartdns 支持:
http://192.168.0.1/cgi-bin/luci/admin/services/smartdns
配置
勾选启用,本地端口设置为53,配置为主dns
设置上游服务器
国内服务器:
服务器名称 服务器地IP 协议类型 114 114.114.114.114 UDP 百度 180.76.76.76 UDP DNSPod dns.pub/dns-query https 阿里 dns.alidns.com/dns-query https
国外服务器:
服务器名称 服务器地IP 协议类型 Google dns.google/dns-query https CloudFare dns.cloudflare.com/dns-query https Quad9 dns.quad9.net/dns-query https OpenDNS doh.opendns.com/dns-query https
高级设置
测速模式: ping,tcp:80,tcp:433
勾选:
- tcp 服务器
- 双栈IP优选
- 域名预加载
- 缓存过期服务
设置:
- 缓存大小: 默认的 20000
- 域名TTL: 30
- 域名TTL最小值: 30
- 域名TTL最大值: 300
- 回应的域名TTL最大值: 300
域名地址
在域名规则-》域名地址中可以设置自定义的域名地址:
address /skyserver/192.168.0.10
address /skyserver2/192.168.0.20
address /skyserver3/192.168.0.30
address /skyserver4/192.168.0.40
address /skyserver5/192.168.0.50
address /skynas/192.168.0.70
address /skywork/192.168.0.90
备注:很奇怪我设置之后无法生效,域名解析失败
验证
nslookup baidu.com
服务器: smartdns
Address: 192.168.0.1
非权威应答:
名称: baidu.com
Address: 110.242.68.66
nslookup baidu.com 8.8.8.8
服务器: dns.google
Address: 8.8.8.8
非权威应答:
名称: baidu.com
Addresses: 110.242.68.66
39.156.66.10
后记
开启 smartdns 之后发现偶尔会遇到莫名其妙的问题,暂时先不用吧。