Chinadns Ng Versions Save

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

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操作。

2023.04.17

1 year ago
  • 兼容旧内核 (recvmmsg、sendmmsg) #122
  • 调整域名匹配顺序,尽量兼容旧版本行为 #123
  • 将上游超时日志改为 verbose 级别,避免过多日志 #124

2023.04.11-2

1 year ago
  • 修复可能存在的 nft-add bug(小概率)

2023.04.11

1 year ago

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

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

2023.04.01

1 year ago

预发布版本,功能粗略跑了下,问题不大。我这边 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

1 year ago
  • 使用 -d gfw/chn 纯域名分流模式时,避免 ipest 相关调用。
  • 优化 makefile,加入常用编译控制选项,并兼容 gcc 和 clang。

2023.03.08

1 year ago

新增 -d/--default-tag <tag> 选项,用来纯域名分流。见 #117

2023.03.06

1 year ago
  • 修复 no-ipv6 的逻辑 bug。
  • 弃用"抢答模式",只留"公平模式"。

2023.03.02

1 year ago

修复 #113 bug:主机源 IP 变动导致 chinadns-ng 无法与 DNS 上游进行通信。

2023.02.28

1 year ago

修复 2023.02.27 版本的 sbrk 兼容问题(musl) e1859360c0db96c6d36c54ba85d23a12c4bcd91b