无法在 Windows 上访问某些网站,但在同一台 PC 上可以在 Linux 上访问

无法在 Windows 上访问某些网站,但在同一台 PC 上可以在 Linux 上访问

我在访问以下网站时遇到问题Pastebin.com或者海盗湾从我的 Windows 10 系统。浏览器超时。我尝试了不同的浏览器(Brave、Edge、Chrome、Firefox),并在 Windows 中创建了一个新的用户配置文件 - 结果相同。

我网络中的其他系统访问这些网站没有任何问题。当我在系统上启动 Linux 时,我也可以从该 PC 访问这些网站。

这表明路由器或 ISP 级别没有进行过滤 - 否则其他系统也无法访问这些站点。

有什么想法我可以寻找什么吗?

答案1


总结

您无法访问网站,因为您的主机文件已被更改,将网站地址重定向到错误的 IP,导致它们无法访问。


计算机文件 hosts 是将主机名映射到 IP 地址的操作系统文件。它是一个纯文本文件。最初,斯坦福研究所手动维护了一个名为 HOSTS.TXT 的文件,并通过文件共享为 ARPANET 成员提供,其中包含成员组织贡献的主机名和主机地址。域名系统于 1983 年首次描述并于 1984 年实施,1自动化发布过程,并在快速增长的网络中提供即时和动态的主机名解析。在现代操作系统中,hosts 文件仍然是一种替代的名称解析机制,通常可作为名称服务交换机等设施的一部分进行配置,作为主要方法或后备方法。

维基百科

对于 Windows 系统,hosts 文件位于 C:\Windows\System32\drivers\etc\hosts,它包含网站地址到互联网协议地址的映射。

计算机不理解网站地址,它们只理解一和零,所以我们需要将网站地址转换为 IPv4 地址,以便计算机知道要连接到哪里。

一个IPv4地址是一个 4 字节(32 位)二进制数,分成 4 个数字,每个数字长一个字节,它们用点分隔,因此将总地址限制为 4294967296。

在此处输入图片描述

要将 IPv4 转换为 4 字节数字,从左到右:

16777216*$ip.split('.')[0]+65536*$ip.split('.')[1]+256*$ip.split('.')[2]+$ip.split('.')[3]

但是,要将 4 字节转换为 IPv4,这比较困难:

$byte1=[math]::floor($number/16777216)
$number=$number % 16777216
$byte2=[math]::floor($number/65536)
$number=$number % 65536
$byte3=[math]::floor($number/256)
$number=$number % 256
"{0}.{1}.{2}.{3}" -f $byte1,$byte2,$byte3,$number

以上是在 PowerShell 中转换 IPv4 的示例,确实很容易理解,尽管我必须承认我无法在一秒钟内快速转换值,但计算机可以,但是我能理解网站地址,但计算机却不能。

IP 地址之于计算机就像名字之于人类;网站之于计算机就像书籍。一本书可能属于许多人,一个人可以拥有多本书,但每个人的名字都是独一无二的(至少理论上如此),人与名字之间存在一一对应关系。请注意,IP 地址对于每台计算机来说都是独一无二的。我们不会用某人拥有的书名来称呼他,而是用他们的名字来称呼他。计算机的工作原理类似。如果您想访问一个网站,您必须与拥有这本书的计算机进行通信才能阅读这本书。

因此,当我们访问某个网址时,我们会使用 DNS 服务器来告诉计算机要连接到哪台计算机。DNS 服务器会记录某个网站托管在哪个 IP 地址上(谁拥有这本书),并告诉计算机与 IP 地址指向的计算机进行通信。

计算机不知道网站的实际位置以及答案的真实性,它们只会转到它们被告知的 IP 地址,因此如果回答了错误的 IP 地址,您将无法访问该网站(因为该网站不在错误 IP 指向的机器上托管,并且与错误 IP 关联的机器中不存在网页)。这称为 DNS 欺骗,故意让 DNS 服务器在询问某些网站时回答错误的 IP,以阻止这些网站。GFW 广泛使用这种技术,以禁止一些网站,如 Wikipedia 和 DeviantArt(并非所有被阻止的网站都使用此技术阻止)。

有一种简单的方法可以对抗 DNS 欺骗:更改主机。访问网站时,计算机将检查网站的地址是否存在于 hosts 文件中,只有当地址不在 hosts 文件中时,它们才会查询 DNS 服务器;如果它们在 hosts 文件中找到了地址,它们将访问在 hosts 文件中找到的地址,而不会查询 DNS 服务器。因此,如果正确的 IP 在 hosts 文件中,DNS 服务器的错误答案不会阻止您访问某些网站。正确的 IP 是通过在线 DNS 查找找到的。

然而,hosts文件也可以被利用。

您可以使用 hosts 文件以这样的方式阻止网站:

127.0.0.1 www.contoso.com

一些程序(尤其是恶意软件和反恶意软件)也可以做到这一点。

再说一遍,计算机无法判断 IP 是否正确或者您是否要阻止某个网站,它们只能遵从。

正因为如此,几乎所有的防病毒和反恶意软件(至少我知道的)都会阻止更改hosts文件,同时它们会自己更改hosts文件来阻止某些网站以出于“安全”原因“保护”用户,所以如果你想涉足hosts文件,请先卸载所谓的防病毒软件。

相关内容