从设置文件来看,我们界说了两个 server(尽量有 4 个区块),别离监听在 5300 和 53 端口。其逻辑图可如下所示:

每个进入到某个 server 的哀求将凭证 plugin.cfg 界说次序执行其已经加载的插件。
从上图,我们必要留意以下几点:
尽量在 .:53 设置了 health 插件,可是它并为在上面的逻辑图中呈现,缘故起因是:该插件并未参加哀求相干的逻辑(即并没有在插件链上),只是修改了 server 设置。更一样平常地,我们可以将插件分为两种:
Normal 插件:参加哀求相干的逻辑,且插入到插件链中;
其他插件:不参加哀求相干的逻辑,也不呈此刻插件链中,只是用于修改 server 的设置,如 health,tls 等插件;
4. 在 MacOS 上陈设 CoreDNS
既然 CoreDNS 云云优越,我用它来抵制巨大的防火长城岂不美哉?研究了一圈,发明技能上照旧可行的,独一的一个弱点是不支持行使署理,不外你可以通过 proxychians-ng 或 proxifier 来逼迫行使署理。下面开始折腾。
安装
CoreDNS 是 golang 写的,以是只必要下载对应操纵体系的二进制文件,处处拷贝,就可以运行了。
下面完好以 MacOS 为例作讲授。
- $ cd ~/Downloads
- $ wget https://github.com/coredns/coredns/releases/download/v1.4.0/coredns_1.4.0_darwin_amd64.tgz
- $ tar zxf coredns_1.4.0_darwin_amd64.tgz
- $ mv ./coredns /usr/local/bin/
这里增补一句,CoreDNS 的二进制版本已经安装了全部的插件(plugins),不必要你本身编译。保举下载二进制版本。
设置
要深入相识 CoreDNS,请查察其文档,及 plugins 的先容。下面是我的设置文件:
- $ cat <<EOF > /usr/local/etc/Corefile
- . {
- hosts {
- fallthrough
- }
-
- forward . tls://8.8.8.8 tls://8.8.4.4 {
- tls_servername dns.google
- force_tcp
- max_fails 3
- expire 10s
- health_check 5s
- policy sequential
- except www.baidu.com
- }
-
- proxy . 117.50.11.11 117.50.22.22 {
- policy round_robin
- }
-
- cache 120
- reload 6s
- log . "{local}:{port} - {>id} '{type} {class} {name} {proto} {size} {>do} {>bufsize}' {rcode} {>rflags} {rsize} {duration}"
- errors
- }
- EOF
- hosts : hosts 是 CoreDNS 的一个 plugin,这一节的意思是加载 /etc/hosts 文件内里的理会信息。hosts 在最前面,则假如一个域名在 hosts 文件中存在,则优先行使这个信息返回;
- fallthrough : 假如 hosts 中找不到,则进入下一个 plugin 继承。穷乏这一个指令,后头的 plugins 设置就有时义了;
- forward :这是其它一个 plugin。. 代表全部域名,后头的 IP 代表上游 DNS 处事器的列表。凭证什么次序溯源,由下面的 policy 指令抉择;
- tls://8.8.8.8 : 这里暗示行使 DNS-over-TLS 协议会见 8.8.8.8。同时还必要通过 tls_servername 指定 DNS 名称。
- force_tcp : 逼迫行使 TCP 协议溯源。这要求上游 DNS 必需支持 TCP 协议;
- expect :指定哪些域名不凭证本 plugin 设置溯源。这里首要用来解除海内的域名,然后通过下面的 proxy 转到海内的 DNS 举办理会。这里被解除的域名只填了一个 www.baidu.com,后头我们再通过剧本填上全部的海内域名;
- proxy : 理会 forward 中被解除的域名。. 代表全部域名,后头的 IP 代表上游 DNS 处事器的列表,这里我选择的是 onedns。凭证什么次序溯源,由下面的 policy 指令抉择;
- cache : 溯源获得的功效,缓存指按时刻。相同 TTL 的观念;
- reload : 多久扫描设置文件一次。若有改观,自动加载;
- log : 打印/存储会见日记。日记名目参考:https://coredns.io/plugins/log/;
- errors : 打印/存储错误日记;
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|