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

dnspod-httpdns-proxy 一个小轮子,解决 DNS 污染和解析优化问题。

  •  1
     
  •   KCheshireCat · 2017-03-25 00:41:55 +08:00 · 10594 次点击
    这是一个创建于 2804 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/KCCat/dnspod-httpdns-proxy

    大家好,这次我带来一个新的小轮子,功能:

    • 把本地 DNS 请求转发到 dnspod 的 httpdns 并带上本地 IP ,来保证不会失去本地运营商解析优化。
    • 同时提供解析结果过滤,把不在期望范围内的解析丢弃来达到类似加权解析的效果。

    这个轮子的使用环境,我举个栗子:
    本地使用 DNSMASQ 作为 DNS 查询基础,
    用 vps 转发或者其他手段我能得到干净的查询结果,通常来说跳板解析掩饰很长,
    用这个轮子可以得到本地优化,
    在 DNSMASQ 上设置all-servers之后, DNSMASQ 会对所有上游服务器查询,谁先到用谁的结果。
    这时候在这个轮子里设置只返回自己宽带运营商 IP 这样就得到了本地优化结果。

    这个小轮子是在 python3.6 上写的,在 3.5 上运行通过,不保证向下兼容, linux , win 都可以运行,设计使用环境如上面的栗子。

    22 条回复    2017-08-05 14:04:59 +08:00
    taowen
        1
    taowen  
       2017-03-25 09:07:20 +08:00
    造轮子不易,支持一下
    wwqgtxx
        2
    wwqgtxx  
       2017-03-25 09:17:29 +08:00 via iPhone
    默默地问一下,这个轮子是怎么能获得自己真正的 ip 呢
    KCheshireCat
        3
    KCheshireCat  
    OP
       2017-03-25 11:45:30 +08:00 via iPhone
    @wwqgtxx 自己填本地区运营商的一个公网 ip 就好…… dns 解析优化也没分那么细
    qcloud
        4
    qcloud  
       2017-03-25 13:33:21 +08:00 via iPhone
    防劫持吗?
    KCheshireCat
        5
    KCheshireCat  
    OP
       2017-03-25 14:11:07 +08:00 via iPhone
    @qcloud 上游走 dnspod 的 httpdns 查询,不是 dns 包
    whx20202
        6
    whx20202  
       2017-03-25 15:42:13 +08:00
    已 Star ,请教一下几个问题:
    1. dnspod 里面的 DNS 都是无污染的吧? 我的意思是如果用 httpdns 去请求 youtube ,他会给你正确的 IP 吗?
    2. 如果请求国内普通网站,比如 www.baidu.com 什么的, httpDNS 和 udp DNS 时延您这边感觉有多大区别?
    johnjiang85
        7
    johnjiang85  
       2017-03-25 16:08:54 +08:00   ❤️ 1
    @whx20202
    1. 这个做到的话很简单,但是向外公开提供服务,有些事情是不能做的,所以还是有问题的
    2. 我们的 httpDNS 的全国所有地区所有运营商的平局数据, ping 延时是平均 35ms , httpdns 平均延时是 200ms ,比 udp 肯定是要慢的,不过主要还是慢在非本地覆盖上,北上广周边还是很快的
    whx20202
        8
    whx20202  
       2017-03-25 16:12:24 +08:00
    @johnjiang85 能理解国家政策方面的要求,但是目前如果我真的请求了被墙的那种域名,您那边也好,友商也好都是怎么处理的? 是直接超时还是返回一个错的?
    KCheshireCat
        9
    KCheshireCat  
    OP
       2017-03-25 16:12:35 +08:00
    @whx20202 #6
    httpdns 请求 google 之类的是有污染的
    我写这个轮子原因就是 AliDNS 在我这边用 udp 请求各种被移动的劫持,
    而用 TCP 请求丢包率 96%,可能是被针对性劣化了。
    请求国内站点比 udp 是要慢的,但也就是数值上差距,感觉不到。
    HalloCQ
        10
    HalloCQ  
       2017-03-25 20:14:37 +08:00
    可以理解为跟 @lbp0200 这个兄弟的 PRCDNS 一样的效果吗? PRCDNS 可以防被墙的污染哦
    HalloCQ
        11
    HalloCQ  
       2017-03-25 20:17:46 +08:00
    你这个对国内的 CDN 应该比 prcdns 要好,不过你这个要手动填 ip 吗?如果能自动获取就好了
    KCheshireCat
        12
    KCheshireCat  
    OP
       2017-03-25 20:35:29 +08:00
    @HalloCQ #11
    我这个轮子是方便使用 dnspod httpsdns 服务来得到本地 CDN 解析优化的。
    能防止运营商的污染,不能防止墙的污染。

    手动填是因为移动流量穿透很厉害,一穿,网络解析的 IP 就不准了,不如手动填一个准的。
    johnjiang85
        13
    johnjiang85  
       2017-03-25 23:23:40 +08:00
    @whx20202 一般就是不处理,墙返回什么就按照什么返回。
    johnjiang85
        14
    johnjiang85  
       2017-03-25 23:24:57 +08:00
    @KCheshireCat 手工填上 IP 参数确实会比直接请求更准确,不会被运营商的 NAT 影响。
    johnjiang85
        15
    johnjiang85  
       2017-03-25 23:27:28 +08:00
    @whx20202 另外就是延迟这里,我们一般会要求本地进行一定时间的缓存,并在缓存快过期时提前进行预取来抵消 httpdns 比 udp 延迟高的影响。这样做之后只有在第一次请求和网路类型切换强制刷新缓存时延时会高一些,但偶尔高的这接近 200ms 延时一般感知不明显。
    gwind
        16
    gwind  
       2017-03-28 22:48:31 +08:00
    支持!
    前段时间污染严重,正要思考 golang 实现一下 UDP port 映射,这样就可以支持所有基于 UDP 的协议。不过不同于 TCP , UDP 的断开不好判断。还未完成。
    firefox12
        17
    firefox12  
       2017-04-08 15:06:44 +08:00 via iPhone
    用 dnspod 可以获得国外域名正确 ip ?
    KCheshireCat
        18
    KCheshireCat  
    OP
       2017-04-09 10:15:47 +08:00
    @firefox12 #17
    这个不是为了获得国外的干净解析,而是在你有办法获得干净解析的情况下,帮助你获得本地 CDN 优化。

    关于 dnspod 本身解析的问题,看 johnjiang85 的回复就行。
    firefox12
        19
    firefox12  
       2017-04-09 17:21:44 +08:00 via iPhone
    如果不能解析 google 这样的域名,那这东西的作用在那里?帮助我们获得 dnspod 对域名的智能解析?和我直接用 dnspod 有什么区别?我们使用 dnspod 存在被劫持的现象?
    KCheshireCat
        20
    KCheshireCat  
    OP
       2017-04-10 20:32:18 +08:00
    @firefox12 #19

    至少我这里所有的标准端口 DNS 都存在劫持现象,
    而且,移动还有流量穿透,就算请求没有被劫持,很有可能 DNS 看到你的请求时,因为穿透的关系,源 IP 变成了电信,联通,而不是本来的移动 IP 。甚至有可能 IP 的地区都不对。
    DNS 想给你正确的优化也做不到啊。
    bclerdx
        21
    bclerdx  
       2017-05-20 07:37:09 +08:00 via Android
    具体怎么使用啊,看不懂!
    gdtv
        22
    gdtv  
       2017-08-05 14:04:59 +08:00
    具体怎么使用啊,看不懂!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3261 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.