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

目前有什么dns能反智能dns解析ip呢?比如把某个域名强行解析成电信的如果有这条记录的话

  •  
  •   tywtyw2002 · 2013-10-18 14:49:17 +08:00 · 4535 次点击
    这是一个创建于 4055 天前的主题,其中的信息可能已经有所发展或是发生改变。
    中国的很多域名都使用了智能dns,虽然说智能dns是根据递归dns服务器的ip位置去给ip的。
    但是用了国外的public dns就是被国内的智能dns搞死。
    因为很多智能dns没有规则对应国外的ip的。
    域名的话就会被随机解析成 电信或者联通这样很痛苦呀。
    如果在国外的话,想强行用电信服务器,我可以把dns设置成电信的,但是这样做又会失去很多使用国外cdn网站的速度。


    不知道有没有这样的dns软件呢?
    可以设置想要的返回ip的网络。
    比如我在国外,希望电信ip优先。
    那么该dns软件 同时查3个地方,国外的本地dns, 中国的电信dns。
    如果国外的本地dns返回一个非中国ip,那么该dns软件返回这个国外ip,
    如果国外dns返回一个中国ip,但是不是电信的ip,那么dns继续查询国内电信的递归dns,
    如果国内电信的递归dns返回电信ip,那么该软件返回电信ip,
    如果国内电信的递归dns返回非电信ip,那么该软件就返回在国外本地dns插叙到的ip。
    8 条回复    1970-01-01 08:00:00 +08:00
    gamexg
        1
    gamexg  
       2013-10-18 16:26:20 +08:00
    没见过,楼主可以自己写一个。
    http://blog.csdn.net/trbbadboy/article/details/8093256 + dnspython
    xierch
        2
    xierch  
       2013-10-20 00:27:40 +08:00
    逻辑好复杂..
    如果只是常用几个网站想用电信 DNS 解析,用 dnsmasq 手动些规则吧?
    b1074549
        3
    b1074549  
       2013-10-21 06:39:40 +08:00
    ip = dnsquery(host, '8.8.8.8')
    if ip_in_china(ip):
    ....ip = dnsquery(host, '114.114.114.114')
    return ip
    xierch
        4
    xierch  
       2013-10-21 19:57:30 +08:00
    https://gist.github.com/scturtle/6472732
    也许可以改改这段程序
    puppywang
        5
    puppywang  
       2013-10-21 23:05:27 +08:00
    我之前也想写这么个东西,后来觉得影响速度,而且有些cdn还是全球都有ip,于是简单想了个解决办法:
    1. 先用protectdns去除poisoned ip。
    2. 修改dnsmasq的配置文件,all-servers=true,dnsmaq的resovler文件同时写入本地dns和远端的dns。
    3. 一般而言,本地的dns会优先返回,所以先拿到的地址应该都是离你物理地址最近的。
    tywtyw2002
        6
    tywtyw2002  
    OP
       2013-10-22 14:15:12 +08:00
    @puppywang 其实不是为了拿到地址最近的,在国外的话 联通的延时和丢包率非常大,电信还得分地区。

    其实我觉得这个dns有点类似根据自己的网络状况反向优化dns解析了。
    tywtyw2002
        7
    tywtyw2002  
    OP
       2013-10-22 14:17:13 +08:00
    @xierch 不知道性能如何?
    个人用足够了,但是提供服务估计差点

    有人推荐用这个写unbound
    aveline
        8
    aveline  
       2013-11-15 02:33:53 +08:00
    @tywtyw2002 智能 DNS 的話看看支持 EDNS Subnet 否,支持的話可以把 subnet 設置成電信 IP。

    測試可以用這個 https://github.com/opendns/dnspython-clientsubnetoption
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2828 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:26 · PVG 15:26 · LAX 23:26 · JFK 02:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.