基于 4 个 8 撸了一个 CDN 友好的 DNS

2017-01-24 18:32:41 +08:00
 lbp0200

https://github.com/lbp0200/PRCDNS

  1. 只支持 TCP ,防止二级运营商搞事
  2. CDN 友好, img.alicdn.com 返回大陆地址

拿 opendns 做测试对比

dig @23.106.151.177 +tcp -p 3535 google.com.hk #PRCDNS
dig @208.67.222.222 +tcp -p 443 google.com.hk #opendns

dig @23.106.151.177 +tcp -p 3535 img.alicdn.com #PRCDNS
dig @208.67.222.222 +tcp -p 443 img.alicdn.com #opendns

测试 IP 仅供测试, DDoS 留情

15099 次点击
所在节点    DNS
75 条回复
lbp0200
2017-02-23 23:22:12 +08:00
@HalloCQ yum install polipo
q0000x
2017-02-24 00:25:13 +08:00
lbp0200
2017-02-24 09:34:30 +08:00
@q0000x 我试了一下,一会儿有结果,一会儿没有,估计是 pplive.cn 的权威 DNS 服务器不稳定或者 Google 到它权威 DNS 服务器的网络不稳定。
对于国内的域名偶尔会发现问题,我建议用 114 做备用上游服务器。
HalloCQ
2017-02-24 11:09:25 +08:00
@lbp0200 yum install polipo
HalloCQ
2017-02-24 11:10:18 +08:00
@lbp0200 这个代码在我的 centos 上好像是找不到包,不知道是不是源的问题
HalloCQ
2017-02-24 11:12:38 +08:00
@lbp0200
Loaded plugins: fastestmirror
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
extras/7/x86_64/primary_db | 122 kB 00:00
Loading mirror speeds from cached hostfile
* base: mirror.supremebytes.com
* extras: mirror.supremebytes.com
* updates: mirror.supremebytes.com
No package polipo available.
Error: Nothing to do
q0000x
2017-02-24 14:49:04 +08:00
@lbp0200 应该是 pdnsd 上 edns 那个参数的影响,我把那个 OFF 掉还算正常,不能用 114 做备用,会被抢答掉
q0000x
2017-02-24 14:49:33 +08:00
@lbp0200 除非用 chinadns 来配合
lbp0200
2017-02-24 17:48:18 +08:00
@q0000x
Pdnsd 的配置里面加上个参数, 114 就不会抢答了
global {
par_queries=1; 一定要加,否则会同时查询 114 , 114 会抢答查询结果
}
lbp0200
2017-02-24 18:17:51 +08:00
@q0000x 另,我更新的代码,不能查到正确的结果,直接关闭连接,交给其他 DNS 查询。
HalloCQ
2017-02-24 21:14:45 +08:00
我把 s-s 和 prcdns 部署到同一台服务器上,然后在路由器开启 s-s 和 pdnsd
如果 ss 和 pdnsd 都是用我服务器的 ip 的话就不能用,非要一个不是我服务器 ip 才行
这是怎么回事?
HalloCQ
2017-02-24 21:22:19 +08:00
不对,发现问题了。是开 gfw 模式才这样, ip 模式可以用
q0000x
2017-02-25 00:33:41 +08:00
@lbp0200 也对,忘记了 pdnsd 的那个参数
q0000x
2018-02-26 16:27:13 +08:00
@lbp0200 proxy_client.py 代码要更新了
async def fetch(session, url, proxy=None):
with aiohttp.Timeout(10):

aiohttp.Timeout(10):这个在某些版本比较新的 centos 和 debian 上不被支持,要 import async_timeout 使用 async_timeout.timeout(10):代替

详情参考: https://pypi.python.org/pypi/aiohttp
lbp0200
2018-02-26 18:01:20 +08:00
@q0000x 最近心思不在写代码上,你 fork 或者 push 吧

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

https://yangjunhui.monster/t/336726

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

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

© 2021 V2EX