V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leev2
V2EX  ›  DNS

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

  •  
  •   leev2 · 2018-08-05 01:56:58 +08:00 · 20912 次点击
    这是一个创建于 2310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据文章教程步骤,设置了路由器的 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

    23 条回复    2018-08-25 09:30:35 +08:00
    CloudnuY
        1
    CloudnuY  
       2018-08-05 02:36:53 +08:00
    把「--all-servers 」写到启动参数里面?
    ysc3839
        2
    ysc3839  
       2018-08-05 05:47:33 +08:00 via Android
    不使用
    ysc3839
        3
    ysc3839  
       2018-08-05 05:47:52 +08:00 via Android
    不使用 resolv-file,改为直接配置 server=
    leev2
        4
    leev2  
    OP
       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
        5
    aveline  
       2018-08-05 10:56:48 +08:00
    不如放弃 dnsmasq,来用 dnsdist 吧。

    https://dnsdist.org/guides/serverselection.html
    hugo007y
        6
    hugo007y  
       2018-08-05 14:22:22 +08:00
    响应最快,并不代表解析的地址访问速度最快,这个是不同概念啊。
    leev2
        7
    leev2  
    OP
       2018-08-05 18:47:54 +08:00
    @hugo007y 那有其它更好的方案推荐的吗?就是访问不同的网站可以自动选择最优的 DNS 进行解析,路由端、PC 端都可以。
    fonlan
        8
    fonlan  
       2018-08-05 23:32:09 +08:00 via Android
    dnsmasq 这个只是看哪个 DNS 服务器响应块,不代表返回的地址你连接快。如果要返回连接最快的解析地址的话 win 有 DNS chooser,路由端的话有 SmartDns,恩山了解下?
    leev2
        9
    leev2  
    OP
       2018-08-06 00:18:00 +08:00
    @fonlan 这两个都用过,主要是主路由装不了 SmartDNS。这样说的话,dnsmasq 是无法实现这样的功能?之前理解有误区☺
    fonlan
        10
    fonlan  
       2018-08-06 00:47:54 +08:00 via Android
    @leev2 不一定要主路由装,你也可以挂个 xx 派的微型版装 SmartDns 作为局域网的默认 DNS 解析服务器,主路由的 dhcp server 那里设置一下就行
    ysc3839
        11
    ysc3839  
       2018-08-06 01:28:48 +08:00 via Android
    @leev2 我没自己写过 dnsmasq 的配置文件,所以不知道……
    cnyang
        12
    cnyang  
       2018-08-06 08:54:41 +08:00
    查看配置文件是否有 strictorder 或--strict-order 的参数,有参数则 all-servers 无效
    leev2
        13
    leev2  
    OP
       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
        14
    miaomiao888  
       2018-08-06 11:13:41 +08:00
    单纯选用返回最快 /延迟最低的 DNS 根本没 P 用,返回的 IP 中哪个 IP 对于你的网络来说最快才是重点!


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

    缓存了解下 min-ttl 这个参数就可以了
    425685343
        20
    425685343  
       2018-08-09 19:36:30 +08:00
    这时候就需要 SRTT 了,所以还是选择 BIND 吧
    iLPL
        21
    iLPL  
       2018-08-15 03:19:57 +08:00
    用 SmartDNS 当上游 DNS
    bclerdx
        22
    bclerdx  
       2018-08-23 21:25:15 +08:00
    @cnyang 真的么?
    zhouyut001
        23
    zhouyut001  
       2018-08-25 09:30:35 +08:00 via Android
    no-resolv, no-poll, all-servers,在 dnsmasq. conf 里添加你需要的 DNS, service 重启,status 可以看见使用多个 DNS 同时并发查询
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2598 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:31 · PVG 14:31 · LAX 22:31 · JFK 01:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.