撸了一个轮子:支持本地缓存、防劫持的 dns

2017-08-20 02:59:49 +08:00
 Chenyao

基于 Google 的 DNS-Over-HTTPS。本地有缓存策略,用起来挺舒服的

项目地址:https://github.com/Chenyao2333/freedns

node.js 不是很熟悉,所代码我写的比较奔放,欢迎 pr。

(为了践行社会主义核心价值观,不接受过于不和谐等的 pr )

5050 次点击
所在节点    分享创造
19 条回复
Chenyao
2017-08-20 03:23:56 +08:00
比较尴尬的是你需要设置 host,把 dns.google.com 解析到一个没有被墙的 ip。

(其实还有一个循环解析自己的风险,所以加 hosts 应该是必要的)
Chenyao
2017-08-20 03:41:26 +08:00
geelaw
2017-08-20 04:29:02 +08:00
虽然并不用它,不过也粗略看了一下。
虽然并不是很有耐心看 JS,不过还是粗略地看了一下文字。
有一些比较尴尬的英文……比如 hit 的过去分词是 hit 而不是 hitted,还有 README 有一些语法 / 用词问题😳
sofs
2017-08-20 06:48:03 +08:00
看到这样的功能用 node.js 实现,马上没兴趣看了。
williamx
2017-08-20 09:23:51 +08:00
+1
Node.js 再 +1
LZRng
2017-08-20 09:30:01 +08:00
教我怎么用……
firefox12
2017-08-20 10:29:55 +08:00
这不是个鸡蛋问题吗?首先你得找到一个可以翻墙访问的 dns.google.com 的 host,
jimages
2017-08-20 11:21:35 +08:00
dnscrypt 拥有以上所有功能....
ztxgeol
2017-08-20 12:24:55 +08:00
ls 好无情,我来支持一下
mario85
2017-08-20 12:31:27 +08:00
这个好,有特殊要求的表示可能比 dnscrypt/tcpdns 要好用
Chenyao
2017-08-20 12:41:44 +08:00
@geelaw 哈哈谢谢学长,我英语一直很尬的存在……我多注意
Chenyao
2017-08-20 12:44:28 +08:00
@firefox12 现在不用 hosts 了,我给加到 freedns 本身自己的缓存机制里了。直接搞下来就能用
Chenyao
2017-08-20 12:46:39 +08:00
@LZRng 先安装 nodejs v8.0 以上版本。接下来运行 readme 里面的命令就行
firefox12
2017-08-20 13:05:55 +08:00
如果这个 ip 被墙了 怎么办?速度极慢怎么办
Chenyao
2017-08-20 13:11:52 +08:00
@firefox12 额……要是被墙的话,可以可以删掉 cache.txt ,然后把没被墙的加入到系统 host 里面。

不过我猜应该不是被墙,你可以先设置下 EDNS_IP (在 index.js 里面)先关掉 freedns,之后删掉 cache.txt

接下来如果发现某个网站解析比较慢你可以看看下 5353 端口的网页里面,in_quest_google 这一个数字是多大。
firefox12
2017-08-20 15:00:26 +08:00
@Chenyao 关键是如果这个 ip 被墙了 我应该如何找下一个不被墙的 dns google com 这是一个问题。

其次使用 dns google com 的问题主要是太慢 500ms 内很难有反应,这会导致很多应用直接报错,当然你有 cache 会可以解决,但是更多的问题 一般你要用国外 dns 解析的域名 都是已经被和谐的域名。拿到的 ip 也很难直连。
Chenyao
2017-08-20 15:39:21 +08:00
@firefox12 我附到 git 的 ip 教育网延迟是 50ms,应该是香港或者台湾的服务器。如果你 ping 起来比较慢,可以把 cache.txt 删掉。

如果这个 ip 真的被墙了,可以翻墙上 dns[dot]google[dot]com 这个网页,填上你本地的 ip ( edns 用),之后获得一些新的 ip 加入 host。

不用太担心速度问题,cache 虽然简陋,但还是很稳的。
firefox12
2017-08-20 16:24:30 +08:00
@Chenyao 因为我早就做过这个产品了,但是速度很慢,实际体验很差。并且 获得的 dns gooe.com 的 ip 本地都连不通,只能靠 go-hosts 里的 ip 来解决。所以最好的办法还是 dns 加密 发送到墙外 解析 再传回来
Chenyao
2017-08-20 17:43:46 +08:00
@firefox12 你可以试试这个作为 dns:101[dot]6[dot]163[dot]87。

不过我现在 edns_ip 是教育网的,普通网站 cdn 可能会被解析到教育网的,加载可能比较慢(因为 cache 还不支持根据 ends_ip 分类)。

也许是教育网的出墙环境比较好吧....

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

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

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

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

© 2021 V2EX