一、域名与 DNS 解析
1. DNS 协议在 TCP/IP 栈中属于应用层,不过实际传输还是基于 UDP 或者 TCP 协议(UDP 居多) ,域名服务器监听端口 53 。
2. 域名以分层的结构进行管理,域名解析是用分层递归的方式(从顶级开始),发送给每个层级的域名服务器,直到得到解析结果。
3. 查看服务器的域名服务器配置 /etc/resolv.conf
4. DNS 服务通过资源记录的方式,来管理所有数据。
(1) A 记录,用来把域名转换成 IP 地址;
(2) CNAME 记录,用来创建别名;
(3) NS 记录,则表示该域名对应的域名服务器地址。
5. 查询域名的 A 记录: nslookup 命令
6. 展示域名递归查询的整个过程: dig 命令
7. 域名逐级递归查询的示意图:
二、DNS 解析不稳定及优化方案
1. 不稳定原因:
(1) 没有配置DNS 。 检查命令: nslookup 域名
(2) DNS访问速度过慢。 检查命令: time nslookup 域名
2. 优化方案:
(1) 对 DNS 解析的结果进行缓存。配置dnsmasq服务。
(2) 对 DNS 解析的结果进行预取。Web 应用中最常用的方法。
(3) 使用 HTTPDNS 取代常规的 DNS 解析。很多移动应用会选择的方法。
使用 HTTP 协议绕过链路中的 DNS 服务器,就可以避免域名劫持的问题。
(4) 基于 DNS 的全局负载均衡(GSLB),不仅提供负载均衡功能,还可以根据用户的位置,返回距离最近的 IP 地址。