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

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

  •  
  •   leev2 · 229 天前 · 4228 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据文章教程步骤,设置了路由器的 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
        1
    CloudnuY   229 天前
    把「--all-servers 」写到启动参数里面?
        2
    ysc3839   229 天前 via Android
    不使用
        3
    ysc3839   229 天前 via Android
    不使用 resolv-file,改为直接配置 server=
        4
    leev2   229 天前
    @ysc3839
    dnsmasq.conf,文件里面,这样写就可以了是吗?

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

    all-servers
    server=
    server=
    server=
        5
    aveline   229 天前
    不如放弃 dnsmasq,来用 dnsdist 吧。

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

    这两个有什么区别?
        14
    miaomiao888   228 天前
    单纯选用返回最快 /延迟最低的 DNS 根本没 P 用,返回的 IP 中哪个 IP 对于你的网络来说最快才是重点!


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

    缓存了解下 min-ttl 这个参数就可以了
        20
    425685343   225 天前
    这时候就需要 SRTT 了,所以还是选择 BIND 吧
        21
    iLPL   219 天前
    用 SmartDNS 当上游 DNS
        22
    bclerdx   210 天前
    @cnyang 真的么?
        23
    zhouyut001   209 天前 via Android
    no-resolv, no-poll, all-servers,在 dnsmasq. conf 里添加你需要的 DNS, service 重启,status 可以看见使用多个 DNS 同时并发查询
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2367 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 12:23 · PVG 20:23 · LAX 05:23 · JFK 08:23
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1