Chinadns Ng Versions Save

chinadns 重构增强版,支持域名分流、ipset/nftset、UDP/TCP/DoT

2024.04.30

2 weeks ago
  • 构建选项 -Dwolfssl-noasm,用于关闭 x86_64、aarch64 下的硬件加速指令,防止 SIGILL。
  • 默认关闭 DoT 上游的 SSL 证书验证,因为某些平台下(arm32、mips)存在问题,见 #169 。

若使用 LTO 版本时遇到问题,请选择非 LTO 版本。带 wolfssl 字样的版本支持 DoT 上游。 wolfssl_noasm 是没有硬件加速指令的版本,因为某些平台(如树莓派)阉割了相关指令。

2024.04.27

2 weeks ago
  • 支持 DoT 上游,格式 tls://域名@IP,构建时带上-Dwolfssl,下载时选择带 wolfssl 的版本。
  • 优化了 TCP 上游的实现,支持长连接模式,支持 pipelining queries,尽可能降低查询延迟。#151
  • 给 add-ip 操作添加了“内置的 IP 黑名单“,避免 loopback 地址,全 0 地址 被添加到 ipset/nftset。#162
  • 支持过滤给定域名(后缀)的查询:使用名为 null 的自定义 group,然后将相关域名放入该组的域名列表。

若使用 LTO 版本时遇到问题,请选择非 LTO 版本。带 wolfssl 字样的版本支持 DoT 上游。

2024.04.13

1 month ago
  • 支持自定义组(配置不同的上游、ipset/nftset),在原有数据结构上扩展实现 #157。
  • --no-ipv6 规则修改(与旧版规则不兼容),新规则分为两大类:tag:*ip:*
  • 新增选项 --filter-qtype,用于过滤给定 qtype 的查询,如 qype=64/65,见 #82 。
  • --cache-stale 选项允许设置更大的参数值,之前只允许最大值 65535(单位秒)。
  • --cache-refresh 选项的单位更改,之前单位是,现在改为了百分比(0~100)。
  • 新增选项 --cache-nodata-ttl,用于缓存 NODATA 响应(如 no-AAAA 过滤结果)。
  • 支持 udp:// 上游,当查询方使用 TCP 时,自动丢弃此类上游的 TC 响应 #153 #160 。

若使用 LTO 版本时遇到问题,请选择非 LTO 版本(没有 +lto 的版本)

2024.03.27

1 month ago
  • 支持读取 hosts 文件。
  • 支持定义本地 A/AAAA 记录。

2024.03.25

1 month ago
  • DNS 缓存、stale 缓存模式、缓存预刷新、缓存忽略名单(不缓存的域名)。
  • 支持 tag:none 域名的判定结果缓存,避免重复请求和判定,减少DNS泄露。
  • 允许指定监听的协议(TCP、UDP),如 --bind-port 65353@udp 仅监听 UDP。

2024.03.07

2 months ago
  • 使用 Zig 重写了大部分代码,提高开发效率。
  • 默认启用 TCP + UDP 监听、TCP + UDP 上游。
  • 在上游地址前加上 tcp:// 可强制使用 TCP 上游。
  • 支持监听多个 IP 地址,方便 IPv4/IPv6 双栈用例。
  • 每个上游组允许配置多个服务器(之前最多两个)。
  • 引入配置文件支持,语法类似 dnsmasq,一行一个。
  • 命令行参数解析重写,不再依赖 getopt* 相关 C 接口。

注意:此版本的构建方式有重大更改,不再使用 Makefile。

2023.10.28

6 months ago
  • 给 TZ 环境变量设置默认值,避免在打印日志时的不必要系统调用开销,具体请参见 glibc 文档:TZ-Variable
  • 关闭 IPV6_V6ONLY sockopt,以便在监听 :: 地址时,能够接收来自 IPv4 的 DNS 查询,而不必运行两个进程。

2023.06.01

11 months ago
  • 上游套接字的超时时间(生存时长)从 30秒 改为 60秒;并做了一些优化,减少不必要的系统调用。
  • 选项与可选参数之间允许带空格,如-N-N gt--no-ipv6 gt-a list,list6;旧格式仍然可用。

2023.05.08

1 year ago
  • 给上游套接字加个生存时长(目前写死30秒),尝试修复 #125 问题。
  • 检测非法命令行参数(非选项参数),防止出现 #128 这种低级错误。

2023.04.20

1 year ago
  • 新增 -A/--add-taggfw-ip 选项,用于添加 tag:gfw 黑名单域名的 IP 至 ipset/nftset。
  • -a/--add-tagchn-ip 接收可选参数,用于指定其它集合,默认还是 --ipset-name4/6 的那个集合。

目前,有3套 ipset/nftset,分别用于这3类域名:

  • tag:none域名:使用--ipset-name4/6选项,用于测试china上游的结果是否为大陆IP。
  • tag:chn域名:使用--add-tagchn-ip选项,用于添加白名单域名的IP,用于iptables/nft操作。
  • tag:gfw域名:使用--add-taggfw-ip选项,用于添加黑名单域名的IP,用于iptables/nft操作。