smartdns

A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。

GPL-3.0 License

Stars
7.8K

Bot releases are hidden (Show)

smartdns - Release 46 Latest Release

Published by pymumu 4 months ago

更新内容:

  1. audit日志增加输出group信息。
  2. 修正DOH GET方法查询错误问题。
  3. 修正bind选项crash问题。
  4. DNS64支持group组配置
  5. 修正上游查询重试的问题。
  6. 其他一些问题修正。

smartdns帮助文档:https://pymumu.github.io/smartdns/
非静态版本下载:https://github.com/PikuZheng/smartdns/releases/

注意:

  • luci-compat版本后续不再演进,不再添加新功能,版本维护至2024年底,请及时升级至openwrt 2203之后的版本。
  • 入门用户推荐优先使用luci-lite版本。
  • 如果安装luci后界面无显示,请尝试清除浏览器缓存。
smartdns - Release 45

Published by pymumu 8 months ago

🎉2024新春版,完善功能,提升性能、可靠性,推荐更新。
㊗️也祝福各位新春快乐。

更新内容:

  1. 增加luci-lite轻量版本,入门用户使用更容易。
  2. 增加ip-alias选项,支持CDN IP加速,具体参考:https://pymumu.github.io/smartdns/config/ip-alias/
  3. 增加ip-rulesip-set参数,支持批量设置IP规则:https://pymumu.github.io/smartdns/config/ip-set/
  4. 发布smartdns官方docker镜像:https://hub.docker.com/r/pymumu/smartdns
  5. 增加bind-https选项,支持DOH服务器。
  6. 新增client-rules选项,支持按客户端MAC地址,IP分组:https://pymumu.github.io/smartdns/config/client-rule/
  7. 新增group-begin, group-endgroup-match配置组选项,支持虚拟DNS服务器能力:https://pymumu.github.io/smartdns/config/rule-group/
  8. 新增acl-enable参数,配合client-rules选项控制客户端访问权限。
  9. 域名规则支持-, .用于匹配主域名:https://pymumu.github.io/smartdns/config/ad-block/
  10. 优化缓存管理机制,减少内存占用和CPU占用。
  11. /domain/类域名规则,增加/./根域名规则设置, 在不指定/domain/的情况下为全局规则,如: address #6, domain-rules /./ -[rules...]
  12. server参数增加短配置选项,
    -g -> -group
    -e -> -exclude-default-group    
    -p -> -proxy                  
    -k -> -no-check-certificate
    -b -> -bootstrap-dns             
    
  13. luci界面周期下载支持配置小时和星期,by @zxlhhyccc
  14. smartdns命令行增加-R选项和restart-on-crash yes参数,当进程崩溃时自动重启进程。
  15. conf-file支持通配符, conf-file *.conf
  16. 配置文件中的域名支持国际化,支持中文。
  17. 新增srv-record用于配置SRV记录,可用于vlmcsd
  18. 新增https-record用于支持配置HTTPS记录,可支持ECH等安全特性。
  19. 支持proxy-dnssec。(关闭测速后启用)
  20. 增加mdns-lookup参数,用于通过mDNS查询本地主机名或IP地址反查等。
  21. 增加log-syslog, audit-syslog参数,支持配置smartdns输出日志到系统日志。
  22. 增加max-query-limit参数,配置最大并发请求数。
  23. 增加cache-mem-size参数,支持指定缓存占用的最大内存。

问题修正和优化:

  1. 解决debian系统中systemd启动依赖问题,by @Brainos
  2. 修正optware下dnsmasq启动失败的问题。
  3. 对不支持的配置项输出日志,错误的配置,退出程序。
  4. 缓存PTR记录。
  5. 优化一些日志打印。
  6. 最快IP模式下,等待更多时间以获取最快IP。
  7. 当address指定IPv4的情况下,IPv6默认返回SOA。
  8. 其他若干问题修改。

smartdns帮助文档:https://pymumu.github.io/smartdns/
非静态版本下载:https://github.com/PikuZheng/smartdns/releases/

注意:

  • luci-compat版本后续不再演进,不再添加新功能,版本维护至2024年底,请及时升级至openwrt 2203之后的版本。
  • 入门用户推荐优先使用luci-lite版本。
  • 如果安装luci后界面无显示,请尝试清除浏览器缓存。

Full Changelog: https://github.com/pymumu/smartdns/compare/Release43...Release45

smartdns - Release 43

Published by pymumu about 1 year ago

更新内容:

  1. force-qtype-SOA支持范围的写法,如: force-qtype-SOA 1-23,48-64。
  2. address参数支持多IP地址,支持最多8个IP地址,如:address /a.com/1.2.3.4,5.6.7.8
  3. 域名规则支持前缀通配。(*-仅支持在域名开头)
        // 前缀通配
        *-a.example.com 
        // 仅匹配子域名
        *.example.com
        // 仅匹配主域名
        -.example.com
    
  4. server/server-tcp/server-tls/server-https支持-host-ip指定IP地址。
  5. 增加ddns-domain选项,用于将DDNS域名解析为本机IP地址,避免上游查询。
  6. 配置文件配置项支持\换行。
  7. 支持后台运行时输出日志到终端, log-console yes

问题修正:

  1. 修正max TTL问题
  2. 优化systemd服务启动时的错误情况。
  3. 代码结构优化和优化log打印。
  4. 修正openwrt系统下广告屏蔽失效的问题。
  5. 修正subnet不工作的问题。
  6. 修正bootstrap DNS重试失败的问题。
  7. 修正bugos-nxdomain问题。

smartdns帮助文档:https://pymumu.github.io/smartdns/
非静态版本下载:https://github.com/PikuZheng/smartdns/releases/
Full Changelog: https://github.com/pymumu/smartdns/compare/Release42...Release43

smartdns - Release 42

Published by pymumu over 1 year ago

更新内容:

  1. 支持DOT服务器,bind-tls选项。
  2. server参数增加-bootstrap-dns选项,支持指定专门的bootstrapDNS服务器。
  3. 支持设置smartdns从控制台输出log,以方便容器化部署分析log, log-console选项。新增log-level off,完全关闭LOG。
  4. 支持默认情况下按照设备内存自动设置cache大小。
  5. cache文件减少版本升级后不可用的概率。
  6. domain-rules新增-no-cache, -response-mode参数。
  7. 支持完全禁用IPV6查询的情况下,允许例外的域名: address /domain.com/-
  8. 支持自动将address类域名,展开对应的PTR记录, expand-ptr-from-address yes选项。
  9. server参数新增-subnet选项,可指定单个DNS上游的ECS信息。联通或移动用户可模拟电信用户IP地址,让223.5.5.5返回电信就近的IP地址,部分网站网络访问时延会有较大改善。
  10. 新增cache-checkpoint-time参数,设置周期保存cache文件,避免cache丢失。
  11. bind参数新增-ipset-nftset选项,支持对应端口查询时,强制设置ipset和nftset。

luci更新

  1. luci第二DNS新增ipset,和nftset选项。
  2. luci增加对log的设置。
  3. luci第一,第二DNS,增加额外标志参数,可以自定义参数。
  4. luci修正一些文字错误

其他更新

  1. 增加test测试代码,提升软件整体质量。
  2. 增加性能测试,具体性能指标参考:https://github.com/pymumu/smartdns/issues/1337#issuecomment-1475902029
  3. 全新的smartdns帮助文档:https://pymumu.github.io/smartdns/
  4. Release42版本合入openwrt主干,可以直接feed更新编译安装,软件体积更小。

BUG修正

  1. 修正几个Crash问题。
  2. 优化log,降低无效log的级别。
  3. 解决cname域名循环的问题。

注意事项

  1. luci界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。
  2. lede如安装 luci-app-smartdns.*.all-luci-compat-all.ipk不显示,请额外安装luci-compat软件包。
  3. 推荐使用js版本(非compat)的luci界面,功能更加完善。
  4. smartdns从37版本已经会返回多个IP地址,具体原因查看:https://pymumu.github.io/smartdns/faq/#smartdnsip,判断smartdns是否生效,请使用nslookup smartdns来查看。
smartdns - Release 41

Published by pymumu over 1 year ago

更新内容:

  1. 支持通过socks5/http代理进行DNS查询。proxy-server参数
  2. bind参数支持绑定到具体的网口。bind ip:port@interface
  3. luci界面增加socks5代理配置、测速模式、返回结果模式、DNS64的配置。
  4. luci界面支持bind绑定设备配置。
  5. 随机化Query ID。
  6. 增加ipset-no-speed, nftset-no-speed参数,支持测速失败的情况下,将域名IP添加到对应的ipset/nftset。
  7. 增加cname参数,支持别名查询。cname /a.com/b.com
  8. 域名规则domain-rules增加rr-ttl, rr-ttl-min, rr-ttl-max参数设置TTL特定域名的TTL时间。
  9. 支持DNS64。dns64 64:ff9b::/96参数
  10. 配置文件支持\换行,避免行字符串过长。
  11. 解决一些BUG,提高稳定性。

注意事项:

  1. luci界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。
smartdns - Release 41 RC3

Published by pymumu over 1 year ago

更新内容:

  1. 支持通过socks5/http代理进行DNS查询。proxy-server参数
  2. bind参数支持绑定到具体的网口。bind ip:port@interface
  3. luci界面增加socks5代理配置、测速模式、返回结果模式、DNS64的配置。
  4. luci界面支持bind绑定设备配置。
  5. 随机化Query ID。
  6. 增加ipset-no-speed, nftset-no-speed参数,支持测速失败的情况下,将域名IP添加到对应的ipset/nftset。
  7. 增加cname参数,支持别名查询。cname /a.com/b.com
  8. 域名规则domain-rules增加rr-ttl, rr-ttl-min, rr-ttl-max参数设置TTL特定域名的TTL时间。
  9. 支持DNS64。dns64 64:ff9b::/96参数
  10. 配置文件支持\换行,避免行字符串过长。
  11. 解决一些BUG,提高稳定性。

注意事项:

  1. luci界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。
smartdns - Release 41 RC2

Published by pymumu over 1 year ago

更新内容:

  1. 支持通过socks5/http代理进行DNS查询。proxy-server参数
  2. bind参数支持绑定到具体的网口。bind ip:port@interface
  3. luci界面增加socks5代理配置、测速模式、返回结果模式、DNS64的配置。
  4. luci界面支持bind绑定设备配置。
  5. 随机化Query ID。
  6. 增加ipset-no-speed, nftset-no-speed参数,支持测速失败的情况下,将域名IP添加到对应的ipset/nftset。
  7. 增加cname参数,支持别名查询。cname /a.com/b.com
  8. 域名规则domain-rules增加rr-ttl, rr-ttl-min, rr-ttl-max参数设置TTL特定域名的TTL时间。
  9. 支持DNS64。dns64 64:ff9b::/96参数
  10. 配置文件支持\换行,避免行字符串过长。
  11. 解决一些BUG,提高稳定性。

注意事项:

  1. luci界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。
smartdns - Release 41 RC1

Published by pymumu over 1 year ago

更新内容:

  1. 支持通过socks5/http代理进行DNS查询。proxy-server参数
  2. bind参数支持绑定到具体的网口。bind ip:port@interface
  3. luci界面增加socks5代理配置、测速模式、返回结果模式的配置。
  4. luci界面支持bind绑定设备配置。
  5. 随机化Query ID。
  6. 增加ipset-no-speed, nftset-no-speed参数,支持测速失败的情况下,将域名IP添加到对应的ipset/nftset。
  7. 增加cname参数,支持别名查询。cname /a.com/b.com
  8. 域名规则domain-rules增加rr-ttl, rr-ttl-min, rr-ttl-max参数设置TTL特定域名的TTL时间。
  9. 支持DNS64。dns64 64:ff9b::/96参数
  10. 配置文件支持\换行,避免行字符串过长。
  11. 解决一些BUG,提高稳定性。

注意事项:

  1. luci界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。
smartdns - Release 40

Published by pymumu almost 2 years ago

更新内容:

  1. 优化luci界面,支持域名分流配置和定时更新规则。使用 参考这里
  2. 支持上游服务器配置socket mark(-set-mark)。
  3. 支持设置日志文件的默认权限。
  4. 支持禁用特定域名的过期缓存。
  5. 支持日志个数为0时,禁用日志。
  6. 优化一些log打印。
  7. 解决一些BUG。

如有问题请在github提交issue或改进代码。

Full Changelog: https://github.com/pymumu/smartdns/compare/Release39...Release40

smartdns - feature-dns-forwarding

Published by pymumu almost 2 years ago

openwrt LUCI界面支持配置DNS分流和广告屏蔽,同时支持定时下载相关的配置文件。

概念:

目前支持管理的文件有两种:

使用方法:

  • 下载文件
  1. 下载文件设置中的下载文件中,增加定时下载文件。
  2. 在对话框中输入文件名,URL,和选择下载文件的类型,文件名为下载后保存的文件名,下载文件类型为下载文件的类型,保存在上述概念的不同目录。
  3. 点击下载文件页面中更新文件按钮,等待更新。
  4. 更新完成后,刷新页面。
  5. 可勾选自动更新复选框,每日凌晨5点定时更新列表文件。
  • 包含下载的配置文件
  1. 点击设置->高级设置->包含配置文件,从列表中选择下载文件中配置的配置文件。如无列表显示,可刷新页面。
  2. 也可指定配置文件所在的全路径。
  • 域名分流

可以将域名列表文件中的域名的查询请求,发送到对应服务器组包含的服务器中,具体配置流程

  1. 上游服务器中添加上游服务器,并配置相关的服务器组。如果只想让当前服务器接受本服务器组域名的查询,在可以在添加页面的高级设置中勾选从默认组中排除复选框。
  2. 域名规则->域名分流设置中,选择或输入上述服务器组,如无列表选择,可配置上游服务器后,刷新页面。
  3. 域名规则->域名分流设置中,适当勾选跳过测速停用IPV6解析IPSET/NFTSet选项。
  4. 域名列表文件中,选择或上传分流的域名列表文件。
  5. 如果有单个域名需要分流,可以在域名列表文本框中输入,格式为一行一个域名。
  • 屏蔽域名(广告屏蔽)

参考域名分流配置,只是选择的域名列表不同。

注意事项:

  1. 如果修改了文本框中的内容,点击保存并应用时,页面提示无更改内容,则可以点击页面最下面的重启服务按钮使配置生效。
  2. 下载文件列表,上游服务器组配置完成后,务必刷新页面,以便部分输入框可提示选择对应的文件列表,方便使用。如未刷新,也可直接输入路径,或名称,但要确保输入匹配。
  3. LUA版本(compat)的因openwrt机制限制,配置界面与JS版本略有不同,缺少批量设置域名规则集的功能,请注意识别。推荐使用js版本
  4. 此pre-release页面发布件可能会重复刷新,并可能在未来删除,请勿用于二次集成引用。
  5. 此pre-release为原型测试版本,可能有无法工作的BUG,如遇到BUG请提供相关的问题复现步骤或log。

欢迎各位测试验证,并提出改进建议。

smartdns - Release 39

Published by pymumu almost 2 years ago

更新内容:

  1. 支持nftable,具体参考nftset参数。by @yujincheng08
  2. 减少空闲时的CPU占用率。
  3. 解决多网口UDP请求源路由问题。
  4. 优化ping线程优先级,避免测速结果偶现的偏差。
  5. 支持DOH/DOT上游查询时禁用SNI名称。参数:--host-name -
  6. 拆分不同端口的缓存,避免缓存污染。
  7. 解决speed-check-mode参数配置异常的问题。
  8. 默认禁用TYPE65(HTTPS)的DNS查询请求。

BUG解决:

  1. 解决上游响应过快时进程crash的BUG。
  2. 精确匹配本地主机名,避免规则误触发。
  3. 优化无结果记录的缓存,以及返回查询码不正确问题。
  4. 解决启动进程时setcap切换用户引发的crash问题。
  5. 解决一些BUG。

如有问题请在github提交issue或改进代码。

Full Changelog: https://github.com/pymumu/smartdns/compare/Release38.1...Release39

smartdns - Release 38.1

Published by pymumu almost 2 years ago

更新内容:

  1. 将最新代码推送的openwrt社区,支持openwrt 22.03之后的版本;
    安装:
   opkg update
   opkg install smartdns luci-app-smartdns
  1. ddwrt官方集成smartdns;
    官方最新固件service页面->SmartDNS Resolver->启用。|选择界面参考:https://forum.dd-wrt.com/demo/Services.html
  2. entware更新版本。

BUG解决:

  1. 解决openwrt下dnsmasq更新不正确的问题。
  2. 解决openwrt luci界面状态显示不正确问题。
  3. 解决本地域名处理出错的BUG。
  4. 增加选项,禁止解析本地主机名。

注意事项:

  1. 从旧版本升级安装后,请重启设备以升级smartdns配置。
  2. 此版本会自动设置dnsmasq,如和一些特殊软件配合有问题时,请将端口修改为非53端口,如6053,并取消自动设置dnsmasq选项。
  3. 阿里云公共DNS 223.5.5.5/223.6.6.6不建议使用tcp/tls模式,阿里云公共dns不支持tcp的pipeline模式,会导致查询异常。
  4. 如家里有苹果设备,请增加force-qtype-SOA 65参数,阻止iOS设备查询HTTPS相关的信息,避免使smartdns对iOS设备失效。
  5. smartdns的默认配置,适合作为主DNS使用,已经支持大部分场景的DNS查询体验改善,一般情况只需要增加上游服务器,无需做配置修改

如有问题请在github提交issue或改进代码。

Full Changelog: https://github.com/pymumu/smartdns/compare/Release38...Release38.1

smartdns - Release 38

Published by pymumu about 2 years ago

更新内容:

  1. openwrt: 删除重定向选项,简化重定向功能配置。
    新旧功能对比表:

    设置 功能 等价原重定向功能
    53端口 自动替换dnsmasq作为主DNS 重定向53到smartdns
    非53端口并开启自动设置dnsmasq 自动设置为dnsmasq上游 作为dnsmasq的上游
    非53端口并关闭自动设置dnsmasq 作为独立dns服务 无重定向
  2. 增加domain-set选项,支持域名集合功能,更加快捷管理域名集合,可替换所有/domain/类配置。

BUG解决:

  1. 解决默认EDNS功能不生效问题。
  2. 解决javascript luci保存配置报错问题。
  3. 解决第二DNS force-AAAA不工作问题。

注意事项:

  1. 从旧版本升级安装后,请重启设备以升级smartdns配置。
  2. 此版本会自动设置dnsmasq,如和一些特殊软件配合有问题时,请将端口修改为非53端口,如6053,并取消自动设置dnsmasq选项。
  3. 阿里云公共DNS 223.5.5.5/223.6.6.6不建议使用tcp/tls模式,阿里云公共dns不支持tcp的pipeline模式,会导致查询异常。
  4. 如家里有苹果设备,请增加force-qtype-SOA 65参数,阻止iOS设备查询HTTPS相关的信息,避免使smartdns对iOS设备失效。
  5. smartdns的默认配置,适合作为主DNS使用,已经支持大部分场景的DNS查询体验改善,一般情况只需要增加上游服务器,无需做配置修改

如有问题请在github提交issue或改进代码。

Full Changelog: https://github.com/pymumu/smartdns/compare/Release37.2...Release38

smartdns - Release 37.2

Published by pymumu about 2 years ago

配置建议:
smartdns的默认配置,适合作为主DNS使用,已经支持大部分场景的DNS查询体验改善,一般情况只需要增加上游服务器,无需做配置修改
如有配置修改,请务必了解其用途,避免修改后起到反作用。

更新内容:

  1. 解决关闭测速时,缓存IP数量仅有一个的问题。
  2. 解决luci界面下,提示collection data无响应的问题。
  3. luci增加设置参数:dnsmasq-lease-file, force-aaaa-soa, force-https-soa
  4. 解决域名地址为127.0.0.1时,返回SERVEFAIL的BUG。
  5. 解决address设置路由器地址不生效的问题。

最近更新历史:

功能:

  1. 支持返回多IP地址,优化下载、视频播放体验。
    第一个IP地址仍然为最快,保证大部分软件体验,并支持设置返回IP个数,参数:max-reply-ip-num(此功能需要开启cache)
  2. 支持读取dnsmasq dhcp文件,解析局域网主机功能,参数:dnsmasq-lease-file [/path/to/lease-file]。
  3. 支持设置首次请求响应模式,参数:response-mode, 值:
    • first-ping:最快ping响应地址模式,DNS上游最快查询时延+ping时延最短,查询等待与链接体验最佳。(当前默认)
    • fastest-ip: 最快IP地址模式,查询到的所有IP地址中ping最短的IP。DNS查询时间最长,IP链接最短。(之前模式)
    • fastest-response: 最快响应的DNS结果,DNS查询等待时间最短。
  4. 支持设置ECS。
  5. speed-mode支持设置三种测速模式,之前版本为两种。
  6. 优化docker镜像大小为3MB。
  7. 双栈优选支持主动优选IPV6地址避免链接V4地址:参数:dualstack-ip-allow-force-AAAA yes。(实验性功能)
  8. 双栈优选支持设置预取周期,参数:serve-expired-prefetch-time [second]
  9. 支持非root模式运行,提升服务安全性,参数:user [username]
  10. 支持缓存除A,AAAA类型的其他结果,如SRV,TXT,NXDOMAIN等。提升查询性能。
  11. 优化并行查询性能,合并同类型查询。
  12. 支持查询smartdns服务的IP地址,用于检测smartdns服务是否正常。如:dig smartdns返回路由IP。
  13. 支持自动检测IPV6运行环境,自动开启/关闭IPV6相关功能。
  14. Auditlog支持记录多IP地址。
  15. 支持无PID文件启动smartdns多实例,-pid -进程启动参数。
  16. 优化smartdns日志打印,避免无效打印,和收到无效数据包的打印,以及优化配置错误的提示。
  17. 增加local-ttl参数,指定address返回的TTL。

BUG修复:

  1. 解决TTL某些场景下不变化的BUG。
  2. 解决IPSET在某些场景下丢失问题。
  3. 解决日志打印引发的进程死锁和IP冲突问题
  4. 解决其他若干crash问题。
  5. 解决华硕路由器中,cache无法持久化的BUG。
  6. 解决openwrt中,提示端口冲突的BUG。
  7. 解决smartdns github版本和debian版本冲突的问题。
  8. 解决双栈优选的一些BUG。
  9. 解决其他crash问题。
  10. 清理代码中潜在的问题。
  11. 避免查询风暴。
  12. 解决接收到异常数据包导致的crash问题。
  13. 解决server group组配置在cache启用时不生效的问题。

注意:

  1. 此版本默认情况下,会启用多IP能力,会出现第一次查询返回一个IP,后面再次查询返回多个IP的情况,属于正常的功能。注意和之前版本区分。
  2. cache建议开启,并保证持久化功能开启,这样才能获得多IP查询能力。
  3. smartdns是否正常,可用dig smartdnsping smartdns.检查(注意,windows下后面的.是必须)
  4. 如需小体积smartdns,请自行编译,或从openwrt官方opkg install smartdns安装。
  5. 阿里云公共DNS 223.5.5.5/223.6.6.6不建议使用tcp/tls模式,阿里云公共dns不支持tcp的pipeline模式,会导致查询异常。
  6. 如家里有苹果设备,请增加force-qtype-SOA 65参数,阻止iOS设备查询HTTPS相关的信息,避免使smartdns对iOS设备失效。

如有问题请在github提交issue或改进代码。

smartdns - Release 37.1

Published by pymumu about 2 years ago

配置建议:
smartdns的默认配置,适合作为主DNS使用,已经支持大部分场景的DNS查询体验改善,一般情况只需要增加上游服务器,无需做配置修改
如有配置修改,请务必了解其用途,避免修改后起到反作用。

更新内容:

  1. 解决接收到异常数据包导致的crash问题。
  2. 解决server group组配置在cache启用时不生效的问题。
  3. 增加local-ttl参数,指定address返回的TTL。
  4. 解决二次转发时,查询DNS服务器IP地址返回127.0.0.1的问题。

最近更新历史:

功能:

  1. 支持返回多IP地址,优化下载、视频播放体验。
    第一个IP地址仍然为最快,保证大部分软件体验,并支持设置返回IP个数,参数:max-reply-ip-num(此功能需要开启cache)
  2. 支持读取dnsmasq dhcp文件,解析局域网主机功能,参数:dnsmasq-lease-file [/path/to/lease-file]。
  3. 支持设置首次请求响应模式,参数:response-mode, 值:
    • first-ping:最快ping响应地址模式,DNS上游最快查询时延+ping时延最短,查询等待与链接体验最佳。(当前默认)
    • fastest-ip: 最快IP地址模式,查询到的所有IP地址中ping最短的IP。DNS查询时间最长,IP链接最短。(之前模式)
    • fastest-response: 最快响应的DNS结果,DNS查询等待时间最短。
  4. 支持设置ECS。
  5. speed-mode支持设置三种测速模式,之前版本为两种。
  6. 优化docker镜像大小为3MB。
  7. 双栈优选支持主动优选IPV6地址避免链接V4地址:参数:dualstack-ip-allow-force-AAAA yes。(实验性功能)
  8. 双栈优选支持设置预取周期,参数:serve-expired-prefetch-time [second]
  9. 支持非root模式运行,提升服务安全性,参数:user [username]
  10. 支持缓存除A,AAAA类型的其他结果,如SRV,TXT,NXDOMAIN等。提升查询性能。
  11. 优化并行查询性能,合并同类型查询。
  12. 支持查询smartdns服务的IP地址,用于检测smartdns服务是否正常。如:dig smartdns返回路由IP。
  13. 支持自动检测IPV6运行环境,自动开启/关闭IPV6相关功能。
  14. Auditlog支持记录多IP地址。
  15. 支持无PID文件启动smartdns多实例,-pid -进程启动参数。
  16. 优化smartdns日志打印,避免无效打印,和收到无效数据包的打印,以及优化配置错误的提示。

BUG修复:

  1. 解决TTL某些场景下不变化的BUG。
  2. 解决IPSET在某些场景下丢失问题。
  3. 解决日志打印引发的进程死锁和IP冲突问题
  4. 解决其他若干crash问题。
  5. 解决华硕路由器中,cache无法持久化的BUG。
  6. 解决openwrt中,提示端口冲突的BUG。
  7. 解决smartdns github版本和debian版本冲突的问题。
  8. 解决双栈优选的一些BUG。
  9. 解决其他crash问题。
  10. 清理代码中潜在的问题。
  11. 避免查询风暴。

注意:

  1. 此版本默认情况下,会启用多IP能力,会出现第一次查询返回一个IP,后面再次查询返回多个IP的情况,属于正常的功能。注意和之前版本区分。
  2. cache建议开启,并保证持久化功能开启,这样才能获得多IP查询能力。
  3. smartdns是否正常,可用dig smartdnsping smartdns.检查(注意,windows下后面的.是必须)
  4. 如需小体积smartdns,请自行编译,或从openwrt官方opkg install smartdns安装。
  5. 阿里云公共DNS 223.5.5.5/223.6.6.6不建议使用tcp/tls模式,阿里云公共dns不支持tcp的pipeline模式,会导致查询异常。
  6. 如家里有苹果设备,请增加force-qtype-SOA 65参数,阻止iOS设备查询HTTPS相关的信息,避免使smartdns对iOS设备失效。

如有问题请在github提交issue或改进代码。

smartdns - Release 37

Published by pymumu about 2 years ago

配置建议:
smartdns的默认配置,适合作为主DNS使用,已经支持大部分场景的DNS查询体验改善,一般情况只需要增加上游服务器,无需做配置修改
如有配置修改,请务必了解其用途,避免修改后起到反作用。

更新内容:
功能:

  1. 支持返回多IP地址,优化下载、视频播放体验。
    第一个IP地址仍然为最快,保证大部分软件体验,并支持设置返回IP个数,参数:max-reply-ip-num(此功能需要开启cache)
  2. 支持读取dnsmasq dhcp文件,解析局域网主机功能,参数:dnsmasq-lease-file [/path/to/lease-file]。
  3. 支持设置首次请求响应模式,参数:response-mode, 值:
    • first-ping:最快ping响应地址模式,DNS上游最快查询时延+ping时延最短,查询等待与链接体验最佳。(当前默认)
    • fastest-ip: 最快IP地址模式,查询到的所有IP地址中ping最短的IP。DNS查询时间最长,IP链接最短。(之前模式)
    • fastest-response: 最快响应的DNS结果,DNS查询等待时间最短。
  4. 支持设置ECS。
  5. speed-mode支持设置三种测速模式,之前版本为两种。
  6. 优化docker镜像大小为3MB。
  7. 双栈优选支持主动优选IPV6地址避免链接V4地址:参数:dualstack-ip-allow-force-AAAA yes。(实验性功能)
  8. 双栈优选支持设置预取周期,参数:serve-expired-prefetch-time [second]
  9. 支持非root模式运行,提升服务安全性,参数:user [username]
  10. 支持缓存除A,AAAA类型的其他结果,如SRV,TXT,NXDOMAIN等。提升查询性能。
  11. 优化并行查询性能,合并同类型查询。
  12. 支持查询smartdns服务的IP地址,用于检测smartdns服务是否正常。如:dig smartdns返回路由IP。
  13. 支持自动检测IPV6运行环境,自动开启/关闭IPV6相关功能。
  14. Auditlog支持记录多IP地址。
  15. 支持无PID文件启动smartdns多实例,-pid -进程启动参数。
  16. 优化smartdns日志打印,避免无效打印,和收到无效数据包的打印,以及优化配置错误的提示。

BUG修复:

  1. 解决TTL某些场景下不变化的BUG。
  2. 解决IPSET在某些场景下丢失问题。
  3. 解决日志打印引发的进程死锁和IP冲突问题
  4. 解决其他若干crash问题。
  5. 解决华硕路由器中,cache无法持久化的BUG。
  6. 解决openwrt中,提示端口冲突的BUG。
  7. 解决smartdns github版本和debian版本冲突的问题。
  8. 解决双栈优选的一些BUG。
  9. 解决其他crash问题。
  10. 清理代码中潜在的问题。
  11. 避免查询风暴。

注意:

  1. 此版本默认情况下,会启用多IP能力,会出现第一次查询返回一个IP,后面再次查询返回多个IP的情况,属于正常的功能。注意和之前版本区分。
  2. cache建议开启,并保证持久化功能开启,这样才能获得多IP查询能力。
  3. smartdns是否正常,可用dig smartdnsping smartdns.检查(注意,windows下后面的.是必须)
  4. 如需小体积smartdns,请自行编译,或从openwrt官方opkg install smartdns安装。
  5. 阿里云公共DNS 223.5.5.5/223.6.6.6不建议使用tcp/tls模式,阿里云公共dns不支持tcp的pipeline模式,会导致查询异常。
  6. 如家里有苹果设备,请增加force-qtype-SOA 65参数,阻止iOS设备查询HTTPS相关的信息,避免使smartdns对iOS设备失效。

如有问题请在github提交issue或改进代码。

smartdns - Release 37 RC3

Published by pymumu about 2 years ago

修正一些BUG。

smartdns - Release37 RC2

Published by pymumu over 2 years ago

  1. 修正crash问题。
smartdns - Release 37 RC1

Published by pymumu over 2 years ago

  1. 支持返回所有最佳IP地址,第一个IP地址仍然为最快IP。
  2. 突发查询下的性能优化。
  3. 更新默认配置,默认开启双栈优选,默认最小TTL为600s。
  4. 支持ECS
  5. 解决TTL值不变化的问题。
  6. 解决若干BUG。
smartdns - all-best-ip

Published by pymumu over 2 years ago

  1. 支持返回所有最佳IP地址,第一个IP地址仍然为最快IP。
  2. 突发查询下的性能优化。
  3. 更新默认配置,默认开启双栈优选,默认最小TTL为600s。
  4. 支持ECS
  5. 解决TTL值不变化的问题。