DNSPod 是由一群体热爱互联网的年轻人开发出来的免费智能 DNS 产品,可以为同时有电信和网通服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,达到南北互通的效果。
1、定义:dnspod-sr 是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件。
2、特点
高性能:比所有流行的开源 DNS 软件性能高出 2 倍以上。
安全:能抵御一般攻击。
稳定:有效降低解析失败率。
主动刷新缓存:响应速度更快。
易于扩展:非常容易部署。
防被墙:能够正确解析被被墙域名。
3、功能
CNAME 解析加速:在解析过程中,会首先循环查找本地缓存的 CNAME 记录,如果解析到 CNAME 记录,再去解析最后一级 CNAME 记录值的指定记录类型,可大大加快解析速度。
A 记录组包缓存:若授权返回了 A 记录,会将该 A 记录提前组好应答包存储到本地缓存中,客户端下次请求该记录时可省去组包过程,加速解析过程,但该功能在新版本中暂时移除,待修正解析错误问题后会再增加。
请求转发功能:通过配置 sr.conf 文件的 xfer: 模块,可设置在解析指定域名时直接将解析请求发送到指定解析服务器进行解析。
缓存刷新功能:主要用于手动强制刷新 dnspod-sr 本地缓存中的记录值,用于刷新被被墙记录或 TTL 时间很长又更新了记录需快速生效的情况,需配合 tool 目录下的客户端工具使用。
HASH 表缓存:本地缓存方式采用 HASH 表方式,所有数据缓存在内存中,不进行数据库操作,quizzer 列表也使用 HASH 表方式。
内存池:减少在缓存查找和递归解析整个过程中频繁的内存分配和释放操作,提高性能。
系统函数重写:对部分系统函数进行了自行实现,如大小写转换和域名有效性检查改为使用查表法进行,字符串比较和 IP 地址转换也进行了重新实现等。
1、安装
下载源码:可以使用git clone https://github.com/DNSPod/dnspod-sr.git
命令下载源码,或者使用wget https://github.com/DNSPod/dnspod-sr/zipball/master
下载压缩包。
编译源码:进入下载后的 dnspod-sr 目录,执行cd dnspod-sr/src
,然后运行make
命令进行编译。
2、配置
基本配置:若仅需 dns 转发器,无需额外配置即可直接使用,若要解析自己的域名,需修改 dnspod-sr 上层目录的 root.z 文件,在文件末尾添加相应的域名解析记录。
集群配置:支持集群部署,可通过同步 root.z 文件,并使用 lvs、haproxy、keepalived 等工具实现前端负载均衡来构建集群。
1、公司内网或服务器内网:可作为内部 DNS 服务器,解析外部不可见的私有域名,提高上网速度。
2、替换运营商基于 BIND 的方案:通过架设 dnspod-sr 集群,替换各大运营商目前基于 BIND 的陈旧方案,减少运营成本。
在千兆网卡、4 核 CPU、4G 内存、Linux 64 位系统的测试环境下,dnspod-sr 的性能可达 15 万 QPS,而 BIND9.9 为 7 万 QPS,unbound4.7 为 8 万 QPS。
1、问题
不支持 PTR 反解析。
缺少配置参数文件,目前需通过修改代码修改配置,如 fetcher 和 quizzer 线程数等。
A 记录提前组包功能因存在问题在新版本中被暂时移除。
红黑树自动刷新所有记录存在问题。
代码需要进一步整理,包括风格、函数调用和无用代码清理等。
需增加在程序崩溃时将缓存记录转储到磁盘的功能。
较老版本内核和 32 位系统的兼容性有待测试。
2、解决措施:官方会在后续的版本更新中逐步解决这些问题。
1、问:dnspod-sr 是否支持 Windows 系统?
答:不支持,dnspod-sr 是运行在 Linux 平台上的软件。
2、问:如何获取 dnspod-sr 的最新版本?
答:可以通过访问其官方网站 https://www.dnspod.cn/Products/dnspod-sr.html 获取最新版本信息,也可以关注其 GitHub 仓库 https://github.com/DNSPod/dnspod-sr 的最新动态。