这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

设置OpenWRT的DNS解析

介绍在 OpenWRT 下进行DNS解析

1 - 腾讯云DDNS设置

通过 腾讯云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月)已经打不开了。但好在下载地址还可以使用:

http://openwrt-tencentddns-1301800460.cos.ap-guangzhou.myqcloud.com/luci-app-tencentddns_0.1.0-1_all.ipk

这个插件很久没有更新了,不过目前还可以用。

安装方式参考上面文档的说明,在 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 进行 dns 解析加速

开启 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 之后发现偶尔会遇到莫名其妙的问题,暂时先不用吧。

参考资料