最近在G+上无意发现一个一个好东西——Pcap_DNSProxy,这是一个运行在Windows上的DNS服务程序,主要功能是防止DNS污染。以前我都是在linux系统上使用Pdnsd搭建防污染的DNS服务器,现在家用的Windows电脑单也可以轻松实现了,而且比Pdnsd搭建更为方便(Pdnsd搭建的方式可以看我的上一篇博客《Ubuntu16.04用Pdnsd替换dnsmasq防止DNS污染》)更酷炫的是,该程序还可以设置HTTP代理或者Socks5代理,使用代理服务器解析DNS请求,更进一步的提高了解析结果的可靠性,通过代理,即使ISP将所有境外服务器都拦截,也可以通过加密代理进行解析,十分适合在天朝境内使用。

Pcap_DNSProxy 是国人写的项目,并在github上开源,其说明文档和下载页面均为中文。安装和部署方式非常简单,配置文件的说明也全是中文(以前看dnsmasq的wiki看的我头大)。实在是居家旅行科学上网必备工具。

官方介绍这是一个基于WinPcap的DNS服务程序,使用DNS加密和TCP协议防止DNS污染,并且支持DNS缓存,可以自定义缓存时间和缓存队列长度等参数,使用起来很像pdnsd,可以设置多个DNS服务器链,并且可以实现国内域名国内解析,国外域名国外解析的效果,加速国内外网站的访问。

该软件的下载地址:https://github.com/chengr28/Pcap_DNSProxy/releases

不知道是不是官方文档的一个说明文档,介绍的非常详细:http://www.lichanglin.cn/%E9%98%B2DNS%E6%B1%A1%E6%9F%93%E5%B7%A5%E5%85%B7Pcap_DNSProxy/

下面简单的介绍一下最快速的部署过程,如果你成功部署过一次之后,第二次去别的计算机部署仅需1分钟不到就可以搞定

1、先下载安装WinPcap:http://www.winpcap.org/install/default.htm

2、然后从上面我写的github地址上下载最新的Pcap_DNSProxy压缩包,下载完成之后解压到本地磁盘上

3、找到\Pcap_DNSProxy-0.4.7.6-bin\Windows文件夹,右击ServiceControl.bat,选择“以管理员身份运行”

4、在弹出的命令行中输入1,回车

注:在这个过程中,可能会弹出360提示你程序试图修改xxx,或者windows防火墙的弹出窗口,一律选择允许就可以了

检查DNS服务是否启动成功,可以进入命令行使用netstat -an查看是否有程序监听127.0.0.1:53端口

5、将系统默认的DNS服务器换成127.0.0.1,如下图,首先打开“网络和共享中心”,找到当前连接的有线或者无线连接

点击相应的连接,修改DNS服务器设置

这样就搭建了一个本地的DNS服务器(自带防污染和DNS缓存功能)并且将系统全部的DNS请求均交由该服务器进行解析

上面只介绍了最简单的一种部署方法,这种配置有时候还是会解析不到向www.facebook.com,www.twitter.com这样的地址,需要我们修改配置文件中的解析策略

我个人总结配置文件一共改三四行就够行了

1、修改解析协议从UDP协议转为TCP协议

2、修改DNS缓存时间为1天以上

3、将53端口开放让局域网用户可以把你的机器当成DNS服务器

修改后的Config.ini文件如下,注意#后面为注释,实际使用时请删掉所有注释内容

[Base]
Version = 0.4
File Refresh Time = 15
Additional Path =
Hosts File Name = Hosts.ini|Hosts.conf|Hosts|Hosts.txt|Hosts.csv|WhiteList.txt|White_List.txt
IPFilter File Name = IPFilter.ini|IPFilter.conf|IPFilter.dat|IPFilter.csv|IPFilter|Guarding.p2p|Guarding|Routing.txt|chnrouting.txt|chnroute.txt[Log]
Print Log Level = 3
Log Maximum Size = 8MB[Listen]
Pcap Capture = 1
Pcap Devices Blacklist = AnyConnect|Host|Hyper|ISATAP|IKE|L2TP|Only|Oracle|PPTP|Pseudo|Teredo|Tunnel|Virtual|VMNet|VMware|VPN|any|lo
Pcap Reading Timeout = 250
Listen Protocol = IPv6 + IPv4 + TCP + UDP
Listen Port = 53
Operation Mode = Server # 这里要从Private改成server,这样局域网的其他设备才能把你的电脑当成DNS服务器
IPFilter Type = Deny
IPFilter Level < 0
Accept Type = [DNS]
Protocol = IPv4 + TCP # 注意这里要把UDP改成TCP,否则有可能解析不了某些网站
Direct Request = 0
Cache Type = Timer # 推荐按照时间缓存,Timer是时间缓存,还有一种是按照数量缓存
Cache Parameter = 86400 # 这个是DNS结果缓存的时间,推荐一天以上,单位为秒
Default TTL = 86400[Addresses]
IPv4 Listen Address =
IPv4 EDNS Client Subnet Address =
IPv4 Main DNS Address = 8.8.4.4:53
IPv4 Alternate DNS Address = 1.0.0.1:53|9.9.9.9:53|208.67.220.220:5353
IPv4 Local Main DNS Address = 114.114.115.115:53
IPv4 Local Alternate DNS Address = 223.6.6.6:53
IPv6 Listen Address =
IPv6 EDNS Client Subnet Address =
IPv6 Main DNS Address = [2001:4860:4860::8844]:53
IPv6 Alternate DNS Address = [2606:4700:4700::1001]:53|[2620:FE::FE]:53|[2620:0:CCD::2]:5353
IPv6 Local Main DNS Address = [240C::6644]:53
IPv6 Local Alternate DNS Address = [240C::6666]:53

省略官方配置文件Demo中剩下的内容,基本都不需要改

其中IPv4 Main DNS Address是主要上游DNS服务器的地址,关系到你本地DNS的速度。还有几个参数如下

  • IPv4 Alternate DNS Address - IPv4 备用 DNS 服务器地址:需要输入一个带端口格式的地址,默认为 8.8.8.8:53|208.67.220.220:53|208.67.222.222:53

    • 本参数支持同时请求多服务器的功能,开启后将同时向列表中的服务器请求解析域名,并采用最快回应的服务器的结果
    • 使用同时请求多服务器格式为 “地址 A:端口|地址 B:端口|地址 C:端口”(不含引号),同时请求多服务器启用后将自动启用 Alternate Multi Request 参数(参见下文)
    • 指定端口时可使用服务名称代替,参见上表
  • IPv4 Local DNS Address - IPv4 主要境内 DNS 服务器地址,用于境内域名解析:需要输入一个带端口格式的地址,默认为 114.114.115.115:53
    • 指定端口时可使用服务名称代替,参见上表
  • IPv4 Local Alternate DNS Address - IPv4 备用境内 DNS 服务器地址,用于境内域名解析:需要输入一个带端口格式的地址,默认为 114.114.114.114:53
    • 指定端口时可使用服务名称代替,参见上表
  • IPv6 Listen Address - IPv6 本地监听地址:默认为空

远程代理解析DNS:

如果上面的方法不好用,或者你的地区封锁了全部的国外DNS服务器,那么就需要使用代理来远程解析DNS了,Pcap_DNSProxy支持HTTP代理和Socks5代理,也就是说支持像蓝灯,Shadowsocks,SSH这样的代理。下面以Shadowsocks为例修改配置文件Config.ini

[Proxy]
SOCKS Proxy = 1
SOCKS Version = 5
SOCKS Protocol = IPv4 + TCP
SOCKS Reliable Socket Timeout = 6000
SOCKS Unreliable Socket Timeout = 3000
SOCKS UDP No Handshake = 1
SOCKS Proxy Only = 0
SOCKS IPv4 Address = 127.0.0.1:1080
SOCKS IPv6 Address = [::1]:1080
SOCKS Target Server = 8.8.4.4:53
SOCKS Username =
SOCKS Password =
HTTP Proxy = 0
HTTP Protocol = IPv4
HTTP Socket Timeout = 3000
HTTP Proxy Only = 0
HTTP IPv4 Address = 127.0.0.1:1080
HTTP IPv6 Address = [::1]:1080
HTTP Target Server = 8.8.4.4:53
HTTP Version = 1.1
HTTP Header Field = Content-Length: 0
HTTP Header Field = User-Agent: Pcap_DNSProxy/0.4
HTTP Header Field = Accept: */*
HTTP Header Field = Cache-Control: no-cache
HTTP Header Field = Pragma: no-cache
HTTP Proxy Authorization = 

这样就实现了使用Shadowsocks客户端将IP解析请求通过代理发送到8.8.4.4服务器,防止本地8.8.4.4被墙,同理可以修改上面的127.0.0.1:1080为你本地的Shadowsocks或者SSH监听地址,灵活配置

IPv6 DNS免流:

对于某些教育网IPv4+IPv6用户,使用IPv4流量是收费的,而IPv6流量是免费的,但是浏览器会默认使用IPv4流量,强迫浏览器走IPv6的方法就是设置IPv6的DNS,让浏览器只会访问IPv6的站点。根据这个原理,我们可以让pcap_DNSproxy只返回IPv6的解析结果,屏蔽IPv4的解析结果,实现非常容易,修改“Config.ini”

[Listen]
Pcap Capture = 1
Pcap Devices Blacklist = AnyConnect|Host|Hyper|ISATAP|IKE|L2TP|Only|Oracle|PPTP|Pseudo|Teredo|Tunnel|Virtual|VMNet|VMware|VPN|any|lo
Pcap Reading Timeout = 250
Listen Protocol = IPv6 + IPv4 + TCP + UDP
Listen Port = 53
Operation Mode = Server
IPFilter Type = Deny
IPFilter Level < 0
Accept Type = Permit:AAAA

重点是修改最后一行Accept Type,Permit:AAAA意味着仅允许返回IPv6的解析结果,这样就可以过滤掉IPv4的地址,强制浏览器走IPv6流量

想要了解更多的使用方法可以参考我上面贴出的文档地址,全中文很详细。

后记:如果你想单纯的一键搭建一个防污染的Windows DNS服务器,那么还有一个很好的选择就是dnsforwarder,并且不需要WinPcap,只需要一个exe,一个配置文件即可完成,同时支持win/linux平台,抗污染能力非常强,美中不足的是不能像本文的Pcap_DNSProxy那样支持socks或者http代理。我有一篇文章专门介绍《pdnsd的优秀替代方案——dnsforwarder》

一分钟快速搭建Windows防污染DNS服务器——Pcap_DNSProxy相关推荐

  1. dns设置快速连接微软服务器,快速搭建Windows防污染DNS服务器——Pcap_DNSProxy(一)...

    最近了解到一款不错的小工具Pcap_DNSProxy,这是一个可以在Windows上搭建的DNS服务程序,用来防止DNS污染.(同时支持MAC,LINUX) 什么是DNS污染 DNS污染是一种让用户得 ...

  2. 使用自定义的dns服务器,快速搭建自己的DNS服务器

    最近百度推出了自己的DNS服务器,DNS服务器搭建是很高大上的东西,今天看到一篇文章,如果快速拥有自己的DNS服务器! 一.什么是DNS 这个网上就有详细的概念介绍,DNS 是域名系统(Domain ...

  3. 30分钟快速搭建移动应用直传OSS服务

    30分钟快速搭建移动应用直传服务 背景 这是一个移动互联的时代.手机APP上传的数据会越来越多.把数据存储的问题交给OSS, 让开发者能更加专注于自己的应用逻辑. 那么怎么样基于OSS构建一个APP存 ...

  4. 转载文章-【工具】10分钟快速搭建属于自己的文档网站-来自掘金

    掘金 首页 探索掘金 搜索 lvhanghmm的头像 Gopal lv-4 2021年03月09日 阅读 9930 关注 [工具]10分钟快速搭建属于自己的文档网站 前言 很多同学都希望能够拥有自己的 ...

  5. Linux一键部署duckchat,DuckChat 1.0.7发布,十分钟快速搭建聊天系统

    DuckChat 1.0.7发布,十分钟快速搭建聊天系统 2018年09月28日 11:55作者:黄页编辑:黄页 分享 DuckChat是一款安全的私有聊天软件,基于PHP环境,可运行在Docker. ...

  6. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  7. windows AD/DNS服务器搭建

    windows AD-DS服务器搭建 1 什么是域 2 域的原理及作用 3 使用域的优势 4 Active Directory(活动目录) 5 安装AD条件 6 安装AD步骤 7 DNS服务器 8 D ...

  8. Windows server DNS服务器搭建

    2008硬件:内存2GB        处理器2        硬盘100GB IP: 192.168.1.56 255.255.255.0 192.168.1.254 127.0.0.0 2012硬 ...

  9. 10分钟快速搭建自己的服务器

    快速搭建服务器 1.创建虚拟机 2.CentOS 7的安装 3.CentOS 7 配置 4. Xshell连接 5.Docker的安装 前言:买了个阿里云的服务器,但是由于内存小docker运行几个容 ...

最新文章

  1. 报告 | 2018中国区块链行业分析报告
  2. SmartPointer
  3. C/C++笔试题目大全
  4. CentOS7: How to resolve curl#56 - Recv failure: Connection reset by peer
  5. eclipse maven访问maven私有库
  6. 关于英特尔® 以太网服务器适配器中 SR-IOV 的常见问题解答
  7. SAP License:SAP PI(流程集成)
  8. C++ 设计模式之Static Factory模式(简单工厂模式)
  9. C++的ORM 开源框架
  10. redis主从、哨兵、集群的区别
  11. SOEM控制伺服电机
  12. TiDB 在 Cisco Webex 架构中的部署和应用
  13. confluence 制作流程图_Sketch制作交互流程图,哪种工具最高效?
  14. python去除图片复杂背景_用Python去除图像的黑色或白色背景实例
  15. oracle lms进程 内存,lms进程耗用大量内存
  16. CENTOS5.5下使用Roundcube搭建 Webmail
  17. Lynis介绍与使用
  18. 【爬虫】Selenium爬取动态网页的base64图片
  19. win7下制作ubuntu安装u盘
  20. java 拼音转汉字_Java通过pinyin4j实现汉字转拼音

热门文章

  1. 欺诈、舞弊检测中人与人工智能的分工,共同节省数十亿美元
  2. 关机提示错误(已解决) 0x0074006e指令引用的0x0074006e内存不为read
  3. Hi,你想要的在线创建架构图都在这儿!(一)
  4. Linux 动态库的编译和使用
  5. ios 安卓 java_java转android或ios?
  6. quartz暂停及恢复任务解决恢复时一咕噜把未执行的全补回来的问题
  7. 一文读懂RAM、ROM、SRAM、DRAM、SDRAM等内存概念
  8. Python爬虫之urllib.request的使用
  9. Shell编程—日志模块
  10. 柔性作业车间调度问题研究-思考