[PVP心得]启用DNS加密 或 DNSSEC(Unbound)并改用TCP DNS来阻止DNS污染

本文为 regou.me 原创,转载请保留此行

本文意在介绍 DNSCrypt pdnsd Unbound

各种链接被重置是很烦人的,比如谷歌上进行搜索时,可能会出现“连接被重置”啥的,这是ISP的DNS污染(什么是DNS污染DNS cache poisoning )造成的即使你修改了DNS服务器,仍然会被污染

OpenDNS公布了DNSCrypt ,即DNS加密,来阻止ISP或Hackers来污染你的DNS

下载客户端
  • 如果你是MacOS,那么已经有现成的客户端了。
  • 如果你是Windows,先去下载“DnsCrypt-Winservicemgr” (版本号可能已经变化)解压并运行就行了,全图形界面,很简单。前提是你得知道你上网用得网卡是哪个
  • 如果你是Linux,我们这里重点说一说Ubuntu下的 DNScrypt的安装与设置:

1.在 https://github.com/opendns/dnscryptproxy/downloads里下载你对应的系统版本,比如我用的是是Ubuntu 64位,那么就下载“dnscrypt-proxy_0.9_amd64.deb” (版本号可能已经变化)下载完成后,双击安装
2.打开命令行 输入命令来查看帮助:

dnscrypt-proxy -h

可以看到帮助里有很多参数的设置,这里,我们全部用默认的,除了 -t 参数(即tcp-port=)

sudo dnscrypt-proxy -t443

sudo dnscrypt-proxy -t53

这样就将我们的DNS加密服务启动了(关闭这个终端以关闭),但是这个DNS服务是我们的

本机,所以,我们要将自己的DNS指向我们的本机

设置DNS指向

客户端下载完成后,下面来修改DNS指向LocalHost
Ubuntu 、MacOS的话打开右上角的Network-Manager,编辑链接,然后在IPv4设置里设置

DNS为127.0.0.1就行了。注意设置好了以后,要断开再链接;
Windows是在“控制面板\网络和 Internet\网络连接”里找到所使用的网卡,在里面的

IPv4设置里指定DNS服务器为127.0.0.1
下载类似ForceSSL的强制https的插件(Opera用户推荐“Swiss Knife”插件)。

好了,现在试试Google Plus、Facebook吧!注意如果是那些“本来就不能正常的网站”一定得是https模式哦!

还有一种不加密的方案,就是一个叫

    pdnsd

的软件包,安装很简单

sudo apt-get install pdnsd


然后选择”Manual”
修改配置文件

sudo gedit /etc/pdnsd.conf
global {
    perm_cache=16384;
    cache_dir="/var/cache/pdnsd";
    run_as="pdnsd";
    server_ip = 127.0.0.1;  // Use eth0 here if you want to allow other
                // machines on your network to query pdnsd.
    status_ctl = on;
    paranoid=on;
/* 注意取消掉前面的双斜杠注释符号! 在这里设置查询方法为TCP
设定为 tcp_udp则在TCP查询无效的情况下使用常规的UDP协议查询*/
    query_method=tcp_only;  // pdnsd must be compiled with tcp
                // query support for this to work.
    min_ttl=15m;       // Retain cached entries at least 15 minutes.
    max_ttl=1w;    // One week.
    timeout=10;        // Global timeout option (10 seconds).

}

/* 修改成自己希望使用的DNS服务器地址,原本为根DNS列表 */
server {
    label="Google-Public";
    ip =    8.8.8.8
    ,   8.8.4.4;
    ping_timeout = 300; // Test every half hour.
}

source {
    owner=localhost;
    file="/etc/hosts";
}

rr {
    name=localhost;
    reverse=on;
    a=127.0.0.1;
    owner=localhost;
    soa=localhost,root.localhost,42,86400,900,86400,86400;
}

编辑

sudo gedit /etc/default/pdnsd

以启用pdnsd

# do we start pdnsd ?
START_DAEMON=yes
# auto-mode, overrides /etc/pdsnd.conf if set [see /usr/share/pdnsd/]
AUTO_MODE=
# optional CLI options to pass to pdnsd(8)
START_OPTIONS=

最后启用pdnsd服务即可:

sudo service pdnsd restart

启用完毕后,也是要将本机的DNS改成127.0.0.1

______________________________________________
5月2日跟新
推荐大家用

    Unbound,支持TCP DNS也支持DNSSEC认证

大家自己去Unbound的配置说明页去看看
收留下我的配置,注意:Unbound的配置文件格式要求很高,冒号后面必须得有且只有一个空格

#Append到Server后
prefetch: yes
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
tcp-upstream: yes
#Append到forward-zone后
forward-zone:
      name: "."
      forward-addr: 8.8.4.4
      forward-addr: 8.8.8.8
      forward-addr: 208.67.222.222
      forward-addr: 208.67.220.220
      forward-addr: 2001:470:20::2
      forward-addr: 74.82.42.42
      forward-addr: 2001:4860:4860::8888
#以上这么多条是我收集的可信任的DNS公共服务器,没IPv6的,把ipv6的dns注释掉

forward-zone:
      name: "cn"
      forward-host: 218.2.135.1
      #你们城市的DNS,因为.cn域名就不用认证了此片段可以不使用

li

《[PVP心得]启用DNS加密 或 DNSSEC(Unbound)并改用TCP DNS来阻止DNS污染》有13个想法

  1. 不知道为什么我觉得ubuntu下的中文字体有些变扭 有时候显示的一大一小的。装了UBUNTU但是还是没熟悉啊!!!

    1. 只是网页是这样吧?
      我的正常啊。会不会是你中文语言包没装全?

  2. 您好,我想问该如何让DNScrypt和Unbound同时运行?我看了DNScrypt官方的介绍说DNScrypt和Unbound互不冲突且互为补充的,可是我在我的电脑上就不能同时开启两个服务,是不是还需要额外的配置?Thank you

    1. 这两个服务都企图监听127.0.0.1:53而导致的冲突,两服务不能同时运行。
      可是官网有说互为补充么?我觉得DNSCrypt已经采用了TCP DNS了,而Unbound有TCP DNS 和 DNSSEC DNSCrypt(需要配置),我猜即使要互补可能是TCP 加密的OpenDNS,然后接收的信息用DNSSEC验证……Unbound开启server key后,能代替DNSCrypt,所以没必要都开啊。

      1. André, boa tarde. É tranquilo beber e dirigir por lá? Sabe qual o limite permitido? Estou indo em novembro agora e estarei de carro taum&eacbte;m. Problema é visitar estas cervejarias e não poder beber nada Obrigado, Henrique

  3. 您好,谢谢!我看了应该是DNScrypt和DNSSEC互为补充,因为Unbound支持DNSSEC, 所以我把它理解为了互为补充 🙂 Unbound能支持DNSSEC这个我知道,但是您说Unbound能代替DNScrypt这我倒是不知道,其实DNScrypt已经有很多功能了,只是我觉得还不够,起码它不支持DNS Cache 和DNSSEC, 所以我一直希望能用Unbound或DNSSEC Trigger 来与之互补,您方才说Unbound能代替DNScrypt,那就更方便了,以后我只需开Unbound 就行了,只是我菜鸟一个,不知该如何操作,所以想请您帮帮忙,谢谢啦!顺祝新年快乐!(如若方便的话可加我QQ, 在邮箱里 🙂

    1. Köszönöm szépen, bár a fotót csak kaptam. Viszont csaknem mindig ezt a tésztát használom a mézesekhez, pedig elég sok mézes receptem vaeÃ.œdvözlettnl: Marica

    2. 你說得對,見過有人純粹為反對而反對,對事實卻不感興趣。認識有位當老師的網友,知道學生說六四是支聯會片面之詞後,到圖書館把當年大公文匯明報的microfilm 影印給學生看,他的學生是高中生,看完感到有點不知所措,因為不知道原來是真的,就算那學生覺得當年的人抵死,至少他不能否認,天安門沒有死過人。我想,給人看剪報,是目前較理想的方法。歌曲的確需要新血,我對《自由花》,《中國夢》,台灣的《歷史的傷口》最感動,但我最想有些hip hop 或rock 聽下唱下,先夠熱血。

发表评论

电子邮件地址不会被公开。