名词解释:
DNS污染:是指当你访问某些网站的时候,域名经由 DNS 服务器解析后指向了不正确的 IP 地址, 特别是在天朝,访问被墙网站极有可能获 中间人攻击:是指当你在访问某个服务器或者站点的时候,你们中间有个第三者在监视你们的通信。DNS 污染可能会导致中间人攻击,比如你 DNSSEC:域名系统安全扩展(Domain Name System Security Extensions)是Internet工程任务组 (IETF)的对确保由域名系统 (DNS)中 浏览器经常无法解析某些网站? 或者打开某些网站时得到的却是无良互联网提供商的广告页面?如果有这些情况发生,可能表明你遭受了DNS污染。DNS污染(也叫DNS投毒)在天朝常有发生,特别是当你访问那些被墙网站的时候。为了解决这些问题,仅仅使用一个安全的 DNS 服务器(比如openDNS)是不够的,在你解析被墙的网站的域名的时候,某些机构还是能轻易的检测到。这时候就需要给所有的 DNS 请求加密连接。 利用DNSCrypt-proxy不但可以加密 DNS 查询请求,还可以使用tcp或udp查询,也可以使用不同于53的非标准端口,因为在某些场合isp可能会强制劫持 53 端口的dns查询。 Unbound是一款验证(validating)、递归(recursive)及缓存(caching)DNS 解析器(resolver)。以 BSD 许可证发布,轻量级+模块化设计,充分考虑安全,拥有出色的性能。Unbound配合DNSCrypt使用,可对dns数据的完整性进行校验,并利用缓存加速dns的查询速度。 dnscrypt-wrapper 是从 dnscrypt-proxy 修改而来,给任意 dns server 在服务端增加 dnscrypt 加密支持。适合想使用 dnscrypt 但想自架 dns 服务器的情形。 本文介绍如何在服务器端配置dnscrypt-wrapper与unbound,在客户端配置dnscrypt-proxy。值得注意的是dnscrypt-wrapper只能运行在Linux下,但dnscrypt-proxy在windowns和Linux上皆可使用。 关于DNSCrypt与DNSSEC是否冲突的官方说明: DNSCrypt and DNSSEC are complementary. DNSSEC does a number of things. First, it provides authentication. (Is the DNSrecord I’m getting a response for coming from the owner of the domain name I’m asking about or has it been tampered with?) Second, DNSSEC provides a chain of trust to help establish confidence that the answers you’re getting are verifiable. Butunfortunately, DNSSEC doesn’t actually provide encryption for DNS records, even those signed by DNSSEC. Even if everyonein the world used DNSSEC, the need to encrypt all DNS traffic would not go away. Moreover, DNSSEC today represents a near-zero percentage of overall domain names and an increasingly smaller percentage of DNS records each day as the Internetgrows. That said, DNSSEC and DNSCrypt can work perfectly together. They aren’t conflicting in any way. Think of DNSCrypt as a wrapper around all DNS traffic and DNSSEC as a way of signing and providing validation for a subset of those records. There are benefits to DNSSEC that DNSCrypt isn’t trying to address. In fact, we hope DNSSEC adoption grows so that people can have more confidence in the entire DNS infrastructure, not just the link between our customers and OpenDNS. 简单来说,DNSCrypt与DNSSEC配合可互补不足,DNSCrypt负责数据加密,DNSSEC负责数据校验。 ==================================================== 一、服务器端安装支持库文件: yum groupinstall "Development tools" -y yum install openssl-devel -y 1. 删除旧的libevent包: yum erase libevent* 2.下载新版本libevent( http://libevent.org/ ): wget https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz tar -xzv -f libevent-2.0.22-stable.tar.gz 3.编译和安装到: /usr/lib cd libevent-2.0.22-stable ./configure --prefix=/usr --disable-static && make make install [注:1.当需要卸载时,进入程序文件夹(cd libevent-2.0.22-stable)运行make uninstall即可。 2.64位系统需要链接动态库: cd ~ ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 ] 4.下载新版本libsodium(https://download.libsodium.org/libsodium/releases/),注意要加参数–no-check-certificate 才可顺利从https上下载。 cd ~ wget --no-check-certificate https://download.libsodium.org/libsodium/releases/libsodium-0.7.1.tar.gz 5.解压并安装: tar -xzv -f libsodium-0.7.1.tar.gz cd libsodium-0.7.1 ./configure && make make install 6.写入动态库: echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf ldconfig [注:ldconfig 命令的用途,主要是在默认目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。] 7.安装expat库: yum install expat expat-devel -y ===================================== 二、服务器端安装与配置unbound 1.下载unbound并安装: cd ~ wget http://www.unbound.net/downloads/unbound-latest.tar.gz tar -zxv -f unbound-latest.tar.gz cd unbound-1.5.4/ [注意unbound-1.5.4需换成你解压后生成的文件夹] ./configure --prefix=/usr/local && make make install 2.写入动态库: echo /usr/local/lib > /etc/ld.so.conf.d/unbound.conf ldconfig 3.新建一个系统用户以运行unbound: adduser -r unbound chown unbound:root /usr/local/etc/unbound [关于chown命令 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥 chown命令格式为: chown [-cfhvR] [--help] [--version] user[:group] file... 参数格式 : 4.用unbound-control命令生成证书文件: cd /usr/local/sbin unbound-control-setup 5.建立dnssec信任锚(root trust anchor),生成root.ley: cd /usr/local/sbin/ unbound-anchor [备注:你可以指定生成root.key的位置,如 unbound-anchor -a “/usr/root.key”,不指定位置则默认生成在/usr/local/etc/unbound/下] 6.配置unbound: cd /usr/local/etc/unbound vim /usr/local/etc/unbound/unbound.conf 查找替换以下内容并去掉前面的 # 注释记号(以下是unbound.conf内容): [注:vim查找命令 / ,编辑命令 i,保存退出命令 :wq] verbosity: 1 [纪录扩展统计信息(可选)] extended-statistics: yes num-threads: 2 [设定线程数:双核CPU可设为2,四核可设为4] interface: 127.0.0.1@53 [接口地址,从设定的地址接收其他客户端的请求。这里指定用本机53端口用于应答dnsscript-wrapper的请求] port: 53 [默认应答端口,dig命令的默认端口] [打开端口数(数量越多占用内存越大,但可接受并发查询越多)] outgoing-range:256 [指定发送查询的端口范围(默认1024之后)] outgoing-port-permit:63001-65500 [指定不发送查询的端口范围。在本例中65001-65500若其中有一端口被其他程序占用,如65002,则可在这里指定不从65002发送查询。(可选)] outgoing-port-avoid:65002 [设置缓存细节] msg-cache-size: 50m msg-cache-slabs: 4 rrset-cache-size: 100m rrset-cache-slabs: 4 cache-min-ttl: 1800 cache-max-ttl: 86400 do-ip4: yes [启用tcp查询,启用会增加可靠性,但会降低效率(可选)] tcp-upstream: yes [以后台运行] do-daemonize: yes [记录日志,不需要可忽略(可选)] logfile: “unbound.log” [日志在 /usr/local/etc/unbound/ 下] log-queries: yes [pid文件位置] pidfile: "/tmp/unbound.pid" [允许本机查询] do-not-query-localhost: no [务必改为no,否则无法使用局域网服务器作为上游DNS Server] prefetch: yes [打开DNSSEC验证] module-config: “validator iterator” [设定第5步生成root.key的路径] auto-trust-anchor-file: “/usr/local/etc/unbound/root.key” [启用远程控制(可选)] control-enable: yes [设定上游 DNS 服务器] forward-zone: name:"." [代表所有域名] forward-addr:8.8.4.4 修改后:wq保存退出。 7.使用unbound-checkconf 检查配置文件是否有错误: /usr/local/sbin/unbound-checkconf /usr/local/etc/unbound/unbound.conf [注:若无错误则显示 unbound-checkconf: no errors in /usr/local/etc/unbound/unbound.conf] 8.运行unbound: /usr/local/sbin/unbound -c /usr/local/etc/unbound/unbound.conf -v 9.更改本机DNS地址: vim /etc/resolv.conf 编辑文件内容为: nameserver 127.0.0.1 完成后:wq退出。由于更改DNS地址后重启机器将会丢失原设置,所以要使用chattr命令防止系统修改resolv.conf文件。在root模式下输入 chattr +i /etc/resolv.conf 将防止其他程序改写文件。输入chattr -i /etc/resolv.conf 将恢复可改写的状态。 10.测试unbound是否正常工作: (1)安装dig工具 yum install bind-utils -y (2)测试DNSSEC状况 dig com. SOA +dnssec -p 53 看到flags: qr rd ra ad 有ad字段则说明DNSSEC已成功启用。注意:因为在unbound接口地址里设定了以53端口作监听,所以这里加上 -p 5353。 或者 dig +noall +comments dnssec-failed.org -p 53 看到 status: SERVFAIL 则DNSSEC已成功启用。再随便找个网站测试下,返回解析地址则说明unbound工作正常,如 dig twitter.com -p 53 ======================================== 三、dnscrypt的服务端 dnscrypt-wrapper 安装与配置 1.下载并安装: cd ~ git clone --recursive git://github.com/Cofyc/dnscrypt-wrapper.git cd dnscrypt-wrapper make configure ./configure make && make install 2.生成provider-key,存放在dnskey目录下 cd ~ mkdir dnskey cd dnskey dnscrypt-wrapper --gen-provider-keypair [生成的 public.key 就是Provider public key。dnscrypt客户端dnscrypt-proxy需要用这个provider-key,记下显示的指纹码,形式如 5A23:45EB:7AE0:1BE4:A5D4:C12D:E1F1:A666:46BC:BDC4:A7AB:8634:26A6:BC0E:BFD1:8B5F,请注意保存。] 3.生成crypt key: dnscrypt-wrapper --gen-crypt-keypair 4.生成预签名的证书 dnscrypt-wrapper --gen-cert-file --crypt-secretkey-file=crypt_secret.key 5.运行 dnscrypt-wrapper: /root/dnscrypt-wrapper/dnscrypt-wrapper -d \ [注意--resolver-address=127.0.0.1:53 设定用于查询的dns地址及端口; --listen-address=0.0.0.0:5354 设定监听客户端请求的端口,在这个例子中为5354。provider-name格式,须为.dnscrypt-cert.,比如 2.dnscrypt-cert.rox.com 。 6.加入防火墙规则及保存: iptables -I INPUT -p tcp --dport 5354 -j ACCEPT iptables -I INPUT -p udp --dport 5354 -j ACCEPT [本例中监听端口号为5354] service iptables save 完成后可输入 iptables -L -n 查看规则。 netstat -npl 查看端口状态 7.把unbound 与 dnscrypt-wrapper 加入开机启动队列 编辑 rc.local,使用以下命令: 在文件后添加以下内容: #unbound #dnscrypt-wrapper 测试(可选):在本机安装dnscrypt 客户端来验证 dnscrypt-wrapper 是否工作正常 cd ~ 这里设定本地5454端口作为查询端口 dig twitter.dom -p 5454 =================================================================== 四、windous客户端安装dnscrypt-proxy: 1.从http://download.dnscrypt.org/dnscrypt-proxy/下载最新的dnscrypt-proxy 2.修改下载包dnscrypt-proxy-win32\bin下的dnscrypt-resolvers.csv文件,在最下面增加一行: name字段:rox ,DNSSEC validation字段:yes ,Resolver address字段(服务端的ip及监听端口):xxx.xxx.xxx.xxx:xxxx ,Provider name字段:2.dnscrypt-cert.rox.com ,Provider public key字段:输入之前配置dnscrypt-wrapper时记下的指纹码。 若不记得可在服务器重新查看crypt_public.key: 登陆服务器端,输入 cd dnscrypt-wrapper vim -b public.key 在编辑界面使用 :%!xxd 命令查看 [启动 Vim 时加上 ”-b” 参数,这个参数设定了 'binary' 选项,其作用是排除所有的意外副作用,例如'textwidth' 设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。%指定当前所编辑的文件 ,外部程序 xxd 把这个文件转换成十六进制的文本形式。当编辑完后,用:%!xxd -r 还原成二进制文件。] 这里不需要对二进制文件进行修改,所以 :%!xxd -r 还原成原来的二进制文件后 :q! 退出。 3.在windows命令行进入dnscrypt-proxy目录,输入 dnscrypt-proxy.exe -R "rox" -L "E:\dnscrypt-proxy\dnscrypt-resolvers.csv" --test=0 其中 E:\dnscrypt-proxy\dnscrypt-resolvers.csv 填写该文件所在实际路径。显示如下信息的话表明设置正常: [INFO] + DNS Security Extensions are supported 4.安装dnscrypt服务: dnscrypt-proxy.exe -R "rox" -L "E:\dnscrypt-proxy\dnscrypt-resolvers.csv" --install 同样, E:\dnscrypt-proxy\dnscrypt-resolvers.csv 填写该文件所在实际路径。 5.在网络连接属性更改本机dns地址为: 127.0.0.1 6.如需使用TCP链接,可以打开注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dnscrypt-proxy\Parameters 新建名为TCPOnly的DWORD项,数值为1。然后重启dnscrypt-proxy服务即可。注意启用tcp连接会降低dns查询速度。 7.完成后在浏览器输入 http://dnssectest.sidnlabs.nl 或 http://dnssec.vs.uni-due.de/ 测试是否被DNSSEC保护: 点击“Do the test”按钮后,如果出现一个绿色对号就说明你已经在DNSSEC的保护之下。 ======================================= 使用dnscrypt后某些软件可能会出现兼容性问题,例如steam客户端的网页不能显示,这时候将其ip单独加入host文件 (C:\WINDOWS\system32\drivers\etc\) 即可: # Section Start: steam
得的是不正确的地址。这种情况可能是天朝主干网上的 GFW 返回的结果, 也可能是无良的 ISP 在最后一公里做的手脚。
的浏览器发送一个DNS请求后得到的却是一个虚假的ip, 这个地址能将你的所有请求转发给那个正确的IP,而它能监视你们之间的所有通信。
提供的关于互联网协议 (IP)网络使用特定类型的信息规格套件。它是对DNS提供给DNS客户端(解析器)的DNS数据来源进行认证,并验证不
存在性和校验数据完整性验证,但不提供或机密性和可用性。
有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以
改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。
user : 新的档案拥有者的使用者
IDgroup : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
--help : 显示辅助说明 ]
do-ip6: yes
do-udp: yes
do-tcp: yes
forward-addr:8.8.8.8
forward-addr:208.67.222.222
forward-addr:208.67.220.220
--resolver-address=127.0.0.1:53 --listen-address=0.0.0.0:5354 \
--provider-name=2.dnscrypt-cert.rox.com \
--crypt-secretkey-file=/root/dnskey/crypt_secret.key \
--provider-cert-file=/root/dnskey/dnscrypt.cert -V \
--pidfile=/tmp/dnscrypt-w.pid
\ 后面回车不会马上执行本条命令而是换行继续。]
vim /etc/rc.d/rc.local
/usr/local/sbin/unbound -c /usr/local/etc/unbound/unbound.conf -v
/root/dnscrypt-wrapper/dnscrypt-wrapper -d \
--resolver-address=127.0.0.1:53 --listen-address=0.0.0.0:5354 \
--provider-name=2.dnscrypt-cert.rox.com \
--crypt-secretkey-file=/root/dnskey/crypt_secret.key \
--provider-cert-file=/root/dnskey/dnscrypt.cert -V \
--pidfile=/tmp/dnscrypt-w.pid
wget --no-check-certificate https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.6.0.tar.gz
tar -xzv -f dnscrypt-proxy-1.6.0.tar.gz
cd dnscrypt-proxy-1.6.0
./configure && make
make install
dnscrypt-proxy --local-address=127.0.0.1:5454 --resolver-address=127.0.0.1:5354 --provider-name=2.dnscrypt-cert.rox.com --provider-key=5A23:45EB:7AE0:1BE4:A5D4:C12D:E1F1:A666:46BC:BDC4:A7AB:8634:26A6:BC0E:BFD1:8B5F --daemonize
[INFO] - [rox] does not support Namecoin domains
[INFO] + Provider supposedly doesn't keep logs
[NOTICE] Starting dnscrypt-proxy 1.6.0
[INFO] Generating a new session key pair
[INFO] Done
[INFO] Server certificate #808464433 received
[INFO] This certificate looks valid
如果要卸载服务,执行 dnscrypt-proxy --uninstall 命令即可。
23.14.93.71 cdn.steampowered.com
212.30.134.161 cdn.steampowered.com
96.17.72.101 cdn.steampowered.com
61.111.58.5 cdn.steampowered.com
125.56.214.95 cdn.steampowered.com
173.223.227.56 cdn.steampowered.com
210.61.248.232 cdn.steampowered.com
96.17.180.150 cdn.steampowered.com
87.251.132.231 cdn.steampowered.com
23.14.93.71 cdn.steamcommunity.com
212.30.134.161 cdn.steamcommunity.com
80.239.171.63 cdn.steamcommunity.com
96.17.72.101 cdn.steamcommunity.com
210.61.248.232 cdn.steamcommunity.com
96.17.180.150 cdn.steamcommunity.com
72.246.190.57 cdn.steamcommunity.com
87.251.132.238 cdn.steamcommunity.com
202.148.200.137 cdn.steamcommunity.com
212.30.134.169 cdn.steamcommunity.com
96.17.72.101 cdn.store.steampowered.com
61.111.58.5 cdn.store.steampowered.com
173.223.227.56 cdn.store.steampowered.com
23.192.162.133 cdn.store.steampowered.com
210.61.248.232 cdn.store.steampowered.com
96.17.180.150 cdn.store.steampowered.com
72.246.190.57 cdn.store.steampowered.com
173.223.227.17 cdn.store.steampowered.com
173.197.192.147 cdn.store.steampowered.com
61.111.58.15 cdn.store.steampowered.com
205.185.216.42 cdn2.store.steampowered.com
192.26.92.30 cdn2.store.steampowered.com
23.74.25.65 cdn2.store.steampowered.com
2.16.130.64 cdn2.store.steampowered.com
192.33.14.30 cdn2.store.steampowered.com
23.14.93.71 media.steampowered.com
212.30.134.161 media.steampowered.com
96.17.72.101 media.steampowered.com
125.56.214.95 media.steampowered.com
173.223.227.56 media.steampowered.com
96.17.180.150 media.steampowered.com
87.251.132.238 media.steampowered.com
87.251.132.231 media.steampowered.com
202.148.200.137 media.steampowered.com
173.223.227.17 media.steampowered.com
# Section End: steam
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://zblog.hqyman.cn/post/10733.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~