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://v2ex.com/t/455060

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


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。