在Windows下使用加密DNS(DoH)
本文在我博客 王权之首の秘密基地 中同步发布
为什么要使用加密DNS(DoH)
由于部分运营商网络的问题,很多宽带自带的DNS存在劫持问题,甚至某些宽带存在劫持53端口,直接强制使用运营商DNS。这就有可能会造成DNS解析结果的异常或者污染,也有可能具有个人隐私泄露的风险。所以,要防止DNS污染,就需要使用加密DNS,对DNS请求的过程全程加密,这样运营商即使获取到了你的数据包,也无法对其解密,更无法对其进行修改。这篇文章将会教你如何将你的Windows设备接入DNS服务商提供的公共加密DNS服务
前置条件
1系统要求:Windows 10 build19628及以上,建议Windows11
设置步骤
本文以Windows11为例(因为我已升级至Windows11,目前身边没有Windows10设备)
大概方法 :
设置--网络&Internet--WLAN/以太网
WLAN--硬件属性--编辑DNS设置--手动--开启IPv4和IPv6--填写dns地址
以太网--DNS服务器分配--手动--开启IPv4和IP v6--填写dns地址
详细步骤
1在开始菜单中打开设置
2进入网络和Internet 然后选择你所连接的网络(WLAN or 以太网)
3点击硬件属性(以太网不需要走这一步)
4找到DNS服务器分配,然后点击编辑
5将DNS获取方式从DHCP改为手动
6输入你想用的DNS服务器(这里推荐cloudflare的1111和Google的8888,文章末尾还有其他推荐的)
7添加你所选的DNS服务器到WindowsDNS列表(8888和1111等权威DNS提供商不需要这一步)
因为Windows默认认证的DNS少的可怜,所以需要手动将DNS服务器加入Windows服务器列表
同时按下Windows 徽标键 + X打开Windows终端(管理员)
然后输入(这里以Open DNS为例)
netsh dns add encryption 20867222222 "https://20867222222/dns-query" no no netsh dns add encryption 20867220220 “https://20867220220/dns-query” no no
输入完成后按Enter键
8将DNS加密设为仅加密
由于国内互联网环境比较特殊,建议先测试所选DNS在大陆加密后能否正常试用,比如说四川电信就无法使用加密了的cloudflare1111和Google8888,我的解决方法是使用open DNS(服务器地址在下文“其他”中)
其他:
DNS的Wiki:
https://enwikipediaorg/wiki/Domain_Name_System
DoT的Wiki:
https://enwikipediaorg/wiki/DNS_over_HTTPS
我推荐的公共dns:
1cloudflare的1111
For IPv4 : 1111 and 1001
For IPv6 : 2606:4700:4700::1111 and 2606:4700:4700::1001
官网: 1111 — the Internet’s Fastest, Privacy-First DNS Resolver
2Google DNS:
The Google Public DNS IP addresses (IPv4) are as follows:
8888
8844
The Google Public DNS IPv6 addresses are as follows:
2001:4860:4860::8888
2001:4860:4860::8844
官网: https://developersgooglecom/speed/public-dns/
3Open DNS:
For IPv4 :20867222222 and 20867220220
For IPv6 :2620:119:35::35 and 2620:119:53::53
https://wwwopendnscom/
4腾讯
119292929
182254118118
Public DNS+——DNSPod推出的域名递归解析服务
5阿里 (不确定能否加密)
223555
223666
阿里DNS
6百度 (不确定能否加密)
180767676
百度DNS - 帮助中心 - 公共DNS
7CNNIC (不确定能否加密)
1248
210248
sDNS
打开你的服务器,把IP地址的文件全部删除,然后再开启服务器,机子在启动后会自动会恢复的。比如:你的文件装在F盘,就选择快速格式化F盘,然后在启动服务器就OK了。我碰到这个问题很多次了,都是这样解决的,出现这些问题的主要原因是服务器不正常关机,在停电的时候最容易出现这样。
在2003服务器上为每位技术人员建立一个用户,设置每个人的文件夹属性为私有,每个人备份到服务器上自己的私有文件夹下,这样内容就不被其它人看见,但是你这个管理员什么都可以看见。
方法二、使用RAR等打包工具备份,技术人员用RAR打包方式把自己的重要数据备份到服务器上,打包的时候指定一个密码,这样别人从服务器上拷贝文件过去也无法查看。
不建用户的话你用serv-U建个FTP服务器得了。这样只要在服务器里建立他们各自的文件夹,再给他们分个用户名跟密码就行(这里的用户只要在serv—U里添加就行,不需要在系统底下建。需要帮助的Q我!
***(虚拟专用网络,Virtual Private Network)是一种用于连接中、大型企业或团体与团体间的私人网络的通讯方法,它利用隧道协议来达到保密、发送端认证、消息准确性等私人消息安全效果。
***技术可以用不安全的网络来发送可靠、安全的消息,可通过服务器、硬件、软件等多种方式实现。
简介
***全名虚拟专用网络,它是通过在公用网络的基础上加密建立起来的专用私有网络(内网)。***在企业和公司应用很广。***的远程访问主要通过网关对数据包进行加密和通过数据转换来实现的,并且***的分类也有很多种,但大都是以协议类型来分类的。服务器、软件、硬件都可以实现***。
网络功能
***属于远程访问技术,简单地说就是利用公用网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。
在传统的企业网络配置中,要进行远程访问,传统的方法是租用DDN(数字数据网)专线或帧中继,这样的通讯方案必然导致高昂的网络通讯和维护费用。对于移动用户(移动办公人员)与远端个人用户而言,一般会通过拨号线路(Internet)进入企业的局域网,但这样必然带来安全上的隐患。
让外地员工访问到内网资源,利用***的解决方法就是在内网中架设一台***服务器。外地员工在当地连上互联网后,通过互联网连接***服务器,然后通过***服务器进入企业内网。为了保证数据安全,***服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样,但实际上***使用的是互联网上的公用链路,因此***称为虚拟专用网络,其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了***技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用***访问内网资源,这就是***在企业中应用得如此广泛的原因。
实现方式
***的实现有很多种方法,常用的有以下四种:
1.***服务器:在大型局域网中,可以通过在网络中心搭建***服务器的方法实现***。
2.软件***:可以通过专用的软件实现***。
3.硬件***:可以通过专用的硬件实现***。
4.集成***:某些硬件设备,如路由器、防火墙等,都含有***功能,但是一般拥有***功能的硬件设备通常都比没有这一功能的要贵。
主要优点
***能够让移动员工、远程员工、商务合作伙伴和其他人利用本地可用的高速宽带网连接(如DSL、有线电视或者WiFi网络)连接到企业网络。此外,高速宽带网连接提供一种成本效率高的连接远程办公室的方法。
设计良好的宽带***是模块化的和可升级的。***能够让应用者使用一种很容易设置的互联网基础设施,让新的用户迅速和轻松地添加到这个网络。这种能力意味着企业不用增加额外的基础设施就可以提供大量的容量和应用。
***能提供高水平的安全,使用高级的加密和身份识别协议保护数据避免受到窥探,阻止数据窃贼和其他非授权用户接触这种数据。
完全控制,虚拟专用网使用户可以利用ISP的设施和服务,同时又完全掌握着自己网络的控制权。用户只利用ISP提供的网络资源,对于其它的安全设置、网络管理变化可由自己管理。在企业内部也可以自己建立虚拟专用网。
主要缺点
企业不能直接控制基于互联网的***的可靠性和性能。机构必须依靠提供***的互联网服务提供商保证服务的运行。这个因素使企业与互联网服务提供商签署一个服务级协议非常重要,要签署一个保证各种性能指标的协议。
企业创建和部署***线路并不容易。这种技术需要高水平地理解网络和安全问题,需要认真的规划和配置。因此,选择互联网服务提供商负责运行***的大多数事情是一个好主意。
不同厂商的***产品和解决方案总是不兼容的,因为许多厂商不愿意或者不能遵守***技术标准。因此,混合使用不同厂商的产品可能会出现技术问题。另一方面,使用一家供应商的设备可能会提高成本。
当使用无线设备时,***有安全风险。在接入点之间漫游特别容易出问题。当用户在接入点之间漫游的时候,任何使用高级加密技术的解决方案都可能被攻破。
先简单介绍一下代理的分类:
代理分:Level 1~Level 5 五个等级;
或者也可以分为3类:·
A 全匿名代理 不改变你的Request
Fields,使服务器端看来就像有个真正的客户浏览器在访问它。当然,你的真实IP是隐藏起来的。服务器的网管不会认为你使用了代理。
B· 普通匿名代理 能隐藏你的真实IP,但会更改你的Request
Fields,有可能会被认为使用了代理,但仅仅是可能,一般说来是没问题的。不过不要受它的名字的误导,其安全性可能比全匿名代理更高,有的代理会剥离你的部分信息(就好比防火墙的Stealth
Mode),使服务器端探测不到你的操作系统版本和浏览器版本。
C· 透明代理(简单代理) 改编你的Request Fields,并会传送真实IP。
你访问的网站会把你看的一清二楚,知道你用了代理,知道代理的IP,也知道你的真实IP。
一般Level3-Level5属于 透明代理; Level 1-Level3 属于匿名代理! 全匿名代理有时也称为超级代理!
不想让网管(国内代理服务器}或者ISP(国外代理服务器)知道我想去哪去过哪,那把你的连接请求用SSL加密就行了
有了匿名功能再加上加密的连接,隐身术终于练成!
制作和使用这个代理需要的软件是CCPROXY 62,STUNNEL,OPENSSL,SOCKSCAP都是免费软件,CC3个用户就够了
假设你已经有了一台远程机器A做代理服务器,你自己的机器为B
在A机上,我们要开一个SOCKS5的本地代理端口,并且用SSL加密他的传输首先,在CCPROXY里启用SOCKS5的代理服务,假设端口是 1080,创建一个用户,验证方式为用户名/密码/IP混合,假设用户名密码都是123,IP为127001,记得顺便把"禁止局域网外用户访问" 勾上,因为远程的B机不会直接访问这个服务,免得老人人来扫密码下面是关键,打开CCPROXYINI文件,修改并确认下面2个参数:
EnableProxyConnection=0
EnableReferer=0
这样别人就不知道你使用了代理,也不知道你从哪儿来好像CC60也支持这两个参数,不过官方是63才在FAQ里面写出来
然后配置STUNEELCONF文件,内容如下:
cert=stunnelpem
key = stunnelpem
taskbar=no #这个参数可以隐藏STUNELL的图标,如果做坏事就用$%#%#
client=no
[socks2ssl]
accept = 80 #在80端口监听,准备接受外部连接
connect = 127001:1080 #连接CCPROXY开的SOCKS5服务端口
把监听端口设为80的原因是极端的假设B机前面的防火墙只允许B机访问80端口,如果没这个限制,随便设一个
代理服务器做好了,我们要配置一下B机这个客户端
首先是客户端的STUNNELCONF
client = yes
[ssl2SOCKS]
accept = 127001:8282 #在本地启用8282端口的SOCKS5代理服务
connect = AAAAAAAAAAAA:80 #连接到你的代理服务器A,地址或者域名+端口
然后设置SOCKSCAP,设置代理类型SOCKS5,地址127001,端口8282,用户密码验证(启动SOCKSCAP会让你输入,就是前面设置的123了),DNS解析选先本地再远程
最后,把你的浏览器,例如IE,拉入SOCKSCAP,可以去 http://proxyjudgeorg/
验证你的匿名度了!通常就是下面这样的结果
REMOTE_HOST=AAAAAAAAAAAA
REMOTE_ADDR=AAAAAAAAAAAA
HTTP_ACCEPT=/
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=zh-cn
HTTP_CONNECTION=Keep-Alive
HTTP_HOST=proxyjudgenet
HTTP_REFERER=http://proxyjudgeorg/
HTTP_USER_AGENT=Mozilla/40 (compatible; MSIE 60; Windows NT 51;
Maxthon; SV1)
--------------------------------------------------------------------------------
REMOTE_HOST
Result
IP Addr
Comment
I have no idea because DNS lookup failure
HTTP Env value
Result
NoProxy!
Comment
Like no proxy server
AnonyLevel : 1
REMOTE_HOST that is IP addr is precious
或者B机上面装个个人防火墙例如ZONEALARM,启用它的隐私保护,那么
HTTP_ACCEPT_LANGUAGE
HTTP_USER_AGENT
这些本机信息也都会被隐藏
后记:最初只是通过CCPROXY+STUNNEL建一个HTTP的SSL服务器通道,然后本机也是直接用STUNNEL连接出来的HTTP代理,但是验证匿名度的时候始终是Level2,3,让人很不爽知道后来看了一些关于CCPROXY和SOCKS5的资料,试着转换角度弄一下,终于成功了其实用SOCKSCAP还有一个好处,他可以过滤某些数字开头的IP
跳过代理直接连接,如果你的代理服务器驾在国外,你只要把国内主要的一些IP数字开头例如:20296 61141等等加到那个过滤列表里面,就可以解决国外代理访问国内网站很慢的问题了
首先需要明确的一点是,由于手机内存、运算速度等条件的限制,传送的明文消息不可能很长。
加密应该是用的公钥加密算法,因为在客户端和服务器没进行交互的情况下,对称密钥是没有的,但客户端的公钥服务器是知道的,所以应该是:服务器用客户端的公钥对AES密钥进行加密传送给手机客户端,客户端收到之后用自己的私钥进行消息的解密。
这样一方面可以保证消息的机密性(因为私钥只有客户端自己知道),另一方面,即使公钥加密算法很复杂需要的运算时间相对较长,但是由于加密的消息——AES密钥不长,所以总体上不会花费很长时间,这样手机客户端就能在不长的时间里获得AES密钥。
0条评论