Skip to content

Releases: zfl9/chinadns-ng

2024.03.07

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

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

2023.10.28

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

2023.06.01

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

2023.05.08

08 May 09:52
2023.05.08
1f56c7d
Compare
Choose a tag to compare
  • 给上游套接字加个生存时长(目前写死30秒),尝试修复 #125 问题。
  • 检测非法命令行参数(非选项参数),防止出现 #128 这种低级错误。

2023.04.20

20 Apr 10:11
2023.04.20
e9654f5
Compare
Choose a tag to compare
  • 新增 -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操作。

2023.04.17

17 Apr 14:06
2023.04.17
0487787
Compare
Choose a tag to compare
  • 兼容旧内核 (recvmmsg、sendmmsg) #122
  • 调整域名匹配顺序,尽量兼容旧版本行为 #123
  • 将上游超时日志改为 verbose 级别,避免过多日志 #124

2023.04.11-2

11 Apr 14:23
2023.04.11-2
8f4cab3
Compare
Choose a tag to compare
  • 修复可能存在的 nft-add bug(小概率)

2023.04.11

11 Apr 10:24
2023.04.11
3574a37
Compare
Choose a tag to compare

相关新功能、新特性见 2023.04.01 版本的发布说明。

  • 优化域名列表的数据结构,进一步减少内存占用
  • 优化 add-tagchn-ip,避免某些情况下的重复添加 #121
  • 修复 2023.04.01 版本的相关 BUG,调整部分代码实现细节

2023.04.01

01 Apr 09:43
2023.04.01
e2f0942
Compare
Choose a tag to compare
2023.04.01 Pre-release
Pre-release

预发布版本,功能粗略跑了下,问题不大。我这边 code review 后再正式发布。有问题随时交流。

  • -g/--gfwlist-file-m/--chnlist-file 支持多个文件路径,文件路径之间使用逗号隔开,如 -g a.txt,b.txt

  • 新增 -a/--add-tagchn-ip 选项:将chn域名的解析结果加入ipset/nftset,类似dnsmasq的ipset/nftset指令。见 #115

  • 添加nftset支持,参数还是原来的-4/--ipset-name4 <name>, -6/--ipset-name6 <name>,若name包含@字符,则使用nft后端,否则使用ipset后端。nft的name格式:family名称@table名称@set名称。注意:不支持混用ipset/nftset,即:v4和v6要么都用ipset,要么都用nftset。

  • 对nft的add操作进行了性能优化,效率要比dnsmasq的nftset实现高得多;对于dnsmasq,如果要添加的ip与集合中已存在的cidr存在重叠(在set已存储大部分大陆ip(cidr)时,很容易触发该条件),则add操作会导致数十毫秒级别的延迟,并且nftset会报告interval overlaps with an existing one错误。

  • -N/--no-ipv6 选项添加规则T,当一个AAAA查询只转发给了可信上游时,此规则开始发挥作用:若启用了规则T,则过滤非大陆ip的解析结果;否则(默认行为)不进行ip判定/过滤。见 issue #116

  • dnl相关优化,弃用brk/sbrk,改用mmap/mremap,并进行4k页面对齐。

  • 移除libm.so依赖,现在只依赖libc.so了。

2023.03.10

10 Mar 12:11
6f08642
Compare
Choose a tag to compare
  • 使用 -d gfw/chn 纯域名分流模式时,避免 ipest 相关调用。
  • 优化 makefile,加入常用编译控制选项,并兼容 gcc 和 clang。