V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
vtexfan
V2EX  ›  OpenWrt

chinadns 的使用问题

  •  
  •   vtexfan · 2015-05-18 13:33:28 +08:00 · 1517 次点击
    这是一个创建于 3272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.刷了openwrt,很多教程里面不一样,有的在luci的“本地服务器”里面填写127.0.0.1#5353,有的是在“DNS转发”里面填写127.0.0.1#5353。这两者有什么区别吗?

    2.为什么这里的设置没有写入到dnsmasq.conf的配置文件里呢?

    3.我用dig,查到SERVER:127.0.0.1#53,是53而不是5353,是不是意味我用的是dnsmasq而不是chinadns解析?

    小白问题,搜索无果,求科普一下,谢谢!

    10 条回复    2015-05-18 16:12:59 +08:00
    westy
        1
    westy  
       2015-05-18 13:48:07 +08:00
    当时折腾的时候弄明白了,不过记得不是太清楚,如果错了楼下烦请更正一下。

    127.0.0.1#5353 是 Chinadns。

    DNS转发里填这个,是为了接入路由的其他设备在进行DNS查询的时候,DNSMasq把请求转发到 127.0.0.1#5353上去。
    heiybb
        2
    heiybb  
       2015-05-18 14:01:25 +08:00 via Android
    手机打字太麻烦,先回答1
    对于填入:127.0.0.1#5353 两者效果是相同的,具体区别不知道,在恩山论坛上问过,得到的解释模棱两可,Openwrt的Dnsmasq文档也没有清楚的写明白两者的区别,Google后发现也有不少人不明白这个问题,但各种解释也说不清楚,后来也就不了了之了。
    heiybb
        3
    heiybb  
       2015-05-18 14:03:01 +08:00 via Android
    2 这里填入的配置其实保存在/etc/config/DHCP (应该没记错)
    并不是保存在Dnsmasq.conf
    heiybb
        4
    heiybb  
       2015-05-18 14:06:45 +08:00 via Android
    3 你dig时没有指定端口默认就按53端口查询,只不过Dnsmasq把53端口的Request转发到ChinaDNS处理(这就是你刚刚填127.0.0.1#5353的作用),最终的回显当然是53端口。Dnsmasq在此处只起到转发Request的作用。
    heiybb
        5
    heiybb  
       2015-05-18 14:10:22 +08:00 via Android
    以上是个人理解,如果有不妥当的地方欢迎指正。
    vtexfan
        6
    vtexfan  
    OP
       2015-05-18 14:35:18 +08:00
    谢谢两位,的确如 @heiybb 兄所说,配置文件在dhcp里面。
    1 问题在dhcp里:
    option local '127.0.0.1#5353' //本地服务器
    list server '127.0.0.1#5353' //DNS转发
    好像使用起来并没有太多不同。

    2 dhcp的优先级要高于dnsmasq?我看很多教程里面都是在dnsmasq.conf修改服务器和noresolv

    3 那这样dnsmasq的缓存还有效吗?一直没找到缓存文件在那儿
    bugeye
        7
    bugeye  
       2015-05-18 14:48:44 +08:00
    1. /etc/config/dhcp是openwrt这个特定linux发行版的配置文件,在dhcp文件里面,可以设置dnsmasq的很多行为。但语法和dnsmasq.conf用的不同。

    2. dhcp高于dnsmasq.conf,也就是说,如果dnsmasq.conf和dhcp设置了同样的配置,以dhcp为主。

    3. dnsmasq缓存和转发到chinadns解析无关。

    4. “.我用dig,查到SERVER:127.0.0.1#53,是53而不是5353,是不是意味我用的是dnsmasq而不是chinadns解析?”

    你是用dnsmasq解析,但只要设置正确,dnsmasq就会把你的请求 转给chinadns。要知道有没转过去,最简单的办法是 dig www.youtube.com,看看返回的值像不像真的。

    另外,由于你是用dnsmasq解析,所以可以使用dnsmasq的附加功能,比如某个网址(假设youku.com)如果不想用chinadns解析,可以在 dnsmasq.conf里增加一行 server=/youku.com/8.8.8.8。这样遇到youku.com,dnsmasq就不会转发到chinadns,而是向你指定的8.8.8.8去查询。
    vtexfan
        8
    vtexfan  
    OP
       2015-05-18 15:25:41 +08:00
    谢谢 @bugeye 兄。
    还有两个问题想请教:
    1 dnsmasq的缓存到底在哪儿呢?如何知道有没有效果,dig gmail.com,第二次Query time很短,但是隔了一段时间再去查询,时间又变很长,这个特征貌似又是缓存没起作用。有时候dig等了几秒信息才出来,但是Query time上显示却只有几十,为啥?比如我dig twitter每次都要卡几秒,而且每次的Query time都是一样。

    2.经常会发生网页打开很慢(这里包括国内任一网站),甚至打不开需要重新刷新才能打开,有什么好的经验可以帮助排查问题出在环节?
    bugeye
        9
    bugeye  
       2015-05-18 15:44:56 +08:00
    1. 没研究过dnsmasq的缓存在哪的问题。照我的理解,应该放在内存里吧。

    至于缓存多长时间,应该是查询域名时的ttl的作用。比如你dig www.youku.com,你可以看到一个数字,我这里显示的是204,也就是这个域名的时效是204秒,dnsmasq应该不会缓存超过这个值。当然有些程序可以强行让dns缓存超过TTL,但具体到dnsmasq有没有这功能就不知道了,没研究过这个问题。

    另外dnsmasq默认好像只缓存150次域名查询,这样太多域名查询也会造成某些域名没到TTL时间就给新查询冲掉。在路由器内存许可的情况下,可以在dnsmasq.conf加上 cache-size=XXXX 来增大这个缓存的数量。我的路由器上设置的是9999

    2. 这个挺麻烦的吧,可以dig一下,看看解析出来的IP属于哪家运营商,如果跨运营商,在国内经常很慢。但很多时候也可能仅仅是线路偶然抽疯,或者对方服务器出故障造成的。。。
    LazyZhu
        10
    LazyZhu  
       2015-05-18 16:12:59 +08:00
    没有优先级一说
    简单说一下吧, /etc/config/是OpenWRT独有的配置方式(主要为了luci而设计的), 配置参数通过uci wapper (Shell script/init.d) 转化成程序所使用的格式, 前面的option local '127.0.0.1#5353' / list server '127.0.0.1#5353' 转换成命令行参数或者dnsmasq.conf文件中,两者是一样的效果:server=
    https://github.com/openwrt-mirror/openwrt/blob/dcbb1729bae0978f5c27a52784dc2c1325292728/package/network/services/dnsmasq/files/dnsmasq.init#L147
    https://github.com/openwrt-mirror/openwrt/blob/dcbb1729bae0978f5c27a52784dc2c1325292728/package/network/services/dnsmasq/files/dnsmasq.init#L148

    和手动修改dnsmasq.conf效果是一样的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2042 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:16 · PVG 09:16 · LAX 18:16 · JFK 21:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.