1、DNS解析
$ nslookup www.baidu.com
Server: 172.17.1.235
Address: 172.17.1.235#53 #port 53, local DNS 172.17.1.235
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.232.231.172
Name: www.a.shifen.com
Address: 183.232.231.174
$ dig www.baidu.com #也可以用dig查看遞歸查找情況
; <<>> DiG 9.10.6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47972
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 59 IN CNAME www.a.shifen.com.
www.a.shifen.com. 71 IN A 183.232.231.174
www.a.shifen.com. 71 IN A 183.232.231.172
;; AUTHORITY SECTION:
shifen.com. 61127 IN NS ns4.baidu.com.
shifen.com. 61127 IN NS dns.baidu.com.
shifen.com. 61127 IN NS ns3.baidu.com.
shifen.com. 61127 IN NS ns2.baidu.com.
;; ADDITIONAL SECTION:
dns.baidu.com. 25537 IN A 202.108.22.220
ns2.baidu.com. 1807 IN A 220.181.33.31
ns3.baidu.com. 22324 IN A 112.80.248.64
ns4.baidu.com. 23390 IN A 14.215.178.80
;; Query time: 1 msec #總計耗時1ms,很快
;; SERVER: 172.17.1.235#53(172.17.1.235)
;; WHEN: Wed Jun 19 09:58:52 CST 2019
;; MSG SIZE rcvd: 237
$ dig +trace +nodnssec www.baidu.com
; <<>> DiG 9.10.6 <<>> +trace +nodnssec www.baidu.com
;; global options: +cmd
. 367863 IN NS e.root-servers.net.
. 367863 IN NS b.root-servers.net.
$ nslookup -debug www.baidu.com #打開debug模式跟蹤,查看具體情況
$ cat /etc/resolv.conf #查看DNS配置,檢查DNS是否配置
$ echo "nameserver 192.168.10.1" > /etc/resolv.conf #寫入DNS
$ nslookup www.baidu.com #再次查看下是否正常
假如正常了,看下耗時
$ time nslookup www.baidu.com
Server: 192.168.10.1
Address: 192.168.10.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 182.61.200.7
Name: www.a.shifen.com
Address: 182.61.200.6
real 0m0.052s
user 0m0.004s
sys 0m0.027s
假如解析不穩定,偶現超時失敗情況, 考慮:1)DNS服務器本身不穩定 2)客戶端到DNS服務器網絡延時大 3)鏈路中網絡設備丟包。
1)的情況,上面 192.168.10.1是我的DNS服務器,DNS異常可能會出現很多域名解析問題,這裏我們假設DNS服務器是正常的。
2)的情況,本地到DNS延遲大還是有很大可能的,使用
$ ping -c3 172.17.1.235 #查看下時延和丟包情況
如果時延比較大,考慮換一個DNS。多次執行,發現時間不穩定,考慮加dnsmasq緩存服務,
$ /etc/init.d/dnsmasq start #開始緩存服務
* Starting DNS forwarder and DHCP server dnsmasq [ OK ]
$ echo nameserver 127.0.0.1 > /etc/resolv.conf #更改DNS服務地址爲本地迴環地址
$ time nslookup www.xxx.com #多執行幾次驗證下,會看到第一次執行耗時長,之後都快很多。開啓DNS緩存後,緩存服務會定時去更新DNS,這對大多數服務來說是可以容忍的。
2、DNS常見優化思路
DNS結果緩存:開啓dnsmasq
DNS解析預存:在web應用中,不等用戶點擊頁面上超鏈,瀏覽器在後臺自動解析域名,把結果緩存。
HttpDNS取代DNS解析:移動應用防DNS劫持
基於DNS的全局負載均衡(GSLB):負載均衡和高可用,同時返回離用戶最近的IP。
注:學習倪鵬飛老師linux性能優化課程筆記