Closed zfl9 closed 4 months ago
配置文件里加了verdict-cache-db /tmp/cdng.db这行就无法启动。显示[opt.zig:205 opt_config] '/etc/FreedomNet/chinadns-ng.conf': unknown option: verdict-cache-db /tmp/cdng.db
这样写可以启动:verdict-cache 65535,/tmp/cdng.db。启动时显示[verdict_cache.zig:76 load] open(/tmp/cdng.db): (2) No such file or directory。但是退出时不会dump缓存文件。
不知道哪里出错了
不着急,之前的两个提交要修改,之前的设计不太好。*-db选项是刚刚想的,还没提交。
好的
试试最新的 dev 分支,--verdict-cache-db <path>
已支持,行为如上所述。--cache-db
等过两天有空了再添加,先发个版本,支持 verdict cache 持久化。 @InspoOnU
试试最新的 dev 分支,
--verdict-cache-db <path>
已支持,行为如上所述。--cache-db
等过两天有空了再添加,先发个版本,支持 verdict cache 持久化。 @InspoOnU
配置文件里加上了。 bind-addr 127.0.0.1 bind-port 50001 china-dns tcp://127.0.0.1#53 trust-dns tcp://127.0.0.1#50002 chnlist-file /etc/FreedomNet/CN.list gfwlist-file /etc/FreedomNet/Abroad.list add-tagchn-ip ipset-name4 china_ip_route ipset-name6 china_ip6_route filter-qtype 64,65 verdict-cache 65535 verdict-cache-db /etc/FreedomNet/chinadns.db noip-as-chnip
直接chinadns-ng -C /etc/FreedomNet/chinadns-ng.conf -v运行,ctrl+c结束,但是没看到dump的文件。 2024-07-19 15:10:01 I [main.zig:146 main] local listen addr: 127.0.0.1#50001 2024-07-19 15:10:01 I [groups.zig:123 on_start] tag:chn upstream: tcp://127.0.0.1 2024-07-19 15:10:01 I [groups.zig:123 on_start] tag:chn add ip to: china_ip_route,china_ip6_route 2024-07-19 15:10:01 I [groups.zig:123 on_start] tag:gfw upstream: tcp://127.0.0.1#50002 2024-07-19 15:10:01 I [dnl.c:503 dnl_init] tag:gfw loaded:24988 added:24985 cost:557.854k 2024-07-19 15:10:01 I [dnl.c:503 dnl_init] tag:chn loaded:82728 added:82515 cost:1650.247k 2024-07-19 15:10:01 I [dnl.c:510 dnl_init] L1 items:106506 lists:73275 buckets:131072 cost:512.000k 2024-07-19 15:10:01 I [dnl.c:514 dnl_init] L2 items:994 lists:805 buckets:2048 cost:8.000k 2024-07-19 15:10:01 I [dnl.c:516 dnl_init] total memory cost (page-aligned): 2732.000k 2024-07-19 15:10:01 I [main.zig:146 main] ip test db: china_ip_route,china_ip6_route 2024-07-19 15:10:01 I [main.zig:146 main] default domain name tag: none 2024-07-19 15:10:01 I [main.zig:146 main] enable verdict cache, capacity: 65535 2024-07-19 15:10:01 I [main.zig:146 main] response timeout of upstream: 5 2024-07-19 15:10:01 I [main.zig:146 main] accept no-ip reply from chinadns 2024-07-19 15:10:01 I [main.zig:146 main] printing the verbose runtime log 2024-07-19 15:10:08 I [server.zig:206 service_tcp] new connection:7 from 127.0.0.1#47272
再次运行判定结果也没缓存
我处理下吧,让 CTRL+C 和 kill 都触发正常的“退出”流程,注意,kill 其他信号不行(特别是 kill -9)
我处理下吧,让 CTRL+C 和 kill 都触发正常的“退出”流程,注意,kill 其他信号不行(特别是 kill -9)
懂了,只是测试的时候这样启动。openwrt的procd可以正常触发dump。
处理了 ctrl + C (SIGINT 信号),可以测试下,我测试正常。
处理了 ctrl + C (SIGINT 信号),可以测试下,我测试正常。
功能一切正常。
刚刚好,这个功能能不能考虑更复杂一点,国内国外分开。。。 https://www.ithome.com/0/783/032.htm 国内越来越多公共 dns 的流控厉害了,自动刷 dns 很容易到达上限。。
国内外分开是指?
例如,国内 dns 不进行自动刷新,缓存时间变长,错峰,之类的,或用时间轮算法来查询之类的。总之,这些个 dns 的 qps 给的低,要省着用了。
当然,这个要求有点复杂了,也不是程序本身的问题。
你是说上面那个阿里dns限流问题?这个到时候再观察究竟什么情况吧,现在我觉得还早,也许我们理解错了?如果真这么限流,谁还用它的dns。。
另外,你说的这个问题与缓存持久化没关联。
见最新 2024.07.20 版本。
你是说上面那个阿里dns限流问题?这个到时候再观察究竟什么情况吧,现在我觉得还早,也许我们理解错了?如果真这么限流,谁还用它的dns。。
另外,你说的这个问题与缓存持久化没关联。
其实腾讯去年就开始限速了,20 QPS,只能选择付费版才会不限速。 我这里遇到过被限制的情况,导致某些国内网站用 chinadns-ng 解析的结果是海外 IP 而不是国内 IP。 目前用的阿里,阿里限速就打算用字节的了。
你是说上面那个阿里dns限流问题?这个到时候再观察究竟什么情况吧,现在我觉得还早,也许我们理解错了?如果真这么限流,谁还用它的dns。。
另外,你说的这个问题与缓存持久化没关联。
其实腾讯去年就开始限速了,20 QPS,只能选择付费版才会不限速。 我这里遇到过被限制的情况,导致某些国内网站用 chinadns-ng 解析的结果是海外 IP 而不是国内 IP。 目前用的阿里,阿里限速就打算用字节的了。
我记得chinadns-ng的原理不是抢答吗?哪个解析的快用哪个。 这样实际可以国内DNS1用阿里(阿里节点多,有12个),国内DNS2用字节(字节只有北京),假设用户在成都,由于阿里在成都有接口响应是5ms以内,那么在QOS限速前阿里答得快实际使用阿里的结果。但是如果每秒超了20个请求被限速了,字节北京的响应快过了阿里,实际查询结果使用的是字节,除了多了几十ms外没有实际使用影响。
你是说上面那个阿里dns限流问题?这个到时候再观察究竟什么情况吧,现在我觉得还早,也许我们理解错了?如果真这么限流,谁还用它的dns。。
另外,你说的这个问题与缓存持久化没关联。
其实腾讯去年就开始限速了,20 QPS,只能选择付费版才会不限速。 我这里遇到过被限制的情况,导致某些国内网站用 chinadns-ng 解析的结果是海外 IP 而不是国内 IP。 目前用的阿里,阿里限速就打算用字节的了。
我记得chinadns-ng的原理不是抢答吗?哪个解析的快用哪个。 这样实际可以国内DNS1用阿里(阿里节点多,有12个),国内DNS2用字节(字节只有北京),假设用户在成都,由于阿里在成都有接口响应是5ms以内,那么在QOS限速前阿里答得快实际使用阿里的结果。但是如果每秒超了20个请求被限速了,字节北京的响应快过了阿里,实际查询结果使用的是字节,除了多了几十ms外没有实际使用影响。
是的,同一组内的 dns upstream
是抢答的。确实可以配置多个 upstream 来缓解限速问题。
新增两个参数
--cache-db <path>
:指定 dns cache 的 db 文件(二进制格式),启动时从该文件加载缓存,正常退出时(kill <PID>
、CTRL+C
)将内存数据 dump 到 db 文件;使用 SIGUSR1 可手动触发 dump 到 db 操作。默认 dump 所有“可用的”缓存(启用过期缓存时,可用的“过期”缓存也会被 dump)。--verdict-cache-db <path>
:指定 verdict cache 的 db 文件(文本格式),启动时从该文件加载缓存,正常退出时(kill <PID>
、CTRL+C
)将内存数据 dump 到 db 文件;使用 SIGUSR1 可手动触发 dump 到 db 操作。第一个字段是“is_china_domain”(1是0否),第二个字段是“域名”。未指定 *cache-db 选项时,如果执行手动 dump(SIGUSR1信号),则使用以下路径:
/tmp/chinadns@cache.db
/tmp/chinadns@verdict-cache.db