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

2017-03-25 00:41:55 +08:00
 KCheshireCat

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

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

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

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

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

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

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

至少我这里所有的标准端口 DNS 都存在劫持现象,
而且,移动还有流量穿透,就算请求没有被劫持,很有可能 DNS 看到你的请求时,因为穿透的关系,源 IP 变成了电信,联通,而不是本来的移动 IP 。甚至有可能 IP 的地区都不对。
DNS 想给你正确的优化也做不到啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/350162

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX