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

最近在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

  • 3
    点赞
  • 3
    评论
  • 16
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值