openwrt开启doh和dot
缘起
最近在折腾ipv6,也就难免的会折腾到dns上,而之前使用的dns一直是运营商dns + 114dns。
网上查了下,114的dns和运营商的dns也都不一定靠谱,会有域名劫持,dns缓存劫持的问题,而最近最新的dns是dot和doh技术,那么也就顺便折腾一下。
折腾过程
doh实现
openwrt上,doh的实现,我使用了https-dns-proxy来实现,这个工具再带luci-app网页界面,可以选择阿里dns、dnspod等,这里不建议使用google的了,因为会存在域名解析地域问题,把dns解析到国外,访问会比较慢了。
使用如下命令安装:
opkg install https-dns-proxy luci-app-https-dns-proxy luci-i18n-https-dns-proxy-zh-cn
在界面上,我选择了dnspod和阿里云的doh服务,我们只用设置下相关端口即可,可以不选择修改dnsmasq配置,等下手工配置下openwrt的dns端口转发到https-dns-proxy对应的端口即可。
dot实现
dot的实现,我选择了stubby,这个没有luci的界面可用,使用如下命令安装:
opkg install stubby
配置文件在/etc/config/stubby
,可以修改如下,使用阿里云和dnspod的dot服务。
config stubby 'global' option manual '0' option trigger 'lan' # option triggerdelay '2' list dns_transport 'GETDNS_TRANSPORT_TLS' option tls_authentication '1' option tls_query_padding_blocksize '128' '/var/lib/stubby/getdns-root.key' option edns_client_subnet_private '1' option idle_timeout '30000' option round_robin_upstreams '1' list listen_address '127.0.0.1@5453' list listen_address '0::1@5453' option log_level '7' # option command_line_arguments '' # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20' # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256' option tls_min_version '1.2' option tls_max_version '1.3' # Upstream resolvers are specified using 'resolver' sections. #config resolver # option address '162.14.21.56' # option tls_auth_name 'dot.pub' #config resolver # option address '162.14.21.178' # option tls_auth_name 'dot.pub' config resolver option address '223.5.5.5' option tls_auth_name 'dns.alidns.com' config resolver option address '223.6.6.6' option tls_auth_name 'dns.alidns.com'
注意这里dnspod的dot还非常初步,地址也不是传统dns的119地址,且非常不稳定,我在这里禁用了dnspod的dot。
openwrt dns转发
经过上面设置,doh和dot已经运行起来了,下面设置下系统的dns,使用dot和doh服务端口就可以了。
在网络
-->DHCP/DNS
-->DNS 转发
中,增加doh、dot分别的服务端口即可,比如127.0.0.1#9696
这里建议除了dot、doh的端口,增加几个传统dns在列表后边,防止doh、dot不稳定导致dns解析异常。
从最近运行情况看,还是有不少不稳定情况的,其中:Dnspod的doh和dot基本不稳定,访问耗时很大,已基本被我放弃。
总结
doh和dot是未来的趋势,能够降低dns劫持的情况,但是目前还不稳定,现在要用的话,国内也就阿里云dns和dnspod,阿里云比较稳定,推荐使用,dnspod还在测试阶段,很不稳定。
另外,dot和doh是很类似的技术,都是基于安全的tcp连接来做的,而唯一区别,doh基于https协议,dot基于裸的lts协议,基本差不多的。
参考文档
https://openwrt.org/docs/guide-user/services/dns/dot_dnsmasq_stubby
https://www.zhihu.com/question/34826522
https://blog.skk.moe/post/which-public-dns-to-use/
https://openwrt.org/docs/guide-user/services/dns/doh_dnsmasq_https-dns-proxy
https://github.com/openwrt/packages/blob/master/net/stubby/files/README.md
https://www.dnspod.cn/Products/Public.DNS
https://www.alidns.com/knowledge?type=SETTING_DOCS#company_doh
https://forum.openwrt.org/t/https-dns-proxy-vs-stubby/52446
发表评论