目錄
1. 前言
最近不知道怎麼回事github又出現問題了,在chrome瀏覽器怎麼都打不開,等了半天一直在轉圈,慢慢加載出來一個頭bar
2 thousand years later…頭像出來了。
,於是我又抱着僥倖的心理想着再等等吧,最後還是告訴我無法訪問……心態崩了啊
看了一下,原因就是訪問github.com
時間過長,導致ERR_TIMED_OUT
。我真的是很無奈,我首先確定我的網沒問題,絕對不是龜速,別的網站還都挺好,就是百度有時候搜索個東西加載半天不給我結果,我估計又是DNS的問題。
1.1 DNS簡介
先學習一下DNS的概念,域名系統(Domain Name System縮寫DNS,Domain Name被譯爲域名)是因特網的一項核心服務,它作爲可以將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。DNS是Internet上解決網上機器命名的一種系統。就像拜訪朋友要先知道別人家怎麼走一樣,Internet上當一臺主機要訪問另外一臺主機時,必須首先獲知其地址,TCP/IP中的IP地址是由四段以“.”分開的數字組成,記起來總是不如名字那麼方便,所以,就採用了域名系統來管理名字和IP的對應關係。1
簡單來說就是你要訪問一個網址github.com
,你在地址欄輸入了https://github.com/
,回車,然後瀏覽器就想去打開他的主頁,但是去哪找github它的IP地址呢,瀏覽器先去在你的本地找到hosts文件,看看你這個小記事本里面有沒有備註一下,如果有,就直接拿來用,沒有的話就得通過詢問DNS服務器了,如果它找了半天也沒找到,就會問另一個DNS,這樣層層詢問,造成的後果就變成用戶的等待時間,最後可能變成超時。運氣好,拿到github的IP,然後就可以訪問這個IP地址,從而打開github主頁,但是打開的速度又是另外一回事了,可能被DNS污染,有些網站就是無法訪問不了。
2. 解決方法12
通常大公司都不止一臺服務器,爲了負載均衡也會多加幾臺服務器,然後多臺服務器共同提供域名解析服務。這樣,如果我們不小心訪問了邏輯上離我們比較遠的服務器,那打開網頁就很慢了。所以解決問題第一步,我們必須得找到比較快的服務器的IP地址。
2.1 查詢DNS
如果本機未配置DNS時,系統自動查詢服務器,每次使用不同的DNS服務器返回的IP地址可能是不同的,所以多找幾臺DNS服務器去查詢一下IP地址就好了。爲了查IP地址,可以使用nslookup
命令,打開(Linux\Mac\Windows)命令行,輸入:
nslookup github.com
返回結果:
上述結果的意思就是使用public1.114dns.com
這個服務器對github.com
進行解析,查到的IP地址爲13.250.177.223
。但是這個IP地址不太好,因爲在請求的過程中出現了超時。
2.2 更換DNS
2.2.1. 使用命令更換
還是在命令行中,如果我們要指定8.8.8.8
這個DNS服務器去查github.com
,就輸入:
nslookup github.com 8.8.8.8
返回結果
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: github.com
Address: 13.229.188.59
給我的IP變爲了13.228.188.59
了。可以繼續更換熟知的DNS地址,反覆進行查詢,會得到許多不同的IP地址。
2.2.2 手動配置本機DNS[推薦]
這裏提供一個配置DNS的方法,在電腦的設置
-網絡&互聯網
模塊中,找到WLAN
或者以太網
下面的更改網絡適配器
選項,選擇對應的適配器選項,右鍵屬性
推薦大家使用通用的114.114.114.114
服務器,把谷歌的8.8.8.8
作爲備用。3
2.2.3 使用DNS Jumper
訪問FileHorse-download-dns-jumper直接下載軟件DNS Jumper
,【點擊左邊鏈接即可】。
這是對此軟件的簡介:
DNS Jumper將通過替換您的提供商提供的DNS來提高瀏覽速度或提高您的安全性。域名系統(DNS)是互聯網上的一種協議,它可以將人類可以理解的網站名稱(如sordum.org)轉換成機器可以理解的地址(機器可讀的“IP地址”),在某些情況下,您可以通過替換提供商提供的DNS來提高瀏覽速度或提高安全性,DNS Jumper是一個使用起來非常輕鬆的工具。
爲什麼要使用DNS Jumper:
- 它可以幫助訪問被屏蔽的網站
- 它可以通過更改爲更安全的DNS服務器來提高安全性
- 它可以通過選擇家庭安全DNS服務器來阻止不適當的網站(例如成人資料),從而幫助保護您的孩子的安全。
- 它可以通過移動到更快的DNS服務器來加快瀏覽速度
- 可以手動更改DNS服務器,但DNSJumper大大簡化了此過程
哈哈,看完是不是很激動,早知道有這麼簡單的工具,還給我上面講balabala一大堆幹嘛…
(小聲bb:多講點知識點又不虧,是吧!)
3. 解決辦法2
3.1. 更改本地Hosts文件
我們可以把之前查詢到的IP地址寫在本地的Hosts文件中做映射,便於快速定位到目標地址。
當文件中沒有某個網站對應的IP纔會去請求DNS服務器,所以如果已經在本地配置好IP,則省去查詢外部的DNS的過程。
在本地hosts文件裏更新一下githuub.com
對應的比較好的IP地址,可以使用【最新】解決Github網頁上圖片顯示失敗的問題中的方法直接查找IP,也可以用上述命令行的方式通過DNS進行查找。
注意:Hosts文件中前面有#
代表註釋掉本行,本行是不起作用的。
如果網站打開慢的話也可以通過更改DNS或者Hosts的方式進行優化,如果網站還是打不開,則可能是DNS被污染。
4. 【附加】DNS污染4
DNS污染是一種讓一般用戶由於得到虛假目標主機IP而不能與其通信的方法,是一種DNS緩存投毒攻擊(DNS cachepoisoning)。
污染之後,經常導致上網的時候,原本乾淨整潔的網站,在角落和下面跳出奇形怪狀的廣告鏈接圖片,如果你不小心觸碰到,則會把你導入到別的網站去,可能導致被詐騙或者中毒。
其工作方式是:由於通常的DNS查詢沒有任何認證機制,而且DNS查詢通常基於的UDP是無連接不可靠的協議,因此DNS的查詢非常容易被篡改,通過對UDP端口53上的DNS查詢進行入侵檢測,一經發現與關鍵詞相匹配的請求則立即僞裝成目標域名的解析服務器(NS,Name Server)給查詢者返回虛假結果。DNS污染則是發生在用戶請求的第一步上,直接從協議上對用戶的DNS請求進行干擾。
DNS污染症狀:目前一些被禁止訪問的網站很多就是通過DNS污染來實現的,例如YouTube、Facebook等網站。
4.1 如何解決?
對於DNS污染,個人用戶很難單單靠設置解決,通常可以使用VPN或者域名遠程解析的方法解決,但這大多需要購買付費的VPN或SSH等,也可以通過修改Hosts的方法,手動設置域名正確的IP地址。
但是,用戶如果訪問一個地址,國內的服務器(非DNS)監控到用戶訪問的已經被標記地址時,服務器僞裝成DNS服務器向用戶發回錯誤的地址,即使修改Hosts,也可能對某些網站無法訪問!
補充
說了半天,可能還是有人跟我一樣,github訪問就是很慢,經常超時導致斷開,偶爾還能進去,真是玄學。希望以後能夠找到更好的方法,再來更新!
2020-05-28 我的一個同學近期遇到了github網頁打不開的問題,來問我,我去幫他設置一下dns,過一會就好了!!包括MAC和Windows10系統