薇尔薇

Back

1、启动时使用bootstrap-nameservers中定义的type为doh的域名进行dns解析,将解析结果缓存到缓冲池中(程序内部需要维护一个dns查询缓冲池,使用乐观缓存的异步查询模式,严格遵守ttl)

2、解析每个nameservers,形成nameserver对象,对象需要实现dns查询的方法

3、启动后监听listen端口,接受udp的dns查询请求

4、加载nameserver-group,nameserver-policy中的配置,用于对dns查询的结果进行规则匹配,如果匹配到了- GEOIP:CN,CN,则判断这个ip是否在CN中,如果在,则使用name为CN的nameserver-group中返回返回结果的dns结果返回

5、当listen的端收到dns查询请求时,并发调用所有nameservers中配置的dns服务器进行dns查询

6、启动时需要加载geox-url中定义的dat文件到内存中,

7、ecs-override和ecs暂不考虑支持

8、当并发查询的dns服务器有返回结果时,立即进行nameserver-policy的规则匹配,如果匹配到的nameserver-group中没有任何nameserver返回了结果,则等待只最快的该组的的第一个返回之后在返回结果

DNS项目
https://vio.vin/blog/dns-xiang-mu
Author violet
Published at 2025年10月25日