dnsmasq 如何智能选择最快的上游 DNS 服务器?

2018-08-05 01:56:58 +08:00
 leev2

根据文章教程步骤,设置了路由器的 dnsmasq,但是有个问题不明白: resolv-file=/etc/resolv.dnsmasq.conf 比如: nameserver 1.1.1.1 nameserver 8.8.8.8 nameserver 1.2.4.8 nameserver 223.5.5.5

这里设置了自定义的 DNS 上游服务器地址,但是只能是默认使用第一个地址,但是没办法筛选出最快的 DNS 服务器使用。

然后文章后面又提到了通过配置文件里面添加 all-servers

$ vi /etc/dnsmasq.conf

all-servers
server=1.1.1.1
server=8.8.8.8 server=1.2.4.8 server=223.5.5.5

all-servers 表示对以下设置的所有 server 发起查询,选择回应最快的一条作为查询结果返回。

那么请问下,resolv.dnsmasq.conf 文件里面,设置了所有的上游 DNS,是否是还需要在 dnsmasq.conf 里面,体添加“ server=”这个参数呢?

或者有什么其它方案可以实现 dnsmasq 能自动选择最快的 dns 使用。

文章地址: https://www.hi-linux.com/posts/30947.html

20282 次点击
所在节点    DNS
23 条回复
CloudnuY
2018-08-05 02:36:53 +08:00
把「--all-servers 」写到启动参数里面?
ysc3839
2018-08-05 05:47:33 +08:00
不使用
ysc3839
2018-08-05 05:47:52 +08:00
不使用 resolv-file,改为直接配置 server=
leev2
2018-08-05 10:00:48 +08:00
@ysc3839
dnsmasq.conf,文件里面,这样写就可以了是吗?

no-hosts
addn-hosts=/dev/shm/dnsrecord.txt
no-resolv

all-servers
server=
server=
server=
aveline
2018-08-05 10:56:48 +08:00
不如放弃 dnsmasq,来用 dnsdist 吧。

https://dnsdist.org/guides/serverselection.html
hugo007y
2018-08-05 14:22:22 +08:00
响应最快,并不代表解析的地址访问速度最快,这个是不同概念啊。
leev2
2018-08-05 18:47:54 +08:00
@hugo007y 那有其它更好的方案推荐的吗?就是访问不同的网站可以自动选择最优的 DNS 进行解析,路由端、PC 端都可以。
fonlan
2018-08-05 23:32:09 +08:00
dnsmasq 这个只是看哪个 DNS 服务器响应块,不代表返回的地址你连接快。如果要返回连接最快的解析地址的话 win 有 DNS chooser,路由端的话有 SmartDns,恩山了解下?
leev2
2018-08-06 00:18:00 +08:00
@fonlan 这两个都用过,主要是主路由装不了 SmartDNS。这样说的话,dnsmasq 是无法实现这样的功能?之前理解有误区☺
fonlan
2018-08-06 00:47:54 +08:00
@leev2 不一定要主路由装,你也可以挂个 xx 派的微型版装 SmartDns 作为局域网的默认 DNS 解析服务器,主路由的 dhcp server 那里设置一下就行
ysc3839
2018-08-06 01:28:48 +08:00
@leev2 我没自己写过 dnsmasq 的配置文件,所以不知道……
cnyang
2018-08-06 08:54:41 +08:00
查看配置文件是否有 strictorder 或--strict-order 的参数,有参数则 all-servers 无效
leev2
2018-08-06 09:53:16 +08:00
@cnyang 就是有一点不太明白
在,/etc/dnsmasq.conf,里面填写

all-servers
server=1.2.4.8
server=223.5.5.5
server=8.8.8.8

和在 /etc/resolv.dnsmasq.conf,里面,填写

nameserver 1.2.4.8
nameserver 223.5.5.5
nameserver 8.8.8.8

这两个有什么区别?
miaomiao888
2018-08-06 11:13:41 +08:00
单纯选用返回最快 /延迟最低的 DNS 根本没 P 用,返回的 IP 中哪个 IP 对于你的网络来说最快才是重点!


https://www.jianshu.com/p/ad63fe00858c
cnyang
2018-08-06 13:19:26 +08:00
@leev2 这得看你怎么安装的,ps aux 查看下进程,看 dnsmasq 的运行参数
一般而言,/etc/dnsmasq.conf 是参数文件载入的子文件,或者算前置文件,以此生成真正的参数文件(临时)
cnyang
2018-08-06 13:22:27 +08:00
关于 dnsmasq 的参数可以使用 dnsmasq --help 查看,nameserver 是 linux 识别 dns 的格式,dnsmasq 启动脚本会转换为 server 格式
hugo007y
2018-08-06 21:30:15 +08:00
@leev2 我不知道你的用途是什么,如果是 FQ,那么目前最现实的是分流,然后 dnsmasq 做缓存,min-ttl 尽量设置长时间,一般足够了。
leev2
2018-08-06 22:42:02 +08:00
@hugo007y FQ 我有酸酸,主要是想提高下浏览网站的速度。比如有时候会出现打开一些网站比较慢,然后可能刷新下又快了。又或者可以解决一些 DNS 污染的问题,页面一直刷新。
hugo007y
2018-08-08 00:30:52 +08:00
@leev2 你路由器是什么系统,openwert ?如果是,应该在分流和缓存方面处理,chinadns 和 dnsmasq 就可以解决了。

缓存了解下 min-ttl 这个参数就可以了
425685343
2018-08-09 19:36:30 +08:00
这时候就需要 SRTT 了,所以还是选择 BIND 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX