Skip to content

Releases: pymumu/smartdns

Release 45

08 Feb 07:39
Compare
Choose a tag to compare

🎉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: Release43...Release45

Release 43

12 Aug 04:04
Compare
Choose a tag to compare

更新内容:

  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: Release42...Release43

Release 42

07 May 11:55
Compare
Choose a tag to compare

更新内容:

  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. 增加性能测试,具体性能指标参考:#1337 (comment)
  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来查看。

Release 41

04 Mar 03:36
Compare
Choose a tag to compare

更新内容:

  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界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。

Release 41 RC3

22 Feb 14:15
Compare
Choose a tag to compare
Release 41 RC3 Pre-release
Pre-release

更新内容:

  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界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。

Release 41 RC2

21 Feb 15:33
Compare
Choose a tag to compare
Release 41 RC2 Pre-release
Pre-release

更新内容:

  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界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。

Release 41 RC1

18 Feb 03:35
Compare
Choose a tag to compare
Release 41 RC1 Pre-release
Pre-release

更新内容:

  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界面如不显示,或显示不正常,可以尝试清除浏览器缓存,或使用隐私模式访问管理页面。

Release 40

02 Jan 07:49
Compare
Choose a tag to compare

更新内容:

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

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

Full Changelog: Release39...Release40

feature-dns-forwarding

14 Dec 13:14
Compare
Choose a tag to compare
Pre-release

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。

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

Release 39

04 Dec 14:30
Compare
Choose a tag to compare

更新内容:

  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: Release38.1...Release39