一款好用的DNS服务器-SmartDNS(dns的服务器哪个最好)
ztj100 2024-10-27 18:29 23 浏览 0 评论
公司使用dnsmasq作为内网DNS服务器,前一段时间收到同事各种吐槽,弄得我颜面扫地。具体有下面几种异常:
- 解析超时,上游配置腾讯公共DNS
aneirin@host-1:~$ dig @119.29.29.29 www.baidu.com
; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> @119.29.29.29 www.baidu.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
- 解析国外域名偶尔失败,上游使用百度公共DNS
aneirin@host-1:~$ dig @180.76.76.76 www.linuxtechi.com
; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> @180.76.76.76 www.linuxtechi.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55999
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.linuxtechi.com. IN A
......
- 配置两台上游DNS,一台阿里的,一台谷歌的,dnsmasq开启“--all-servers”选项,
偶尔出现“www.baidu.com”解析到国外IP的情况
总结就是国内的公共DNS服务器解析国外域名偶尔出现解析超时或给出错误IP,国外的DNS服务器会将国内的域名解析成国外IP(谷歌宣称他们可以根据请求来源给出最优的IP地址,但工作中多次出现国内域名解析到国外IP的情况,如果有窍门,欢迎读者指点)。
痛点
上面的问题有两点需要解决,一是配置多个上游DNS服务器,取得响应最快的结果,这点dnsmasq就可以满足,它可以配置两个以上的DNS上游服务器,加上“--all-servers”选项,响应最快的返回结果将发给客户端。
--all-servers
By default, when dnsmasq has more than one upstream server available, it will send queries to just one server. Setting this flag forces dnsmasq to send all queries to all available servers. The reply from the server which answers first will be returned to the original requester.
这里解决了超时和“SERVFAIL”的问题,但没有解决返回非最优IP的问题,谷歌的公共DNS可能会缓存“www.baidu.com”的结果,这样就会出现返回速度比国内公共DNS快的情况,但这时客户端得到的IP很可能是国外的,导致请求变慢。如果服务器在将解析结果返回给客户端前,先做一个测试,比如ping测试或更高层的测试,测试性能最优的结果返回给客户端,这就完美了!
解决痛点-SmartDNS
在github上溜达,还真发现了这么一款软件-SmartDNS,国人开发的,必须赞一个。
下面介绍来自SmartDNS:
“SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。 同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。
与dnsmasq的all-servers不同,smartdns返回的是访问速度最快的解析结果。”
为了最小化对现有配置的更改,我将SmartDNS部署在和dnsmasq不同的主机上,并将SmartDNS作为dnsmasq的上游DNS服务器。SmartDNS的安装比较简单,配置项也比较丰富,这里主要使用软件的“域名预取”和“最快结果返回”功能。下面是配置文件(省略了冗长的注释),
bind [::]:53
cache-size 4096
# 开启域名预取,smartdns将在域名ttl即将超时的时候,再次发送查询请求,并缓存查询结果供后续使用
prefetch-domain yes
# 上游DNS返回多个结果时,使用ping方式作为测速方法
speed-check-mode ping
log-level info
server 223.5.5.5
server 223.6.6.6
server 119.29.29.29
server 8.8.8.8
server 8.8.4.4
配置文件中,配置了多个上游DNS服务器,有国内的也有国外的,并使用ping方式作为查询结果的测速方法,这样不仅解决了“timeout”和“SERVFAIL”的问题,也解决了解析国内域名返回国外IP的问题。软件上线了有一个多月,再也没有先前的问题出现,而且同事也反馈访问国内网站快了一些,容我偷乐下!
SmartDNS还有不少高级的功能,自己没有做更多测试,感兴趣读者可以自行上github学习。
希望这篇文章可以帮到正在努力的你,欢迎关注和评论!
相关推荐
- 能量空间物质相互转化途径(能量与空间转换相对论公式)
-
代码实现<!DOCTYPEhtml><htmllang="zh"><head>...
- 从零开始的Flex布局掌握(flex布局实战)
-
前言在现代网页设计中,布局是一个至关重要的环节,在过去的一段时间里,页面的布局还都是通过table...
- flex布局在css中的使用,一看就会!
-
1.认识flex布局我们在写前端页面的时候可能会遇到这样的问题:同样的一个页面在1920x1080的大屏幕中显示正常,但是在1366x768的小屏幕中却显示的非常凌乱。...
- 前端入门——弹性布局(Flex)(web前端弹性布局)
-
前言在css3Flex技术出现之前制作网页大多使用浮动(float)、定位(position)以及显示(display)来布局页面,随着互联网快速发展,移动互联网的到来,已无法满足需求,它对于那些...
- CSS Flex 容器完整指南(css flex-shrink)
-
概述CSSFlexbox是现代网页布局的强大工具。本文详细介绍用于flex容器的CSS属性:...
- Centos 7 network.service 启动失败
-
执行systemctlrestartnetwork重启网络报如下错误:Jobfornetwork.servicefailedbecausethecontrolprocessex...
- CentOS7 执行systemctl start iptables 报错:...: Unit not found.
-
#CentOS7执行systemctlstartiptables报错:Failedtostartiptables.service:Unitnotfound.在CentOS7中...
- systemd入门6:journalctl的详细介绍
-
该来的总会来的,逃是逃不掉的。话不多说,man起来:manjournalctl洋洋洒洒几百字的描述,是说journalctl是用来查询systemd日志的,这些日志都是systemd-journa...
- Linux上的Systemctl命令(systemctl命令详解)
-
LinuxSystemctl是一个系统管理守护进程、工具和库的集合,用于取代SystemV、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器。通过Syste...
- 如何使用 systemctl 管理服务(systemctl添加服务)
-
systemd是一个服务管理器,目前已经成为Linux发行版的新标准。它使管理服务器变得更加容易。了解并利用组成systemd的工具将有助于我们更好地理解它提供的便利性。systemctl的由来...
- 内蒙古2024一分一段表(文理)(内蒙古考生2020一分一段表)
-
分数位次省份...
- 2016四川高考本科分数段人数统计,看看你有多少竞争对手
-
昨天,四川高考成绩出炉,全省共220,196人上线本科,相信每个考生都查到了自己的成绩。而我们都清楚多考1分就能多赶超数百人,那你是否知道,和你的分数一样的人全省有几个人?你知道挡在你前面的有多少人?...
- 难怪最近电脑卡爆了,微软确认Win11资源管理器严重BUG
-
近期,Win11操作系统的用户普遍遭遇到了一个令人头大的问题:电脑卡顿,CPU占用率异常增高。而出现该现象的原因竟然与微软最近的一次补丁更新有关。据报道,微软已经确认,问题源于Win11资源管...
- 微软推送Win11正式版22621.1702(KB5026372)更新
-
IT之家5月10日消息,微软今天推送了最新的Win11系统更新,21H2正式版通道推送了KB5026368补丁,版本号升至22000.1936,22H2版本推送了KB50263...
- 骗子AI换脸冒充亲戚,女子转账10万元后才发现异常……
-
“今天全靠你们,不然我这被骗的10万元肯定就石沉大海了。”7月19日,家住石马河的唐女士遭遇了“AI”换脸诈骗,幸好她报警及时,民警对其转账给骗子的钱成功进行止付。当天13时许,唐女士收到一条自称是亲...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 能量空间物质相互转化途径(能量与空间转换相对论公式)
- 从零开始的Flex布局掌握(flex布局实战)
- flex布局在css中的使用,一看就会!
- 前端入门——弹性布局(Flex)(web前端弹性布局)
- CSS Flex 容器完整指南(css flex-shrink)
- Centos 7 network.service 启动失败
- CentOS7 执行systemctl start iptables 报错:...: Unit not found.
- systemd入门6:journalctl的详细介绍
- Linux上的Systemctl命令(systemctl命令详解)
- 如何使用 systemctl 管理服务(systemctl添加服务)
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)