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

流氓运营商干扰 dns 解析, dnsmasq 如何进行多次解析,丢弃无效结果?

  •  
  •   crazyfengs · 2015-10-15 16:11:53 +08:00 · 7083 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    流氓运营商某动,为了节省流量费大量使用缓存服务,起初换一下别的公共 dns 就好了,
    现在为了强制用户使用自已的 dns ,耍流氓,把 114 ,阿里的 dns 封了算了,现在放狠招,对一切非使用自家 dns 的解析进行干扰
    cmd 执行
    nslookup www.jd.com 180.76.76.76
    (以京东为例、使用没被封掉的非运营商自家 dns ,上面的是百度 dns )
    大约每 3-4 次返回 1-2 次无效结果
    正常的结果:

    服务器: public-dns-a.baidu.com
    Address: 180.76.76.76

    非权威应答:
    名称: www.jdcdn.com
    Address: 183.232.41.1
    Aliases: www.jd.com

    再执行一下上面的命令,获得了一个无效的 IP :

    异常的结果:

    服务器: public-dns-a.baidu.com
    Address: 180.76.76.76

    非权威应答:
    名称: www.jd.com
    Address: 10.10.100.31

    如何使用路由器的 dnsmasq 解决呢?
    开启防污染功能,或者直接 block 掉这个虚假 ip 会导致网页无法打开(不返回解析结果),
    如何设置获得 IP 为 10.10.100.31 则丢弃并重试直到获得其它结果??

    24 条回复    2018-02-16 01:09:32 +08:00
    crazyfengs
        1
    crazyfengs  
    OP
       2015-10-15 16:15:18 +08:00
    114 等 dns 光荣被封:

    nslookup whether.114dns.com 114.114.114.114
    服务器: public1.114dns.com
    Address: 114.114.114.114

    非权威应答:
    名称: whether.114dns.com
    Address: 127.0.0.1
    adrianzhang
        2
    adrianzhang  
       2015-10-15 16:33:13 +08:00   ❤️ 1
    可以采用 socks 代理方式出去,曾经做 SecDNS 的时候就是这么干的。
    如果你不着急,可以关注一下我,未来会将这种服务与 v2 上某个跨栏的项目合并发布出来。
    bazingaterry
        3
    bazingaterry  
       2015-10-15 16:40:05 +08:00
    首先你得知道是怎么封的,如果是 UDP 53 端口的封锁,用一个支持非 53 端口的 DNS 就可以了。
    crazyfengs
        4
    crazyfengs  
    OP
       2015-10-15 16:48:15 +08:00
    @adrianzhang 很好,国内的运营商太流氓了,多次投诉都是爱用不用的态度。只要垄断一天在,这类问题都是无法解决的,只能用户自己想办法了。

    这某动也是牛呀,要封就封得彻底,现在故意制造 dns 不稳定的假像。目前被迫用运营商自己的 dns 。用其它 dns 打开网页需要多按几次 F5 才能显示。 socks 要等入手 hk vps 才能用了。
    crazyfengs
        5
    crazyfengs  
    OP
       2015-10-15 16:52:08 +08:00
    @bazingaterry 对的, 53 被封了,但 opendns 的解析不准确, dnspod 家也没提供非 53 端口的服务,自建的话目前暂时没条件。目前随机出现 10.10.100.31 ,设想是假定获得此 IP 则重新解析直至获得真实 IP 可以解决,不清楚 dnsmasq 是否有此功能。
    lanlanlan
        6
    lanlanlan  
       2015-10-15 17:00:47 +08:00
    @crazyfengs 移动还直接 /32 把其他的公共 DNS 给劫持到自己的递归 DNS 上 仅仅 udp53 的话 用 tcp 查询就可以了
    lanlanlan
        7
    lanlanlan  
       2015-10-15 17:06:30 +08:00
    oh 不对 刚没看你的回复 114 那个返回 127 说明你那边 114.114.114.114/32 已被移动给劫持到自家 DNS 上了 把 IP 都劫持了的 用 tcp 方式作用不大了。。。
    zhanglp888
        8
    zhanglp888  
       2015-10-15 17:09:03 +08:00
    用 dnscrypt ,自己搭建一个 dns 服务器
    yexm0
        9
    yexm0  
       2015-10-15 17:13:22 +08:00 via Android
    不如试试 @johnjiang85 的 dns 119.29.29.29
    crazyfengs
        10
    crazyfengs  
    OP
       2015-10-15 17:25:30 +08:00
    @lanlanlan 晚点我测试一下 180.76.76.76,114 的确被劫了。。
    crazyfengs
        11
    crazyfengs  
    OP
       2015-10-15 17:27:05 +08:00
    @yexm0 其实我就是在用 119.29.29.29 出现这个问题,怕某动看到了所以贴百度 dns 的 ip 。都一样,非移动自家的 dns 就会出现干扰
    CRH
        12
    CRH  
       2015-10-15 18:34:36 +08:00
    这种事,上工信部网站投诉应该还是有用的吧
    ChangeTheWorld
        13
    ChangeTheWorld  
       2015-10-15 20:23:28 +08:00
    Dnsspeeder
    Daniel65536
        14
    Daniel65536  
       2015-10-15 20:39:22 +08:00
    用 pacp_dnsproxy 即可……
    ericFork
        15
    ericFork  
       2015-10-16 02:20:19 +08:00
    http://www.thekelleys.org.uk/dnsmasq/CHANGELOG

    version 2.73

    [...]
    Add --ignore-address option. Ignore replies to A-record
    queries which include the specified address. No error is
    generated, dnsmasq simply continues to listen for another
    reply. This is useful to defeat blocking strategies which
    rely on quickly supplying a forged answer to a DNS
    request for certain domains, before the correct answer can
    arrive. Thanks to Glen Huang for the patch.
    ericFork
        16
    ericFork  
       2015-10-16 02:21:52 +08:00
    如果只是做了投毒,抢先返回投毒 IP ,则上述选项可治。根据你自己的推断,可以用这个解决。

    然而估计运营商是做的劫持而非投毒,不一定有后续正确解析结果返回的。
    johnjiang85
        17
    johnjiang85  
       2015-10-16 10:21:43 +08:00
    @crazyfengs 能测试下 http://119.29.29.29/d?dn=www.jd.com 的返回结果吗,目前 DNSPod 公共 DNS 对外提供服务的有 53 和 80 ( D+)端口,如果 80 未被劫持的话,我们看看提供的转换程序搭配 dnsmasq 使用。
    另外我们正在考虑非 53 端口的支持。
    还有楼主能反馈下哪个地区的移动运营商吗,我们通过线下关系找运营商沟通下,看能否解决。
    crazyfengs
        18
    crazyfengs  
    OP
       2015-10-16 15:38:27 +08:00
    @johnjiang85 广东 FS , 80 端口一直正常,返回 183.232.41.1 正常结果

    今天很神奇的发现它不再搞 119.29.29.29 了,使用 dnspod 家的 dns 不再跳出 10.10.100.31 这个假 ip 了。
    追踪了路由,测试了不存在的域名,证明没有被劫持。
    终于能愉快地上网了。持续两个多月的问题好了,难道是运营商良心发现?
    但再测试百度的 180.76.76.76\以及 opendns 208.67.222.222 依旧跳出假 IP 。
    只是担心 dnspod 的 dns 有一天跟 114 一样,被劫持到它自家的 dns 。。。


    ----------------------------------------------------------------------------
    总结一下,小型网站的域名,无论尝试多少次都是正确的 IP 。
    而类似:
    nslookup www.jd.com 180.76.76.76
    nslookup e.hiphotos.baidu.com 180.76.76.76
    nslookup img1.gtimg.com 208.67.222.222
    都是访问量大的网站及其二级 cdn 域名随机跳出 10.10.100.31 这个内网 IP ,这估计是一个已经挂掉的缓存服务器吧。
    crazyfengs
        19
    crazyfengs  
    OP
       2015-10-16 15:45:40 +08:00
    @CRH 为了上个网还要投诉,活得真心累哈哈。。
    crazyfengs
        20
    crazyfengs  
    OP
       2015-10-16 15:47:48 +08:00
    @ChangeTheWorld @Daniel65536 好工具,谢谢!!
    hjny
        21
    hjny  
       2015-10-16 23:47:51 +08:00
    dnscryt ,选择 cisco 的 server ,可改善。
    johnjiang85
        22
    johnjiang85  
       2015-10-20 11:45:52 +08:00
    @crazyfengs 我们最近在和一些运营商沟通劫持的问题,主要是部分地区移动和铁通,但是即使以腾讯的关系依然收效甚微,囧。
    snsd
        23
    snsd  
       2015-11-11 18:53:17 +08:00 via iPhone
    你那还好点了,我这直接锁死 dns ,改了移动默认 dns 直接断网
    bclerdx
        24
    bclerdx  
       2018-02-16 01:09:32 +08:00
    @johnjiang85 为什么会依然收效甚微!难道 DNS 劫持是运营商故意而为之的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1523 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:56 · PVG 00:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.