記一次github.io打不開的解決經歷
記得之前有 github.com 打不開或者打開很慢的解決方案,現在輪到了 github.io,哈哈。我的 github.io 很久開始就打不開了,當時從網上試了幾種方法沒成功就放棄了,今天查資料需要打開 github.io,又有點時間,所以主要針對這個解決了一下。從本文您可以了解到:
- 碰到這種dns的問題該怎么排查?
- 怎么解決打不開github.io的問題?
使用ping
ping命令其實很強大,不僅可以知道能不能連接,延時是多少,還可以知道dns解析的ip地址是多少,比如我們ping www.baidu,com
,命令行顯示如下:
PING www.baidu.com (14.215.177.38): 56 data bytes
64 bytes from 14.215.177.38: icmp_seq=0 ttl=56 time=9.461 ms
64 bytes from 14.215.177.38: icmp_seq=1 ttl=56 time=12.325 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=56 time=15.366 ms
可以看到,后面小括號里面的 14.215.177.38 就是 ip 地址了。
然后我們去ping github.io
,顯示如下:
PING github.io (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.030 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.084 ms
本地 hosts 文件
上面顯示 ip 地址為127.0.0.1
,這個就是本機地址嘛,然后我去/etc/hosts
里面查看hosts文件有沒有被意外修改過,沒看到github.io被解析到127.0.0.1
的記錄,這就表示,電腦上的dns解析是完好的,但是遠程的 dns 解析很可能慘遭網絡運營商的污染了,從而導致解析的時候被解析到了127.0.0.1
。
修改本機 dns
於是我們去修改本機的dns,加入114.114.144.114
和8.8.8.8
,這兩個 dns 都是非商業用途的 dns,解析成功率很高,並且純凈無廣告。前一個是國內移動、電信和聯通通用的 DNS,是國內用戶上網常用的DNS;后一個是 GOOGLE公司提供的 DNS,該全球通用的。
這里以 mac 為例,依次打開系統偏好設置->網絡->高級->dns,然后加入即可。加入之后需要刷新mac緩存,命令如下(記住一定要帶上sudo,否則不會生效):
sudo killall -HUP mDNSResponder
然后我們再來ping github.io
,顯示如下:
PING github.io (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=64 time=36.350 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=23.312 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=64 time=24.262 ms
可以看到,本機 dns 修改生效了,解析到8.8.8.8
了。
被牆了
然后我們興趣沖沖的打開https://octokit.github.io/rest.js/v18
,發現還是打不開。於是我們想着ping一下這個url試試?結果如下:
PING https://octokit.github.io/rest.js/v18 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=116 time=25.442 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=28.669 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=22.312 ms
我們發現是可以ping通的,但是還是在瀏覽器打不開就表示,這個網站可能被牆了!!!
那么有沒有解決方案呢?
其實是有的,之前我的 shadowxsocks 一直開的是PAC 自動模式,我靈機一動開啟全局模式,然后驚喜的發現,https://octokit.github.io/rest.js/v18
能夠打開了!!!
總結
- 以后碰到這種dns問題,就按照上面的順序一步一步排查即可。(適當的時候可以打開
chrome://net-internals/#dns
刷新一下google瀏覽器的dns) - 碰到這種被牆的情況,打開科學x上網工具的全局模式就好。
- 這中間有個小問題,就是為什么 PAC 模式下也能打開被牆的網站,而另外一些被牆的網站需要全局模式才能打開呢?(我的想法是,有些url是被網絡運營商的 dns 污染的,所以走的網絡運營商的 dns,而沒有走科學x上網工具的 dns,所以需要開啟全局模式不走網絡運營商的dns才行。而另外一些網站沒有被網絡運營商的 dns 解析,所以走的科學x上網工具的 dns,所以就能在 PAC 模式下正常打開了。)