991 字
5 分钟
PCap_DNSProxy,可能是 Windows 上最佳的 DNS 解决方案
2018-09-29

前言#

暑假回家,一时兴起 traceroute 1.1.1.1 发现 Cloudflare 疑似被劫持,折腾一番之后发现实在是一言难尽,访问海外网站还行国内网站全解析到海外 CDN 去了,放弃。暑假完归校,学校网络运营商是被移动垄断的,访问国外网站日常证书劫持,实在忍无可忍是时候动手解决这个问题了。看过 Kiri 大佬的 1M 服务器自建 DNS ,自己动手搭建一波之后发现问题还是有,有时候 DNS 解析极其缓慢(当然我知道这东西用的人越多越快),还有各种额外的问题。而且大佬提供的方案似乎更适合在路由器上折腾,路由器本人用的是垃圾 K2P 就没打算去折磨它了。于是我在想能不能直接在 Windows 上部署类似的一套系统。Google 搜索了一番 Pcap_DNSProxy 就在首页。


开始安装#

Pcap_DNSProxy 的安装过程非常简单。

到 Pcap_DNSProxy 的 release 里下载最新版本的压缩包。

解压,打开 Tools 文件夹,右键管理员权限安装 WinPcap,一路确定到底即可。

然后右键管理员运行 ServiceControl.bat 按 1 回车安装服务,关闭退出。

配置 Pcap_DNSProxy#

打开 Config.ini 进行对 Pcap_DNSProxy 的配置。

注:作者提供了非常详细的说明文档对每一个配置项都进行了说明,本人只针对我自己需要配置的地方进行注释说明。

[DNS]
Outgoing Protocol = IPv4 + TCP
#我校网络劫持严重不用 TCP 用 UDP 等劫持?(
Cache Parameter = 86400
Default TTL = 86400 
# 增加 DNS 缓存时间避免重复请求
[Local DNS]
Local Protocol = IPv4 + UDP
Local Hosts = 0
Local Routing = 1
Local Force Request = 0

Ps:这一段作者在说明文档提供了非常详细的说明,本人在校使用默认配置,因为其他搭配均蜜汁各种出错,例如上一秒还能打开的网页下一秒就无法打开提示无法解析,很迷。在家使用 Local Hosts + Local Force Request 非常舒服,境内域名使用境内 DNS 解析,海外域名使用海外 DNS 解析,满足了一开始的想法(精神洁癖)。

[Addresses]
IPv4 Main DNS Address = 208.67.220.220:5353
IPv4 Alternate DNS Address = 8.8.4.4:53|8.8.8.8:53|1.0.0.1:53|9.9.9.9:53|1.1.1.1:53
IPv4 Local Main DNS Address = 193.112.15.186:53
IPv4 Local Alternate DNS Address = 223.6.6.6:53|223.5.5.5:53|202.141.178.13:53

针对境内外公共 DNS 的选择,苏卡卡大佬也已经写了一篇文章对此进行说明。重复内容不过多赘述,说一下我选择的原因。鉴于我校网络的劫持状况,最好选择支持 TCP 非正常端口 或者 DNS over HTTPS 的海外 DNS。 OpenDNS 支持 5353 端口 TCP 查询,而且支持 DNSCrypt ,当然这就成为了我的首选境外 DNS。境内 DNS 选择了 Pdomo-DNS ,原因嘛 ,支持 2323 端口 查询,必要时候可以选择 TCP 对 2323 端口查询避免劫持。(在家的时候当然选 8844 啦 ~ 不绕路日本劫持也几乎没有

下一步自然是开启 DNSCrypt 了 配置如下即可开启 DNSCrypt 。

[DNSCurve]
DNSCurve = 1
DNSCurve Protocol = IPv4 + TCP
DNSCurve Encryption = 1

配置到此结束。

Ps:如需作为局域网内其他设备的 DNS 服务器,更改以下配置

[Listen]
Operation Mode = Server

开启 Pcap_DNSProxy#

右键管理员运行 ServiceControl.bat 按 3 回车开启服务。

注:如果没有弹出联网防火墙设置需要手动在防火墙对 Pcap_DNSProxy.exe( For x64 )/Pcap_DNSProxy_x86.exe( For x86 )/Pcap_DNSProxy_XP.exe( For XP ) 设置出入站允许规则。

然后在网卡设定 DNS 解析为 127.0.0.1 (IPv4) 和 ::1 (IPv6) 就可以啦~


总结#

这一套下来对抗学校的 DNS 劫持十分舒服,用起来没什么大碍速度上也没有很大差异,甚至感觉访问境外站点有所加速(可能是错觉)。不管怎么说,终于不用再被学校的 DNS 恶心了。

PCap_DNSProxy,可能是 Windows 上最佳的 DNS 解决方案
https://fuwari.vercel.app/posts/2018-09-29-dnsproxy/
作者
Justf
发布于
2018-09-29
许可协议
CC BY-NC-SA 4.0