DNS解析
DNS解析可以分为正向解析和反向解析,正向解析指将域名(FQDN)解析为IP地址,一个FQDN可能会对应多个IP地址。反向解析指通过IP解析出对应的域名。
DNS协议使用的是53端口。
可以通过nslookup/dig 域名
查看域名解析记录。
DNS解析记录类型
- A: 将域名解析到IPv4地址。一个域名可以填写多个IPv4地址记录,DNS服务器在收到请求后,会将所有IP以随机顺序返回给客户端,客户端访问其中一个IP。
- AAAA:将域名解析到IPv6地址。一对多关系,一个域名可以对应多条IP记录。
- CNAME:将一个域名解析到另一个域名上,可以多层嵌套,最后一个域名最终还是指向一条A记录。一对多关系,可以填写多个域名,同A记录,DNS服务器会将域名全部返回,不建议一对多配置。 作用是可以实现多个域名绑定一个IP,如其中一个域名绑定一条A记录,剩余的域名绑定CNAME记录,当IP变更的时候只需要修改A记录即可。
- SRV记录:
- SOA记录:
域名组成及解析流程
- 域名组成
www.sina.com.cn.
主机名.子域名.二级域名.顶级域名
- 根域名,用
.
表示;因为所有域名都会在最后带上.
,所以一般会省略。 - 顶级域名,如
.com, .cn, .net
等,只有固定的几个; - 二级域名(权威域名),如
baidu.com, com.cn
等,可以自行注册; - 三级域名(子域名),如
sina.com.cn
,一般为公司申请了二级域名后,可以自己注册一些三级域名来区分不同服务; - FQDN,如
www.baidu.com
,表示一个完整的域名。
相应的,提供域名解析服务器分为根域名服务器、顶级域名服务器,二级域名服务器,子域名服务器。
-
域名解析流程:
一般流程为首先检查本机的DNS缓存记录,如果没有找到,则检查hosts文件配置的解析,如果没找到则向DNS服务器(一般为本地DNS服务器,如阿里云解析)发起查询,DNS服务器检查自己的缓存,如果有则返回结果,如果没有则向根域名服务发起请求。根域名服务器街道请求后,返回可能存在解析记录的顶级域名服务器,DNS服务器再次向顶级域名服务器发起请求,顶级域名服务器返回可能存在解析记录的二级域名服务器,DNS服务再向二级域名服务发起请求,二级域名服务器将解析记录返回给DNS服务,DNS服务记录该解析,并将结果返回。
- CNAME解析流程
www.example.com CNAME example.com
example.com A 10.10.10.1
如上CNAME解析
- 客户端如浏览器或网络设备访问
www.example.com
的时候,DNS服务器返回该CNAME记录告诉客户端这是一条CNAME记录。 - 客户端向
example.com
发起请求,DNS服务器将解析返回给客户端。 - 客户端最后得到IP地址,访问到后端。
后端服务器,如nginx收到的请求还是会认为客户端访问的域名是www.example.com
。 因此nginx如果配置了SSL访问,两个域名的证书都得配置。
Linux中的DNS解析配置
Linux中DNS解析的配置文件为/etc/resolv.conf
,一般有以下几个关键字段。
- nameserver
DNS服务器的IP地址 - search
当域名解析查询不到时,将search中配置的字段添加到域名后再次查询。可以填写多个字段,通过空格分隔。 - domain
没有配置search时,domain配置的值就是search的默认值。domain和search只能配置一个,都配置时最后一个生效。 - options
- ndots: 域名中至少包含的点的数量。超过指定数量认为是FQDN,直接解析;否则加上search内容后解析。
- timeout:请求dns服务器的超时时间。
- attemps:请求dns服务器的次数
- no-check-names: 不检查域名是否存在无效字符。
一个配置示例如下
nameserver 202.102.192.68
nameserver 202.102.192.69
search qq.com baidu.com
options no-check-names
options attempts:1
options timeout:1
其他
ping域名可以解析到IP却ping不通
可能原因是提供服务的机器故障了,或是域名和IP的绑定关系修改了,原域名绑定到了新的IP,但由于本地有DNS缓存记录,所以仍旧能解析到IP但无法ping通机器。可以清除缓存后重试。
参考
https://blog.51cto.com/u_15436955/5011798
https://cloud.tencent.com/developer/article/1369633
https://www.cnblogs.com/bluestorm/p/10345334.html
https://zhuanlan.zhihu.com/p/58108010
https://yryz.net/post/cname