想要在DNS劫持中获得某些信息,须要有可控的DNS服务器,下面就来搭建本身的DNS服务器,以便添加记录或者记录请求日志,分析数据获取就价值的信息.linux
DNS服务器搭建nginx
考虑到dns服务器性能要求不是很高,开始的方案有三个:windows
1.使用openwrt内建的dnsmasq来对客户端发来的请求作解析和转发,硬件使用一台路由器能够实现.浏览器
2.使用VMware创建linux虚拟机而后使用bind之类的软件实现.缓存
3.使用新的物理主机来实现.服务器
方案一简单省电,但性能估计不会很高,由于后期可能须要在上面搭建nginx作反向和跳转之用,方案一暂时不选用,方案二可知足性能与伸缩性的要求,可是须要宿主机(个人笔记本)一直开启,功耗和便利性不尽人意.方案三可知足全部需求,正好有块闲置的AMD E-350主板,品牌BIOSTAR(映泰),型号为A68I-350 DELUXE ,版型ITX mini,面向HTPC市场.可以使用小机箱.并且amd全系cpu支持虚拟化,后期可作虚拟主机使用,伸缩性比较好,功耗不高.可长期开启.虽然性能不高,但对付简单的dns请求和nginx跳转等非CPU密集任务,应该能够.性能
主板长这样:测试
有了主板,接下来淘宝了内存硬盘主机箱,后来主机箱由于挡板孔位不对和电源问题,花了两天时间改装,期间各类不细说.开始打算使用vmware esxi来虚拟化主机,省的常常用显示器可键盘管理,格式化好硬盘刻好U盘后发现,系统要求最少4096Mb,google
而个人4Gb被显卡共享掉了一些恰好不能够安装,虽然能够破解,可是很麻烦.无奈之下选择了Windows Server 2008做为操做系统长期使用.后期管理可以使用远程桌面.就这样,一台独立的windows服务器诞生了.spa
WIndows Server 2008 R2 DNS 服务器搭建过程很简单,网上可搜索到教程,下面来配置该服务器,使得它能返回错误的回应到客户端.正向查找区域点击右键(正向查找与反向查找区别请参考百度百科),选择新建区域,
出现新建区域向导,点击下一步,选择主要区域,而后点击下一步
出现新的区域名称,这里须要注意,假如你要修改www.google.com的dns回应,则填写www.google.com,不可填写google.com,不然后面添加www主机名后,客户端只能获取这一个主机的回应,其他主机例如map的回应客户端将没法获取,
这个理解起来须要域方面的知识,本文暂时不讨论相关知识.
接下来区域文件和动态更新选择默认和不容许,而后完成
而后在刚才建立的区域上点击右键,选择新建主机
出现新建主机,名称不填写,会使用父域名称,也就是www.google.com,ip地址填写你要回应的ip,本例选择回应百度的ip,这样在客户端请求www.google.com的时候,返回的是baidu的ip,填好后点击添加主机,若是你想这条记录在
反向查找时起做用,就勾选"建立相关指针(PTR)记录".
至此,一条解析配置完成.如今客户端请求www.google.com的数据包送到这台服务器上后,会返回百度的ip地址,也就是说,当用户想要访问www.google.com的时候,浏览器中出现的会是百度的页面.那客户端的其余请求怎么办?
不可能把全部的域名都添加到服务器中,因此还须要配置转发器,将本地没有的映射转发到上一级进行查询,那上一级没有怎么办?这个不是本文的重点,有兴趣可详细了解域名查询过程及递归迭代等方式.本例使用阿里巴巴公
共dns服务器和谷歌公共dns服务器做为上级.在dns服务器根部点击右键,选择属性,而后点击转发器,而后点击编辑.
添加阿里巴巴223.5.5.5和谷歌8.8.8.8点击肯定,而后dns的配置基本完成.
我所在的运营商到google公共dns服务器a,也就是8.8.8.8的延迟为77ms,不知道是否是真的,仍是google在大陆有镜像服务器?
测试可用性
dns服务器配置完成,下面将本地的dns指向刚配的服务器,看看会发生什么?
因为dns缓存的存在,首先须要刷新操做系统dns缓存,而后使用nslookup查看解析状况,能够看到已经成功解析了.
可是在用浏览器测试的时候,发现一个问题,就是访问google的时候链接会被重置,用burp查看,发现百度服务器发现请求头的host为www. google.com.就会重置连接,致使访问失败.
将请求头改成www.baidu.com的时候,则没有问题
请看:
因为百度启用https,因此在http请求的第一次回应会返回一个302,将浏览器引导到https上面:
这个小插曲,致使浏览器不能演示,可是却意外发现了百度的这个逻辑,还不错.若是想要浏览器看到想要的结果,估计要修改dns域和IP地址,指向不检查请求头host的站,那有没有这种站?不知道...没有的话能够本身搭建.下边的文章
会在物理dns上面搭建nginx环境,届时能够看到实际的效果.