配置文件一共有两个
- dnswhitelist.toml,配置IP白名单
- whiteList,IP白名单列表,只有在此列表中的IP才能在config.toml中使用
- whiteListSign,IP白名单列表签名,自已签名可使用"enddns sign"命令,
因安全考量,运行此命令要求管理员
- config.toml,域名解析规则配置
- listenIP,EndDNS绑定地址,缺省为"0.0.0.0"
- listenPort,EndDNS侦听端口,缺省为53
- logLevel,日志级别,参见zap的相应信息,https://pkg.go.dev/go.uber.org/zap/zapcore?tab=doc#Level
- partnerList,参与者的配置参数
- partnerType,参与者类型
- 1:域名解析器
- 2:IP评估器
- partnerName,参与者类型名
- name,参与者的具体名字(注意与partnerName区别),其它地方引用时用,要求必须唯一
- value1,2,3,参见下面具体的解析解析器与评估器说明,注意都是字符串
- partnerType,参与者类型
- domainDefault,缺省域名解析规则,除去matchPattern,resoverList和reviewerList外的值,可以被domainList继承
- resolverTimeout,域名解析器的解析超时,单位为毫秒
- resolverDisableLate,是否禁用延迟解析,缺省为false,解决可能收到多个DNS回复的问题
- reviewerTimeout,IP评估超时时间,单位为毫秒
- cacheTimeout,本地域名Cache(只会cache A或AAAA记录),为-1禁用,大于0为秒数
- resoverList,此规则下使用的域名解析器
- reviewerList,此规则下使用的IP评估器
- domainList,域名解析规则列表,包括domainDefault中所有字段,多了如下配置
- matchPattern,域名匹配规则,此配置与nginx的location语法类似(区别:1,前缀变后缀;2,正则不区分大小写),另外正则要用单引号。非正则可以省略最后的.号
- =,完全相同
- ^~,优先后缀,匹配后即停止查找
- ~*,正则匹配,顺序确定优先级
- 缺省,后缀匹配,长度越长优先级越高
- matchPattern,域名匹配规则,此配置与nginx的location语法类似(区别:1,前缀变后缀;2,正则不区分大小写),另外正则要用单引号。非正则可以省略最后的.号
当前支持的域名解析器
- forwarddns,就是最普通的递归DNS(支持TCP),比如阿里DNS:223.5.5.5
- value1:服务器IP
- value2:服务器port(缺省为53)
- staticdns,静态映射解析器(类似于本机hosts文件)
- value1:被映射成的IP地址
- doh,DoH域名服务器,这个当前是实验性的
- value1:DoH URL
- value2:如果DoH URL中用的是域名,这里要指定相对应的IP
- value3:是否用Get(缺省是Post)
当前支持的IP评估器
- tcpconn,通过测试TCP建链速度来评估IP质量
- value1:端口
- ping,通过ICMP Ping来评估IP质量,这个不太好用,不建议使用
- staticrv,假评估器,特殊用途。如果完全不配置测试器,EndDNS会返回收到的最先响应(而不会等reviewerTimeout超时)
配置了假评估器,会等reviewerTimeout超时,然后按resolver的顺序选择返回结果
配置文件的位置
当前配置文件的位置是固定的,如下两处,优先级按顺序
- 用户主目录/.enddns(及其conf目录)
- enddns可执行文件所在目录(及其conf目录)
可参考conf目录下的相关文件使用