dnspod-sr内网轻量级DNS首选方案
dnspod-sr介绍
dnspod-sr 是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件,强烈公司内网或者服务器内网使用dnspod-sr,具备高性能、高负载、易扩展的优势,非 BIND、powerdns 等软件可以比拟。
dnspod-sr特性
- 高性能,比所有流行的开源 DNS 软件性能高出2倍以上
- 安全,能抵御一般攻击
- 稳定,有效降低解析失败率
- 主动刷新缓存,响应速度更快
- 易于扩展,非常容易部署
- 防污染,能够正确解析被污染域名
dnspod-sr安装
方法一:下载源码(推荐)
# git clone https://github.com/DNSPod/dnspod-sr.git
# cd dnspod-sr
方法二:下载压缩包
# wget https://github.com/DNSPod/dnspod-sr/zipball/master
编译源码
# cd src
# make
不需要make install
运行
# ./dnspod-sr
备注:切记一定要在相对路径下执行
dnspod-sr配置
如果你仅仅需要一个dns转发器,那么什么都不需要配置,直接可以使用。但是如果你想解析自己的域名。修改dnspod-sr上层目录的root.z
增加NS记录
ttlsa.com. 172800 IN NS ns1.ttlsa.com.ttlsa.com. 172800 IN NS ns2.ttlsa.com.
增加A记录
ns1.ttlsa.com. 172800 IN A 173.255.219.122ns2.ttlsa.com. 172800 IN A 173.255.219.122
备注:经过测试发现它不支持CNAME、官方文档几乎是空白.无奈.root.z的最后一行一定要一个空行,否则最后一条记录解析不到。
验证dns配置
验证A记录配置
# dig @127.0.0.1 ns1.ttlsa.com; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> @127.0.0.1 ns1.ttlsa.com; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7843;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;ns1.ttlsa.com. IN A;; ANSWER SECTION:ns1.ttlsa.com. 604800 IN A 173.255.219.122;; Query time: 1 msec;; SERVER: 127.0.0.1#53(127.0.0.1);; WHEN: Sun Dec 22 04:29:35 2013;; MSG SIZE rcvd: 47
验证NS记录配置
# dig ns @127.0.0.1 ttlsa.com ; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> ns @127.0.0.1 ttlsa.com; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39842;; flags: qr ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;ttlsa.com. IN NS;; ANSWER SECTION:ttlsa.com. 604800 IN NS ns1.ttlsa.com.ttlsa.com. 604800 IN NS ns2.ttlsa.com.;; Query time: 0 msec;; SERVER: 127.0.0.1#53(127.0.0.1);; WHEN: Sun Dec 22 04:30:17 2013;; MSG SIZE rcvd: 75
指定NS服务器
需要修改配置文件:sr.conf默认配置文件为当前目录下的 sr.conf,也可以在命令行参数中指定
# ./dnspod-sr /path/of/sr.conf
如果需要为特定域名指定DNS服务器,以 xfer 开头,如下:
xfer: googleusercontent.com.:8.8.8.8 google.com.:8.8.8.8 youtube.com.:8.8.8.8 s-static.ak.facebook.com.edgekey.net.:8.8.8.8 :
最后一行以:
结束。以上的几个域名解析请求都会中转到8.8.8.8上.
配置日志文件目录(可选)
log_path: ./log/
dnspod-sr性能
dnspod-sr 依托于 DNSPod 多年运营和优化 DNS 服务的经验,针对国内复杂的网络情况,对递归 DNS 进行了一系列的优化,比较其他开源软件,性能得到大幅提升。
测试环境
千兆网卡,4核 CPU,4G 内存,Linux 64位系统。
性能测试
- dnspod-sr: 15万 qps
- BIND 9.9: 7万 qps
- unbound 4.7: 8万 qps
测试如图:
集群式部署
DNSPOD-SR说明文档里面提到支持集群,也没看出怎么支持集群,如果你想实现集群,同步root.z文件,前端可以用lvs、haproxy、keepalived等等来实现集群,方法很多,不在多说了。
最后
在内网使用dnspod-sr值得推荐,配置简单,集群搭建也简单。相比bind等等要简单很多,但是功能也简单。但是内网下足够用了。dnspod-sr的wiki基本上空白,官方文档没本文详细。官方文档只包含了安装,并未提到如何配置。
参考文章
DNSPOD-SR Wiki: https://github.com/DNSPod/dnspod-sr/wiki
TTLSA:http://www.ttlsa.com/html/4071.html
网站:运维生存时间 网址:http://www.ttlsa.com/linux/dnspod-sr-little-dns/