初入树莓派3----自建无污染DNS
树莓派搭建 overture 无污染DNS
更新
1
2
318.06.26 初始化
19.01.05 重新整理
20.01.05 修正错误,更新配置文件
导语
- ISP 还有无良的第三方,搞的上个网 DNS 被污染的不成样子.
- 单纯无污染 DNS 的意义已经不大,但还是需要一些仪式感🧐.
需求
- 国内/国外分流,国内网站交给国内DNS,国外的交给墙外无污染DNS.
- 对CDN友好,访问百度,我在广州,你DNS分配个青岛的地址要闹那样.
- 带有DNS缓存,加速解析.
- 跨平台(小),出门不能一直带着路由器啊.
方案
国内/国外分流
分流可使用ChinaDNS.
- 无污染DNS
- 墙外DNS,但udp-53端口,基本被劫持.需要特别方式规避.
- 非标准DNS端口 例如 opendns的udp-5353端口 tcp-443端口
- DNS over HTTPS ,支持最好的是google-dns及 Cloudflare-dns,其中google-dns比较麻烦,还需要自行寻找可用的google ip地址.
- DNS over TLS ,与上一个类似.
- DNSCrypt ,支持此项的公共DNS很多,与此被干扰的也比较厉害.
- ss/ssr-vpn-v2ray 等代理解析dns.
一直可用的中科大DNS 北方还好.基本高校 DNS 已不再对外提供服务.
- 墙外DNS,但udp-53端口,基本被劫持.需要特别方式规避.
- 无污染DNS
对CDN友好选择支持EDNS的上游DNS,国内主流都支持了.
带有DNS缓存,这个用的较多的 dnsmasq ,当作下游DNS.
跨平台(大雾),一般都在路由器搞搞.
最终定型
dnsmasq(可选) + overture + 上游加密DNS(可选)
overture DNS分流净化器,go语言编写,解决chinadns不稳定而编写.
- 得益于go的跨平台能力,基本通吃.
- 已经支持DNS缓存
- 支持tcp / udp dot DNS查询
- 比chinadns更加稳定.
实际上如果只需要一个纯净DNS,只使用
overture
就足够了.当需要广告过滤时,添加dnsmasq.overture 的 host文件就够了.overture
可使用 非标准dns端口查询dns,解决上游DNS污染问题.非标准端口被大量干扰或dns查询全程保密,才需要使用DNSCrypt DNS over HTTPS等额外措施.
实施
下载最新releases
配置 PrimaryDNS 选择 AliDNS tcp 查询,打开 EDNS 这样有不错的效果.
AlternativeDNS 选择了 Cloudflare 的 Dot .
解压 以win-64为例,打开配置文件,写入以下内容.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49{
"BindAddress": ":53",
"DebugHTTPAddress": "127.0.0.1:5555",
"PrimaryDNS": [
{
"Name": "AliDNS",
"Address": "223.5.5.5:53",
"Protocol": "tcp",
"SOCKS5Address": "",
"Timeout": 2,
"EDNSClientSubnet": {
"Policy": "auto",
"ExternalIP": "",
"NoCookie": true
}
}
],
"AlternativeDNS": [
{
"Name": "CloudflareDNS",
"Address": "one.one.one.one:[email protected]",
"Protocol": "tcp-tls",
"SOCKS5Address": "",
"Timeout": 6,
"EDNSClientSubnet": {
"Policy": "disable",
"ExternalIP": "",
"NoCookie": true
}
}
],
"OnlyPrimaryDNS": false,
"IPv6UseAlternativeDNS": false,
"WhenPrimaryDNSAnswerNoneUse": "PrimaryDNS",
"IPNetworkFile": {
"Primary": "./china_ip_list.txt",
"Alternative": "./ip_network_alternative_sample"
},
"DomainFile": {
"Primary": "./china_list.txt",
"Alternative": "./gfw_list.txt",
"Matcher": "regex-list"
},
"HostsFile": "./hosts_sample",
"MinimumTTL": 0,
"DomainTTLFile" : "./domain_ttl_sample",
"CacheSize" : 2000,
"RejectQType": [255]
}IPNetworkFile
只需要配置 Primary 即可.使用 国内 ip 列表.这里是 IPIP 维护的 chnrouter. 已足够使用.DomainFile 1.区分国内外域名
Alternative需要配置为 gfwlist,这里把 gfwlist 和 Koolshare 综合一下.1
2
3
4curl https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt | base64 -d | sort -u | sed '/^$\|@@/d'| sed 's#!.\+##; s#|##g; s#@##g; s#http:\/\/##; s#https:\/\/##;' | sed '/\*/d; /apple\.com/d; /sina\.cn/d; /sina\.com\.cn/d; /baidu\.com/d; /qq\.com/d' | sed '/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/d' | grep '^[0-9a-zA-Z\.-]\+$' | grep '\.' | sed 's#^\.\+##' | sort -u > gfwlist.txt
curl https://raw.githubusercontent.com/hq450/fancyss/master/rules/gfwlist.conf | sed 's/ipset=\/\.//g; s/\/gfwlist//g; /^server/d' > koolshare.txt
cat gfwlist.txt koolshare.txt | sort -u > gfw_list.txt
rm gfwlist.txt koolshare.txtwindows 下可以使用 nssm 包装成windows的server,做到开机启动.
linux 下,各种脚本为所欲为.
相关文章