加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

使用 CoreDNS 来应对 DNS 污染

发布时间:2019-04-06 10:28:57 所属栏目:业界 来源:yangcs
导读:CoreDNS 是新晋的 CNCF 孵化项目,前几天已经从 CNCF 正式结业,并正式成为 Kubernetes 的 DNS 处事器。CoreDNS 的方针是成为 cloud-native 情形下的 DNS 处事器和处事发明办理方案,即: Our goal is to make CoreDNS the cloud-native DNS server and se

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

行使 CoreDNS 来应对 DNS 污染

每个进入到某个 server 的哀求将凭证 plugin.cfg 界说次序执行其已经加载的插件。

从上图,我们必要留意以下几点:

尽量在 .:53 设置了 health 插件,可是它并为在上面的逻辑图中呈现,缘故起因是:该插件并未参加哀求相干的逻辑(即并没有在插件链上),只是修改了 server 设置。更一样平常地,我们可以将插件分为两种:

Normal 插件:参加哀求相干的逻辑,且插入到插件链中;

其他插件:不参加哀求相干的逻辑,也不呈此刻插件链中,只是用于修改 server 的设置,如 health,tls 等插件;

4. 在 MacOS 上陈设 CoreDNS

既然 CoreDNS 云云优越,我用它来抵制巨大的防火长城岂不美哉?研究了一圈,发明技能上照旧可行的,独一的一个弱点是不支持行使署理,不外你可以通过 proxychians-ng 或 proxifier 来逼迫行使署理。下面开始折腾。

安装

CoreDNS 是 golang 写的,以是只必要下载对应操纵体系的二进制文件,处处拷贝,就可以运行了。

下面完好以 MacOS 为例作讲授。

  1. $ cd ~/Downloads 
  2. $ wget https://github.com/coredns/coredns/releases/download/v1.4.0/coredns_1.4.0_darwin_amd64.tgz 
  3. $ tar zxf coredns_1.4.0_darwin_amd64.tgz 
  4. $ mv ./coredns /usr/local/bin/ 

这里增补一句,CoreDNS 的二进制版本已经安装了全部的插件(plugins),不必要你本身编译。保举下载二进制版本。

设置

要深入相识 CoreDNS,请查察其文档,及 plugins 的先容。下面是我的设置文件:

  1. $ cat <<EOF > /usr/local/etc/Corefile 
  2. . { 
  3.   hosts { 
  4.     fallthrough 
  5.   } 
  6.  
  7.   forward . tls://8.8.8.8 tls://8.8.4.4 { 
  8.     tls_servername dns.google 
  9.     force_tcp 
  10.     max_fails 3 
  11.     expire 10s 
  12.     health_check 5s 
  13.     policy sequential 
  14.     except www.baidu.com 
  15.   } 
  16.  
  17.   proxy . 117.50.11.11 117.50.22.22 { 
  18.     policy round_robin 
  19.   } 
  20.  
  21.   cache 120 
  22.   reload 6s 
  23.   log . "{local}:{port} - {>id} '{type} {class} {name} {proto} {size} {>do} {>bufsize}' {rcode} {>rflags} {rsize} {duration}" 
  24.   errors 
  25. 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 : 打印/存储错误日记;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读