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性能优化课程笔记