網站被DNS攻擊的現象、原理以及可能的解決方案
非常不幸,本網站被長城防火墻盯上,並被施予DNS攻擊或投毒進行屏蔽,如果你不使用VPN,就不能在中國大陸境内訪問本網站。本網站的信息是為所有的中文用戶提供幫助,真的不知道爲什麽他們會認爲本網站是他們需要攻擊的敵人。也許是因爲網站上面幫助人們自由訪問互聯網的信息。經過一番研究以後,我瞭解到網站被屏蔽使用的方法以及如何應對。本文就是我在此過程中學到一些知識。
長城防火墻使用DNS攻擊或投毒的方式來屏蔽某個特定的域名,以防止使用該域名的網站在中國大陸境内被訪問。方法是篡改DNS查詢之回復,給用戶永遠也連接不上的IP地址,從而成功阻止用戶訪問該網站。應對此問題方法是開啓和使用基於Chromiun項目的瀏覽器中的Use Secure DNS(使用安全DNS)的功能,從而避免被DNS攻擊或投毒,正常安全地訪問被封鎖的網站。
雖然本文的目的是爲了讓中國大陸境内的用戶,即使在沒有使用VPN的情況下,也能繼續正常地訪問本網站。但是,你一定認識到,在互聯網已經成爲我們生活一部分的今天,我們必須要投資時間和一定的資源來保護自己不受壞人的肆意侵害了。所以,為了你自己的利益,你應該閲讀完本文,學習一項保護自己的方法。同時瞭解到,使用安全DNS—Use Secure DNS,應該永遠成爲自己互聯網生活的一部分了。
網站被DNS攻擊的現象
當發現網站不能在中國大陸境内正常訪問,我立刻在中國大陸境内的Windows筆記本上打開命令窗口,輸入ping makingreal.net的命令,去檢查到網站所在的服務器的通訊是否是正常的。在持續地嘗試時,每次使用ping命令后,返回的域名地址都是錯誤的,並不是本網站所在服務器的地址。而且,每次返回的服務器地址都不一樣。下面是截圖:
不過,連接到VPN之後,再使用ping命令,就看到返回的是正確的服務器地址。當然,網站也可以正常地訪問。
還有一個令我感到奇怪的現象是,使用手機設備,在沒有連接到VPN的情況下,在中國大陸境内也能正確地訪問網站,這讓我一時沒有明白是爲什麽。不過,這裏提供了解決問題的辦法,我會在下面詳細地説明。
DNS攻擊的原理
在正常的情況下,普通用戶其實是不用瞭解什麽是DNS的。因爲這是IT工程師和開發人員使用的術語和任務,他們應該為人們提供所需要的服務,並讓人們不會察覺,這是理想的使用環境!當應該為你服務的人使用他們掌握的技能和資源來獲得他們自己想要的東西,並損害其他人的利益時,你只有被迫去花額外的時間和精力,去學習如何對抗你的敵人!
什麽是DNS,DNS的工作原理
DNS其實很簡單,它就是一個地址簿。也就是一個地址詞典,幫助你去訪問互聯網上所有的資源(或建築物和門牌號)每一條記錄包括兩個信息,一個信息是人類容易理解的信息—>域名,另一個是計算機使用的信息—>IP地址,像是這樣:www.google.com 8.8.8.8。
前面的www.google.com是互聯網上的域名,就像是現實世界中的門牌號,它是由英文字母組成的,所以很容易理解和記憶。而8.8.8.8則是計算機使用的地址,計算機使用這個地址去進行實際的通訊。
所以,在訪問互聯網上的資源時,當你想訪問谷歌,你會在計算機的瀏覽器中輸入www.google.com,而不是計算機實際使用的8.8.8.8。因爲人類很容易記住有意義的符號,如google.com,而不是無意義的數字。
在你輸入了www.google.com之後,你的計算機就回去詢問DNS服務,DNS服務器查詢其地址簿,找到www.google.com 8.8.8.8這條記錄。於是回答詢問的計算機,告訴它訪問所需要的,計算機使用的地址,那就是8.8.8.8。然後,計算機就使用這個地址去訪問谷歌。
什麽是DNS攻擊,DNS攻擊的原理
因爲上面所講的,計算機通訊的工作原理,即每次開始與網絡上的其它計算機通訊之前都要詢問第一個第三方,將域名換成計算機使用的訪問地址,這就給壞人提供了機會來利用它。首先,DNS查詢使用的是明文,并且沒有對通訊的雙方進行身份驗證,所以很容易在中途被截取並篡改。
另外,當這個提供域名到數字地址轉換服務第三方(DNS服務)是一個壞人的時候,它會為了自己的目的,蓄意使用錯誤的數字地址回答從用戶計算機端發起的詢問。
在本網站的例子中,因爲CCP可能不喜歡網站上面有關VPN的信息,不希望中國人讀到這些信息,所以使用長城防火墻在對DNS查詢進行檢查的時候,對返回的結果進行篡改;或者,使用其中的DNS服務器蓄意給出錯誤的回答,從上面的截圖你就會瞭解到。每次給一個你絕對連接不同的地址!這樣,就成功阻止了國内的用戶訪問網站。
更壞的結果可能是,它給你的計算機的回答是一個裝載了惡意代碼的網站地址,當中國用戶想訪問本網站,卻被給的錯誤回答轉移連接到那個網站,並不知覺地下載惡意代碼到自己的計算機,造成更加惡劣的後果。
應對DNS攻擊的解決方案
使用VPN:我在前面說過,當我是用VPN之後,一切都回復正常,可以正常地訪問網站。這是因爲當使用VPN之後,我們所有的通訊,包括進行的DNS查詢,全部都進行了加密,並發送到中國大陸境外按設計目的正常工作DNS服務器(可信任的DNS服務器),得到正確的答案!於是用戶的計算機會去連接正確的服務器進行通訊,得以正常地訪問期望的網站。
使用瀏覽器中提供的安全DNS功能:也可以在不需要使用VPN的情況下,正常訪問本網站。記得我在前面說的,發現在我的安卓手機上仍能正常訪問本網站嗎?我在研究如何解決這個問題時,發現在沒有使用VPN的情況下仍能正常訪問網站的安卓手機,都有一個共同的特點,就是都安裝的是Brave或Chrome瀏覽器。
經過一番google,我瞭解到,因爲DNS攻擊或投毒的問題,一些著名的互聯網公司已經開始著手采取措施應對。應對的方式有多種方式,比如對DNS查詢通訊進行加密;以及對DNS通訊的兩端進行身份的認證,等等。目的就是避免用戶的DNS查詢通訊被檢查、篡改。
在基於Chromium(一個瀏覽器的開源項目)的瀏覽器上,比如我在安卓手機上安裝的Brave、谷歌的chrome以及微軟的Edge,以及Firefox,現在都有一個功能叫著Secure DNS(安全的DNS)。就是它,使我的安卓手機免於長城防火墻的DNS攻擊,正常地訪問網站。
Secure DNS使用的是DNS-Over-HTTPS的方法,即用戶的DNS查詢通訊使用HTTPS協議加密,並使用通常網站通訊的TCP 443端口。所以,DNS攻擊不再有效,因爲它無法將DNS的查詢通訊與網站訪問通訊分開並辨別,沒有了目標,自然無法做壞事。同時,通訊是加密的,無法監察DNS查詢内容,所以也無法做任何篡改。
同時,因爲你可以設置Use Secure DNS使用指定的DNS服務,如Cloudflare, OpenDNS等等,讓你有效地避開使用中國大陸境内的任何DNS服務(這通常是由你的互聯網服務提供指定的),這些DNS服務都是長城防火墻的一部分。
所以,只要你使用基於Chromium的瀏覽器,比如目前在中國大陸境内常見的微軟Edge(Windows 10和Windows 11自帶這種瀏覽器),或者谷歌的Chrome,以及我最喜歡使用的Brave瀏覽器,就可以通過開啓並設置安全DNS功能,避免受到DNS攻擊或投毒的侵害。即使在中國大陸境内,也仍能正常訪問被長城防火墻使用DNS攻擊或投毒方式屏蔽的網站。
設置的方法很簡單,下面是詳細的步驟(不需翻墻的方法):
- 如果你使用的是安卓的設備,可以在翻墻后,去谷歌應用程序市場Google Play下載Chrome或Brave(注意,雖然Edge for Windows有Secure DNS功能,但在其安卓的應用程序裏卻沒有!);
- 如果你使用的Windows設備,Windows 10和Windows 11都自帶edge。在edge中設置使用Secure DNS的方法在下面;
- 在蘋果手機上,如果你想使用安全的DNS稍稍有些不同。從iOS 14開始,對加密DNS的支持已被加入。但是,在蘋果手機的設置中,你卻找不到任何有關安全DNS的配置項。用戶如果想使用安全的DNS功能的話(Secure DNS),需要下載和安裝第三方的應用程式,或安裝第三方的配置文件。我會在下面告訴你如何使用第三方配置文件的方法,這種方法利用iOS內置對加密DNS的支持,並且不需要安裝第三方的應用程式。
在安卓手機上設置基於Chromium瀏覽器上的安全DNS
在這些應用程序中的任何一個,找到其設置部分,下面我以谷歌的Chrome爲例截圖,這樣你有更加直觀的瞭解:
- 打開Chrome瀏覽器,在其右上方,有三個點,點擊它。你會看到彈出的菜單,在菜單最下面,你會看到Settings,點擊它;
- 在Setting中,找到Privacy and Security(隱私和安全),點擊它;
- 在彈出的下級菜單中,往下拉,直到你找到Use Secure DNS(使用安全的DNS),點擊它;
- 在出現的界面中確認Use Secure DNS(使用安全的DNS)是打開的;
- 點擊下面的Choose another provider(選擇其他提供商),然後點擊Custom(定制)向下箭頭展開一個下來菜單,在其中選擇OpenDNS(或你可以選擇不同選項進行測試)。Job done!
設置Windows設備上基於Chromium的瀏覽器中的安全DNS
在Windows上的設置幾乎是一樣的。另外,在Windows上,Edge也有這樣的功能,進行相同的設置,下面以微軟Edge瀏覽器爲例:
- 打開瀏覽器,在右上方找到三個點,點擊它。然後在彈出的菜單中找到setting,如圖:
- 在Edge的設置部分左邊的菜單中找到Privacy, search and services(隱私、搜索和服務),點擊選中它。然後在右邊的窗口往下拉,直到你找到Use secure DNS to specify how to lookup the network address for websites(使用安全的DNS來指定如何查詢網站的網絡地址)。使用右邊的開關開啓它,並選擇Choose a service provider(選擇一個服務提供商)。如圖:
Windows設備上Firefox瀏覽器中的安全DNS
我在Firefox上的測試不是很成功,只有一次打開了網站,其餘的測試全部都不成功。不過,你還是可以試試。下面是詳細步驟:
- 打開Firefox瀏覽器,在右上方找到三根綫,點擊它。
- 在彈出菜單的下面,找到Settings,點擊它
- 在Firefox的設置部分,就在當前的General(通用設置)中,在右邊欄目的下面,找到Network Settings(網絡設置),點擊其下右邊的Setting…(設置)按鈕。
- 在彈出的表單中,在下面找到Enable DNS over HTTPS(開啓DNS查詢使用HTTPS加密通道),勾選左邊的框開啓它。並在下面的Use Provider(使用該提供商)的右邊,點擊那個鄉下的箭頭展開下拉菜單,在菜單中選擇一個你喜歡使用的DNS服務提供商。
在苹果手机上配置安全DNS
蘋果從iOS 14開始,已在作業系統內提供了對加密DNS的支援。雖然目前不能在蘋果手機的設置中配置使用安全DNS。但是,使用第三方提供並簽名的配置文件來實現也很簡單。你需要做的僅僅是去下載那些值得信賴的第三方提供的配置文件,然後在設置中將只導入就可以了。下面就是具體的步驟:
- 首先去提供安全DNS服務的供應商處下載他們提供的配置文件。世界上有一些大家公認的,值得信任的服務商,他們是:
- 點擊上面的連結去得到配置文件。點擊之後你會看到配置文件的代碼,將它們全部拷貝下來。然後打開Windows裡的記事本,將拷貝的代碼粘貼過去,保存,給要保存的文件取一個名字,比如CloudflareDNS。
- 將保存好的文件拷貝到你的蘋果手機上去,記住拷貝到手機上的位置。或者,你直接在手機上執行上面的操作,將文件保存在手機上特定的位置。
- 在你的蘋果手機上,去設置處Setting,在一般(General)欄目中,找到配置文件(Profile),找到上面保存好的文件,按安裝按鈕(Install)即可。
任務完成!做好上面的設置后,你就能在中國大陸境内,安全而正常地訪問網站。即使有些網站被長城防火墻使用DNS攻擊或投毒的方式屏蔽,如本網站。