亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網管 > 服務器 > 正文

使用國外DNS造成國內網站訪問慢的解決方法

2020-05-27 13:49:38
字體:
來源:轉載
供稿:網友

你是否是一個使用國外 DNS 的中國網民?你是否發現使用國外 DNS 之后訪問某些國內網站奇慢無比?這不是 DNS 慢,而是電信到聯通的線路太慢。如果你愿意小小地折騰一下,那么跟隨本文,你可以解決這一問題。

一、為什么要用國外 DNS

由于眾所周知的問題,國內 DNS 服務器解析國外網站會遭到 DNS 污染和投毒,使之解析到完全虛構的 IP 上,造成「開了 VPN 也沒法訪問 Twitter 或 Facebook」等問題。以下是一個例子: 

wzyboy@vermilion:~$ dig twitter.com @8.8.8.8 +short

199.59.148.82

199.59.149.230

199.59.148.10

wzyboy@vermilion:~$ dig twitter.com @221.228.255.1 +short

93.46.8.89

 Twitter 正確的 IP 地址應該是 199.59.148.0/24 里的那幾個,但是如果用 221.228.255.1 這臺中國電信的 DNS 服務器查詢,查到的就是不知道什么鬼地址了,地理信息是在意大利,亂七八糟的。正是因為這樣的 DNS 解析不正確的情況出現,不少人轉而使用了國外的 DNS 服務器,如老牌的 OpenDNS 以及這幾年新崛起的好記又好用的 Google Pulic DNS 即 8.8.8.8 和 8.8.4.4。使用它們進行查詢,再配合以 VPN 或者瀏覽器的遠程 DNS 解析,便可避免 DNS 污染的情況出現,從而解析出正確的地址。

此外,拒絕使用電信的 DNS 服務器,還可以避免煩人的「114 上網導航」頁面……

二、為什么使用國外 DNS 會「慢」

我是在「慢」上加了引號的,因為這其實不是國外 DNS 慢,而是你要訪問的網站的 CDN 分配錯誤,慢。由于國內各大運營商之間的主干線路帶寬太窄,所以導致「最遠的距離是從電信到網聯通」,電信用戶訪問聯通的服務器非常慢,聯通用戶訪問電信的服務器也非常慢,相信這都是大家有體驗的。因此,國內不少網站都用了雙線 CDN,在電信的機房里放點服務器,再在聯通的機房里放點服務器。運用智能 DNS 技術,當你訪問網站的時候,DNS 根據你的來源 IP 判斷你是電信用戶還是聯通用戶,然后再返回相應的 IP 地址,這樣你會訪問到就近的、同運營商的服務器,訪問速度就大大提升了。而如果使用國外的 DNS 的話,你的查詢來源來自國外,國內網站的 DNS 無法判斷你是電信用戶還是聯通用戶,就胡亂分配你一個服務器。比如我是一個江蘇電信的用戶,但當我訪問淘寶網的時候,淘寶的 DNS 把我解析到青島聯通的服務器上,奇慢無比。所以:

很多人認為 Google Public DNS, OpenDNS 等「慢」,主要不是查詢慢,而是電信到聯通之間太慢。

當然了,如果硬要比較查詢的話,倒也是會慢很少一點的: 

;; 使用 8.8.8.8 解析 www.google.com 耗時 79 毫秒

;; Query time: 79 msec

;; SERVER: 8.8.8.8#53(8.8.8.8)

;; WHEN: Thu Sep 6 17:20:37 2012

;; MSG SIZE rcvd: 143

;; 使用中國電信 221.228.255.1 服務器解析 www.google.com 耗時 6 毫秒

;; Query time: 6 msec

;; SERVER: 221.228.255.1#53(221.228.255.1)

;; WHEN: Thu Sep 6 17:20:44 2012

;; MSG SIZE rcvd: 284

別看 6 毫秒和 79 毫秒差別很大的樣子,但是人類是很難感覺出來的,而且,這只是查詢時間,與實際的訪問速度無關,就算你一整天都在刷 www.google.com,也就每小時慢個幾百毫秒的樣子,根本感覺不出來。真正慢的原因,還是上文所說的「電信到聯通」的問題。

三、問題的解決思路

現在問題明確了:使用國外 DNS 之后,查詢來源變成國外的 IP,使用了 CDN 加速的國內網站的 DNS 會無法判斷你的來源,胡亂給你分配一個地址,如果不是同一個運營商的,訪問速度便會很慢。

那解決方案也就出現了:讓國內網站的 DNS 服務器知曉你的來源,從而給你分配正確的服務器 IP。于是 Google 起草了一個專有協議,叫 EDNS,在 DNS 查詢請求中包含源地址,這樣淘寶就知道查詢來源不是 Google 服務器,而是電信的某用戶,就不會把你扔到聯通服務器上了 。聽起來很美好是吧?不過這個協議不開放,目前幾乎沒有人用,所以,問題絲毫沒有解決。

新思路是:訪問那些會因 CDN 加速解析錯誤而極其緩慢國內網站的時候,直接向國內的服務器發送請求,讓 DNS 知曉你的來源,給你分配個正確的 IP。訪問其他網站的時候,再通過國外的 DNS 查詢。

聽起來很簡單的樣子,實現起來也不難:用 dnsmasq 在本地搭個 DNS 緩存服務器,規定哪些域名用哪個服務器查就好了。

四、安裝及配置 dnsmasq

安裝 dnsmasq

dnsmasq 是一個非常輕量的 DNS 緩存及 DHCP 服務器,在我的 Arch Linux 上只占用了 368 KiB 的磁盤空間,相比功能極其強大的 BIND9 來說小多了(BIND9 的安裝體積是 6.23 MiB)。不光是體積小,它的功能也很專一,配置起來也是十分方便的,五分鐘就可以搞定。

Ubuntu 12.04 及之后的版本應該自帶了 dnsmasq。如果沒有,可以使用 sudo apt-get install dnsmasq 安裝。Arch Linux 直接 sudo pacman -S dnsmasq 即可。我的筆記本電腦需要給手機 DHCP 及 IP 轉發用,因此早就安裝了 dnsmasq,但是直到今天才想起這么用它……

配置 dnsmasq

dnsmasq 的各參數可以通過 man dnsmasq 查看,配置文件中也有許多清晰明了的注釋。默認的配置文件位于 /etc/dnsmasq.conf,打開它,可以更改這幾個地方: 

no-resolv

no-poll

server=8.8.8.8

server=8.8.4.4

server=/cn/114.114.114.114

server=/taobao.com/114.114.114.114

server=/taobaocdn.com/114.114.114.114

server=/tbcache.com/114.114.114.114

server=/tdimg.com/114.114.114.114

 第一行的 no-resolv 和第二行的 no-pull 讓 dnsmasq 不要通過 /etc/resolv.conf 確定上游服務器,也不要檢測 /etc/resolv.conf 的變化(因為我們就是要拿本機當服務器嘛),接下來兩行指定 dnsmasq 默認查詢的上游服務器,此處以 Google Public DNS 為例,喜歡用 OpenDNS 的也可以改 OpenDNS。接下來就是規定一張名單了,把一些國內網站的域名寫在這里即可。比如 server=/cn/114.114.114.114 便是把所有 .cn 的域名全部通過 114.114.114.114 這臺國內 DNS 服務器來解析,你也可以改成其他的國內 DNS 比如你的運營商提供的 DNS。接下來四行是淘寶的幾個域名,讓它們也通過國內的 DNS 服務器解析。

這樣分流操作之后,默認所有域名都通過 8.8.8.8 和 8.8.4.4 解析,但是所有的 .cn 域名以及淘寶的域名通過 114.114.114.114 這臺國內 DNS 服務器解析。當然,除了淘寶網,你也可以添加更多的域名,根據自己的喜好,把經常訪問,但是使用國外服務器解析到很慢的服務器上的網站域名都可以添加進去,不過:如果這個網站本身就只能一臺服務器,沒有 CDN 加速,那再怎么添加也是無濟于事的,得讓網站管理員去買雙線機房……另外,在寫這篇文章的時候,發現 @felixonmars 維護了一張國內常用的、但是通過國外 DNS 會解析錯誤的網站域名的列表,據他所說,這是他在公司里部署這一套東西之后,公司里其他人報怨「慢」的網站域名收集來的,應該囊括了絕大多數有此問題的網站,值得依賴,歡迎選用。如果覺得直接把這么多域名加在 /etc/dnsmasq.conf 里不爽的話,可以在 dnsmasq.conf 里把 conf-dir=/etc/dnsmasq.d 這一行取消注釋,然后把在 /etc/dnsmasq.d 里弄點列表。比如我就是把 @felixonmars 維護的列表放在 /etc/dnsmasq.d/china.conf 里。

配置好之后,保存,Ubuntu 可用 sudo service dnsmasq restart,Arch Linux 可用 sudo rc.d restart dnsmasq 重啟 dnsmasq。如果沒有錯誤的話,這時本地的 dnsmasq 已經跑起來了。

測試 dnsmasq

測試一下: 

wzyboy@vermilion:~$ dig www.taobao.com @8.8.8.8 +short

www.gslb.taobao.com.danuoyi.tbcache.com.

scorpio.danuoyi.tbcache.com.

119.167.195.251 → 這是淘寶的青島聯通的服務器,我用江蘇電信連奇慢無比

119.167.195.241 → 這也是青島聯通

wzyboy@vermilion:~$ dig www.taobao.com @127.0.0.1 +short

www.gslb.taobao.com.danuoyi.tbcache.com.

scorpio.danuoyi.tbcache.com.

222.186.49.251 → 解析到常州電信了,快!

61.155.221.241 → 這是上海電信

wzyboy@vermilion:~$ dig twitter.com @127.0.0.1 +short

199.59.150.7 → Twitter 還是用 8.8.8.8 解析的,所以解析出來是未經污染的正確地址

199.59.148.82

199.59.149.230

效果很明顯,這時可以把本地的 DNS 設為 127.0.0.1 了。大部分 Linux 用戶直接更改 /etc/resolv.conf 的內容為

nameserver 127.0.0.1

即可。Ubuntu 12.04 及以后的用戶,可能需要對 resolv.conf 做一些手腳,具體參考這里。如果不愿意改的話,可能每次聯網都要手工改一次 resolv.conf,或者在 NetworkManager 中手工指定 127.0.0.1 為 DNS。DHCP 用戶的話,可以通過 /etc/resolv.conf.head 之類的文件來保證 127.0.0.1 在第一行。

這樣配置完之后,如果你沒有在 dnsmasq 里限定查詢 IP,那么你的家人、朋友們也是可以把你的電腦作為 DNS 服務器的。如果你本地是 VPN 全局翻墻的話,需要把你選擇的國內 DNS 服務器通過路由表加入直連的范圍內。當然,已經使用 chnroutes 的就不需要了。

五、我不是 Linux 用戶怎么辦?

如果你是 Windows 用戶

參考這個問題,去配個 BIND9 的 Windows 版本試試吧?;蛘呖梢匝b個 dnsmasq 的 Windows 代替品。

如果你是 Mac OS X 用戶

Mac OS X 的 resolver 比較獨特,似乎有比較簡陋的解決方法,參考這篇文章。另外,OS X 似乎也是自帶 named 的,所以……

其實還有更通用的方法

聽說過 VirtualBox 嗎?開源、免費、強大的虛擬機軟件??梢匝b個最配置非常低下的虛擬機,比如 32 MiB 內存甚至 16 MiB 內存的虛擬機(要知道 64M 內存的 Linux 已經可以跑 WordPress 這龐然大物了),裝個最簡單的小 Linux,比如只有 37M 的 Ubuntu Core,然后裝上依賴包幾乎沒有的 dnsmasq,再把 Windows / OS X 的 DNS 設為虛擬機的 IP 地址,于是便可以用了。在當今內存動輒 4 GiB 的情況下,拿 16MiB 內存出來換個更舒暢的上網體驗,還是很不錯的。

六、尾聲

祝各位讀者折騰成功,上網愉悅。

補充:其實這樣本地 DNS 緩存服務器,還有這樣的好處: 

wzyboy@vermilion:~$ dig wzyboy.im

;< <> > DiG 9.9.1-P2 < <> > wzyboy.im

;; global options: +cmd

;wzyboy.im. IN A

wzyboy.im. 103 IN A 198.244.51.13

;; Query time: 307 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Thu Sep 6 21:32:07 2012

;; MSG SIZE rcvd: 54

wzyboy@vermilion:~$ dig wzyboy.im

;< <> > DiG 9.9.1-P2< <> > wzyboy.im

;; global options: +cmd

;wzyboy.im. IN A

wzyboy.im. 95 IN A 198.244.51.13

;; Query time: 2 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Thu Sep 6 21:32:15 2012

;; MSG SIZE rcvd: 43

 看出來了吧?

本文原載于 wzyboy’s blog,轉載請注明本文地址: https://wzyboy.im/post/874.html ,謝謝合作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩暖暖在线视频| 久久色在线播放| 92国产精品视频| 最新国产成人av网站网址麻豆| 日韩黄色在线免费观看| 国产精品视频不卡| 日韩av免费一区| 日韩av一区在线观看| 国产视频精品xxxx| 久精品免费视频| 黄色成人av在线| 国产玖玖精品视频| 国产精品视频免费在线观看| 中文字幕精品—区二区| 精品性高朝久久久久久久| 欧美日韩免费观看中文| 色综合天天狠天天透天天伊人| 欧美大胆在线视频| 精品网站999www| 最新国产精品拍自在线播放| 日韩在线资源网| 国产视频自拍一区| 日韩在线观看视频免费| 亚洲人高潮女人毛茸茸| 国产精品久久久久7777婷婷| 992tv成人免费视频| 欧美性猛交xxxx免费看| 欧美日韩在线观看视频| 中文字幕精品一区久久久久| 精品偷拍一区二区三区在线看| 国产成人亚洲综合| 日韩欧美有码在线| 亚洲精品福利在线观看| 久久综合国产精品台湾中文娱乐网| 国产精品国内视频| 国产精品久久av| 国产视频在线观看一区二区| 日韩电影免费观看在线观看| 日韩在线精品视频| 性欧美xxxx视频在线观看| 欧美激情一区二区三级高清视频| 欧美美女15p| 国产日韩欧美在线播放| 国产成人拍精品视频午夜网站| 国产亚洲欧洲在线| 欧美性猛交xxxx乱大交蜜桃| 日韩av手机在线看| 久久亚洲精品国产亚洲老地址| 国产亚洲一区二区在线| 欧美精品在线免费| 色777狠狠综合秋免鲁丝| 日本三级韩国三级久久| 亚洲精品wwww| 国产精品免费网站| 日韩成人在线观看| 欧美成人午夜免费视在线看片| 久久久久www| 国产精品免费一区豆花| 亚洲小视频在线| 大桥未久av一区二区三区| 亚洲精品第一页| 国产成人在线一区二区| 欧美日韩国产999| 欧美成人午夜激情| 国产精品第一区| 91精品久久久久久久久久久久久| 久久影院免费观看| 亚洲第一男人天堂| 欧美多人乱p欧美4p久久| 久久免费国产视频| 欧美裸体男粗大视频在线观看| 成人综合网网址| 亚洲精品一区二区三区婷婷月| 国产成人激情视频| 亚洲国产99精品国自产| 欧美视频在线免费看| 亚洲最大激情中文字幕| 欧美性猛xxx| www.亚洲免费视频| 欧美片一区二区三区| 亚洲欧美激情在线视频| 国产亚洲精品美女久久久久| 日韩av不卡在线| 96精品久久久久中文字幕| 俺也去精品视频在线观看| 国产性色av一区二区| 欧美日韩在线观看视频| 精品国产一区av| 欧美性猛交xxxx久久久| 欧美高清videos高潮hd| 久久久99免费视频| 亚洲va久久久噜噜噜| 国产一区二区三区在线观看视频| 亚洲午夜国产成人av电影男同| 成人激情在线播放| 欧美精品videofree1080p| 国产精品久久久亚洲| 欧美日韩国产精品专区| 国产精品久久久久久久9999| 国产主播在线一区| 国产一区二区黄| 色噜噜狠狠狠综合曰曰曰| 亚洲自拍偷拍色片视频| 高清一区二区三区日本久| 国产狼人综合免费视频| 91丝袜美腿美女视频网站| 色播久久人人爽人人爽人人片视av| 亚洲精品久久久久久下一站| 欧美性猛交xxxx乱大交| 国产成人精品久久亚洲高清不卡| 色yeye香蕉凹凸一区二区av| 久久精品一偷一偷国产| 亚洲女人初尝黑人巨大| 国产精品91在线| 亚洲人成电影网站色www| 国产精品6699| 久久99热这里只有精品国产| 国产精品www| 91在线国产电影| 欧美亚洲激情视频| 亚洲国产精品人久久电影| 久久久国产影院| 欧美激情视频给我| 亚洲成人网在线观看| 欧美激情在线视频二区| 亚洲美女在线看| 原创国产精品91| 色综久久综合桃花网| 免费91在线视频| 最近中文字幕mv在线一区二区三区四区| 日韩欧美在线视频日韩欧美在线视频| 亚洲色图综合久久| 91免费视频国产| 欧美精品免费看| 91高潮精品免费porn| 欧美日韩激情小视频| 欧美成人免费在线视频| 亚洲va久久久噜噜噜久久天堂| 国产亚洲精品久久久久久牛牛| 51ⅴ精品国产91久久久久久| 97久久精品人搡人人玩| 热久久免费视频精品| 欧美一级视频免费在线观看| 91亚洲人电影| 国产主播欧美精品| 欧美日韩国产一中文字不卡| 国产成人高清激情视频在线观看| 一区二区三区美女xx视频| 欧美日韩成人在线观看| 91高清视频免费| 久久久午夜视频| 国产精品高精视频免费| 91久久在线视频| 亚洲国产欧美一区二区丝袜黑人| 久久国产精品久久国产精品| 一本色道久久综合狠狠躁篇怎么玩| 97超碰国产精品女人人人爽| 国产精品国模在线| 欧日韩在线观看| 精品人伦一区二区三区蜜桃免费| 91久久久在线| 色偷偷噜噜噜亚洲男人| 亚洲影院色在线观看免费| 亚洲成人久久网|