内容简介:新增有变动
19.01.30 初始化
导语
- 升级overture时候,才发现配置文件有更改,且支持了dot,索性扔进 docker 里面,方便维护.
需求
- 国内/国外分流,国内网站交给国内DNS,国外的交给墙外无污染DNS.
- 对CDN友好,访问百度,我在广州,你DNS分配个青岛的地址要闹那样.
- 带有DNS缓存,加速解析.
- 跨平台(小),出门不能一直带着路由器啊.
新增
- docker运行,自动更新分流list文件.
方案
- 国内/国外分流
-
分流可使用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,但udp-53端口,基本被劫持.需要特别方式规避.
-
无污染DNS
-
对CDN友好选择支持EDNS的上游DNS,国内主流都支持了,除了114.
- 带有DNS缓存,这个用的较多的 dnsmasq ,当作下游DNS.
- 跨平台(大雾),一般都在路由器搞搞.
最终定型
有变动
-
dnsmasq(可选)+ overture +上游加密DNS(可选) -
overture DNS分流净化器,go语言编写,解决chinadns不稳定而编写.
- 得益于 go 的跨平台能力,基本通吃.
- 已经支持DNS缓存
- 支持tcp / udp DNS查询
- 比chinadns更加稳定.
-
实际上如果只需要一个纯净DNS,只使用
overture
就足够了. - 当需要广告过滤时,添加dnsmasq.
-
overture
可使用 非标准dns端口查询dns,解决上游DNS污染问题.非标准端口被大量干扰或dns查询全程保密,才需要使用DNSCrypt DNS over HTTPS等额外措施. - overture 已经支持 dns over tls,无需上游加密DNS
实施
-
最新的 releases
,这里以
v1.5-rc3
为例.
配置文件
-
配置文件
{ "BindAddress": ":53", "HTTPAddress": ":5555", "PrimaryDNS": [ { "Name": "DNSPod", "Address": "119.29.29.29:53", "Protocol": "udp", "SOCKS5Address": "", "Timeout": 6, "EDNSClientSubnet": { "Policy": "disable", "ExternalIP": "", "NoCookie": true } } ], "AlternativeDNS": [ { "Name": "OpenDNS", "Address": "208.67.222.222:443", "Protocol": "tcp", "SOCKS5Address": "", "Timeout": 6, "EDNSClientSubnet": { "Policy": "disable", "ExternalIP": "", "NoCookie": true } } ], "OnlyPrimaryDNS": false, "IPv6UseAlternativeDNS": false, "IPNetworkFile": { "Primary": "./ip_network_primary_sample", "Alternative": "./ip_network_alternative_sample" }, "DomainFile": { "Primary": "./domain_primary_sample", "Alternative": "./domain_alternative_sample" }, "HostsFile": "./hosts_sample", "MinimumTTL": 0, "CacheSize" : 0, "RejectQtype": [255] }
-
主要变动
-
XXXXDNS下的 Protocol ,字段除 tcp udp 可选之外,增加了 tcp-tls ,使得无需上游加密DNS,使用 tcp-tls 时,对 Address 字段有要求,
"servername:port@serverAddress"
, 一般可用one.one.one.one:853@1.1.1.1
.或者one.one.one.one:853@1.0.0.1
-
分流文件,细化为了 IPNetworkFile 和 DomainFile.
-
IPNetworkFile
- 大致是当 PrimaryDNS 查询的结果在 Primary 字段对应文件时,立刻使用,忽略 AlternativeDNS 查询结果. 这里可以配置为国内ip的list文件.防止国内服务器解析到国外,配合支持 EDNS 的 PrimaryDNS,基本可以做到cdn的就近解析.
- Alternative字段 可以忽略,作用类似.
-
DomainFile
- 根据域名直接分流到对应的DNS进行解析. Primary 字段可以是常见国内域名,也可忽略. Alternative 使用处理过的 gfwlist ,即可做到被污染域名走 AlternativeDNS .
- IPNetworkFile 需要 chinaiplist , DomainFile 需要 gfwlist . gfwlist 需要处理一下格式.
-
IPNetworkFile
-
Dockerfile
-
至此我们确认了Dockerfile的主要内容.
- 下载并解压最新的 releases ,这里是 overture-linux-amd64.zip ,树莓派3b 需要下载 arm64 版本.
- 下载 chinaiplist gfwlist 处理格式.
- 编辑默认的配置文件, 配置 chinalist gfwlist
- 写入计划任务,自动更新分流文件.
-
其他
- 基础镜像使用 apline:3.8 仅 5M大小.
- apline 使用的是 busybox ,命令与常用的有一些差别.包管理为 apk 命令.
- 计划任务也与常用的略有不同.
-
Dockerfile
FROM alpine:3.8 ENV VERSION v1.5-rc3 WORKDIR /srv RUN set -xe && \ mkdir overture && \ cd /srv/overture && \ apk add --no-cache unzip curl && \ curl -fsSLO --compressed "https://github.com/shawn1m/ overture/releases/download/${VERSION}/ overture-linux-amd64.zip" && \ curl 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/17mon/ china_ip_list/master/china_ip_list.txt > china_ip_list.txt && \ unzip -o "overture-linux-amd64.zip" -d /srv/overture && \ rm -rf "overture-linux-amd64.zip" && \ apk del unzip && \ sed -i 's/ip_network_primary_sample/china_ip_list.txt/ g' config.json && \ sed -i 's/domain_alternative_sample/gfwlist.txt/g' config.json && \ echo '#!/bin/sh' > update.sh && \ echo "curl 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" >> update.sh && \ echo "curl https://raw.githubusercochina_ip_list/master/ china_ip_list.txt >> china_ip_list.txt" >> update.sh && \ chmod u+x update.sh && \ echo '0 2 * * * sh /srv/overture/update.sh'>>/var/spool/cron/crontabs/root CMD crond && cd /srv/overture && ./overture-linux-amd64 -l overture.log
-
开箱即用,整体略混乱….配置文件未独立,不太符合docker的最佳实践.修改配置文件需要拷贝 /src/overture 再挂载回容器.
- 有时间再整理,将配置文件/分流文件独立出来,或者加载到数据卷中. crond 的启动等,全部放入脚本文件.
- 1.5rc3编译的镜像大致10M左右.
以上所述就是小编给大家介绍的《初入树莓派5----docker运行overture》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 树莓派B+运行kali并使用微雪3.5寸LCD电阻屏显示
- [树莓派]树莓派的入门教程
- 「玩转树莓派」树莓派 3B+ 安装 OpenCv
- 「玩转树莓派」树莓派 3B+ 查询本机IP
- 「玩转树莓派」树莓派 3B+ 配置静态IP
- 「玩转树莓派」树莓派 3B+ 配置无线WiFi
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网络、群体与市场
大卫·伊斯利(David Esley)、乔恩·克莱因伯格(Jon Kleinberg) / 李晓明、王卫红、杨韫利 / 清华大学出版社 / 2011-10-1 / CNY 69.00
过去十年来,现代社会中复杂的连通性向公众展现出与日俱增的魅力。这种连通性在许多方面都有体现并发挥着强大的作用,包括互联网的快速成长、全球通信的便捷,以及新闻与信息(及传染病与金融危机)以惊人的速度与强度传播的能力。这种现象涉及网络、动机和人们的聚合行为。网络将人们的行为联系起来,使得每个人的决定可能对他人产生微妙的后果。 本书是本科生的入门教材,同时也适合希望进入相关领域的高层次读者。它从交......一起来看看 《网络、群体与市场》 这本书的介绍吧!