让 dnsmasq 支持 chnroute 策略

2018-08-22 21:37:57 +08:00
 muziling
https://github.com/muziling/dnsmasq-chnroute

配置举例:
no-resolv
all-servers
server=114.114.114.114,0
server=8.8.8.8,1
chnroute-file=/root/chnroute.txt

让 dnsmasq 发送 DNS 请求到所有 dns,dns ip 后面逗号 0 表示被污染不可信,1 表示干净的。
如果不可信的 DNS 解析到 IP 为在 chnroute.txt 里,则接受,否则抛弃
如果可信的 DNS 解析到 IP 为在 chnroute.txt 里,则抛弃,否则接受

这样可以保证访问国内网站不会跑到国外去。

补充一下:补丁是基于 2.79 版本
7391 次点击
所在节点    分享创造
20 条回复
weyou
2018-08-22 21:46:40 +08:00
为什么不用 ChinaDNS ?
TheKiller
2018-08-22 21:57:38 +08:00
muziling
2018-08-23 09:15:14 +08:00
@weyou ChinaDNS 不稳定,当时有人在 issue 还是论坛里发过贴,就是进程在,但 chinadns 没响应, 我自己也碰到过问题。


@TheKiller 印象几年前试过,实在是不会配置,不知道配置方法有没有简单点了。 我个人还是喜欢简单点,就行,一个 DNS 方案,两个程序就搞定,通过 s-s tunnel 转发 8.8.8.8,然后 dnsmasq 指定下就好了, 不需要 gfwlist。
gfwlist 偶尔总是会碰上个别域名被墙,但不在列表里。比如 VPS 在枫叶国, 浏览器默认打开的是 google.ca ,这个地址就不在列表里。
missdeer
2018-08-23 09:15:17 +08:00
这策略有问题吧,好像现在有的污染 IP 是国内 IP
EricInBj
2018-08-23 09:21:35 +08:00
@muziling 访问一下 https://google.com/ncr 后面加个 ncr 就不会往 google.ca 跳转了
muziling
2018-08-23 10:07:37 +08:00
@missdeer 暂时没碰到,不知道有哪些?


@EricInBj 有时直接在 chrome 地址栏输入要搜索的内容, 每次要先输入 google.com/ncr 再搜索,总是多了一步。
还有 privoxy.org 之类的也是墙的,不知道是不是我的列表太旧了,这个也不在里面。 不想每次访问不了都去检查列表。
TheKiller
2018-08-23 11:25:41 +08:00
@muziling ChinaDNS 那个问题我没有遇见过 所以不好说

Pcap_DNSProxy 配置上内容相对多点 但大部分用默认配置就行了 用下来效果很不错 占用现在控制的也很好
Actrace
2018-08-23 15:09:59 +08:00
这样这个 dnsmasq 只能在国内运行了。。如果想放在海外机器上运行,正好需要一个相反的规则设定。
muziling
2018-08-23 17:24:19 +08:00
@Actrace 具体是需要什么样的效果,举个例子?
Kobayashi
2018-08-23 17:40:25 +08:00
麻烦稍微详细解释一下,针对不可信 DNS 和可信 DNS 判断的优先级,如果不可信 DNS 返回了国内 IP 且可信 DNS 返回了国外 IP,这种情况怎么处理?

另外,不应该同时对不可信、可信 DNS 返回的结果进行判断,这相当于开启了 ChinaDNS 的双向过滤。而关于双向过滤,ChinaDNS 作者曾经说过,是给特殊网络情况的人用的,不要开启。
Actrace
2018-08-23 18:09:17 +08:00
@muziling
举个粒子 www.baidu.com
设置不信任 DNS 114.114.114.114
信任 DNS 8.8.8.8

那么用 不信任 DNS 解析时,会返回一个北京的 IP (假设),接受。
用信任 DNS 时,返回一个香港的 IP (假设),不接受。

是不是这样的设计?
muziling
2018-08-23 18:15:14 +08:00
@Kobayashi
“如果不可信 DNS 返回了国内 IP 且可信 DNS 返回了国外 IP,这种情况怎么处理?”
==>这种情况就是 dnsmasq 自己的 all-servers 机制了,谁响应快,就用谁的。这样看
的确存在问题,如果可信 DNS 速度比不可信 DNS 快,就会解析到国外 IP,丢失部分网站有国内 IP 的 CDN 加速了。
有机会再完善下。

按 dnsmasq 默认机制,应该不存在双向过滤的情况。
muziling
2018-08-23 20:04:15 +08:00
@Actrace #11
看香港 IP 有没有在 chnroute 里,有的话,不接受,没有的话,接受

dnsmasq 自带的规则 ,哪个 DNS 返回速度快,就用哪个
不知道 --strict-order 这个参数可不可以限制一下。
alex8
2018-08-23 23:47:22 +08:00
没用的 ,dns 改成多少都没用,了解下旁路抢答 路由牵引
muziling
2018-08-23 23:55:16 +08:00
@sunweiqiang8 #14 8.8.8.8 是假设可以无污染抵达,比如通过 VPN 走 8.8.8.8,或者用 ss-tunnel 转发成本地 127.0.0.1#5353 也是可以的。

目前自己在用,效果达到预期,虽然有上面提到的问题,但目前运营商的 DNS 速度肯定比 8.8.8.8 来的快。
alex8
2018-08-24 00:31:53 +08:00
可以在 8.8.8.8 后加 dnsmasq 强制最大缓存时间 效果更好
has
2018-12-31 18:55:59 +08:00
看到你在恩山的介绍,这个 openwrt 上面有有 dnsmasq 和 dnsmasq-full 两个版本。你做的 patch 能够同时兼容吗?
muziling
2019-02-12 09:16:47 +08:00
@has 好久没上 V2EX 了,openwrt 上的两个版本差距只是一些不常用的功能不编译,比如非 full 版本,好像没有 ipset 功能。 修改的代码没有在 if define 段落里,应该都可以用,可以试一下。

自己一直在用,效果非常满意。
has
2019-02-12 12:35:30 +08:00
@muziling #18 我推送一个 PR 吧
muziling
2019-02-15 08:58:40 +08:00
@has 谢谢,合并了

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

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

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

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

© 2021 V2EX