为什么使用免费 vpn 时 Windows 10 中的 hosts 文件不会阻止网站?

为什么使用免费 vpn 时 Windows 10 中的 hosts 文件不会阻止网站?

我已经读过了 此主题我无法在那里发表评论询问过期的链接,并且解决方案中的几乎所有步骤这里。主机文件在没有 VPN 的情况下工作正常,但不幸的是我无法使用 VPN 解决这个问题。

另外,我清理了浏览器缓存,刷新了 DNS ipconfig /flushdns。我的主机文件如下所示:

127.0.0.1   bing.com
127.0.0.1   www.bing.com

ping www.bing.com产生127.0.0.1IP。但有一次我注意到其中一个网站的ping不是本地主机127.0.0.1

答案1

您表示您正在使用“代理 VPN”(这根本不是 VPN)。使用代理时,名称解析不会在您的 PC 上进行,而是在代理上进行。您无法更改此设置。

HTTP 代理接收类似GET http://www.example.com/some/document.html或的请求CONNECT www.example.com:443(访问 HTTPS 站点时)。

答案2

真正的 VPN 或虚拟专用网络会创建一个虚拟网络接口适配器,这是一个在互联网上运行的较小的“专用”网络。虚拟网络接口具有 IP 地址、子网掩码、网关和 DNS 设置,就像真正的网络接口一样。由于 VPN 使用虚拟接口,并且不会从本质上改变您的设备使用 DNS 或任何其他网络服务的方式,因此它也不会绕过设备的 hosts 文件,而该文件是设备网络堆栈的基本组成部分。

HTTP(S) 代理没有虚拟网络接口,也没有虚拟专用网络。当您的浏览器配置为使用 HTTP(S) 代理时,浏览器会向代理服务器发出请求,而不是直接实际连接到请求的 Web 服务器。

根据代理的类型,名称解析的处理方式不同。SOCKS4 代理(本地解析)与 SOCKS5 代理(远程解析)之间存在差异。SOCKS 代理和 HTTP(S) 代理虽然是两种不同的东西,但都是代理类型。

VPN 和代理之间的主要区别在于 VPN 在网络第 3 层工作,而 HTTP(S) 代理在应用程序第 7 层工作。DNS 本身也在应用程序层工作,因此当使用能够将名称解析转发到远端的代理时,DNS 作为一种协议(包括您的 hosts 文件)甚至根本无法访问。由于 VPN 在第 3 层工作,因此 DNS、HTTP(S)、POP3、FTP、SSH 和所有其他应用程序都可以照常在其上运行,并且您的 hosts 文件也可以按预期工作。代理有几种类型,根据其设计层和特定用途,可以采用不同的方法来执行名称解析。

因此,您使用的 Psiphon 免费 VPN 是一个 SOCKS5 代理,无需使用 hosts 文件即可进行远程解析。

相关内容