![無法存取 Windows 上的某些網站,但可以在同一台 PC 上的 Linux 上存取](https://rvso.com/image/1641934/%E7%84%A1%E6%B3%95%E5%AD%98%E5%8F%96%20Windows%20%E4%B8%8A%E7%9A%84%E6%9F%90%E4%BA%9B%E7%B6%B2%E7%AB%99%EF%BC%8C%E4%BD%86%E5%8F%AF%E4%BB%A5%E5%9C%A8%E5%90%8C%E4%B8%80%E5%8F%B0%20PC%20%E4%B8%8A%E7%9A%84%20Linux%20%E4%B8%8A%E5%AD%98%E5%8F%96%20.png)
我在訪問此類網站時遇到問題Pastebin.com或者海盜灣從我的 Windows 10 系統。瀏覽器超時。我嘗試了不同的瀏覽器(Brave、Edge、Chrome、Firefox),也在 Windows 中建立了一個新的使用者設定檔 - 結果相同。
我的網路中的其他系統造訪這些網站沒有問題。當我在系統上啟動 Linux 時,我也可以從該 PC 存取這些網站。
這表示路由器或 ISP 等級沒有進行任何過濾 - 否則,其他系統也不應該到達這些網站。
我可能會尋找什麼想法?
答案1
長話短說
您無法存取網站,因為您的主機檔案已更改,將網站位址重新導向到錯誤的 IP,導致網站無法存取。
電腦檔案hosts 是將主機名稱對應到IP 位址的作業系統檔案。它是一個純文字檔案。最初,名為 HOSTS.TXT 的檔案由史丹佛研究所手動維護並透過檔案共享提供給 ARPANET 成員,其中包含由成員組織貢獻的主機名稱和位址。域名系統於 1983 年首次描述並於 1984 年實施,1自動化發布過程,並在快速成長的網路中提供即時和動態的主機名解析。在現代作業系統中,主機檔案仍然是一種替代名稱解析機制,通常可以作為名稱服務切換等設施的一部分進行配置,作為主要方法或後備方法。
從維基百科
對於 Windows 系統,hosts 檔案位於 C:\Windows\System32\drivers\etc\hosts,它包含網站位址到 Internet 協定位址的對應。
電腦無法識別網站位址,它們只能識別 1 和 0,因此我們需要將網站位址轉換為 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伺服器;如果他們在主機檔案中找到該位址,他們將存取在主機檔案中找到的位址,並且不會查詢 DNS 伺服器。因此,如果主機檔案中包含正確的 IP,則 DNS 伺服器的錯誤答案不會阻止您存取某些網站。透過線上 DNS 查找可以找到正確的 IP。
但是,主機檔案也可以被利用。
您可以透過以下方式使用主機檔案來封鎖網站:
127.0.0.1 www.contoso.com
某些程式(尤其是惡意軟體和反惡意軟體)也可以執行此操作。
同樣,電腦無法判斷 IP 是否正確,或者您是否想阻止某個網站,它們只會遵守。
因此,幾乎所有的防毒和反惡意軟體(至少我所知道的)都會阻止主機檔案被更改,同時它們會自行更改主機檔案以阻止某些網站以「保護」用戶出於「安全」原因,所以如果你想涉足hosts文件,請先卸載所謂的防毒軟體。