一、基本概念
1、域名系统(DNS):是互联网的基础设施之一,它将域名与IP地址相互映射,通过DNS,用户可以用易于记忆的域名访问特定的IP地址,而无需记忆复杂的IP地址。
2、FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的。
3、域名分类:包括根域、顶级域等,顶级域分为通用顶级域(如.com、.org、.net等)、国家顶级域(如.cn、.uk、.us等)和反向域(如.arpa)。
二、工作原理
1、当用户在浏览器中输入www.qq.com域名访问该网站时,操作系统会先检查本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析。
4、如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS服务器,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP,本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器,这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器,当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环,不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
三、DNS服务器类型
1、主DNS服务器:负责解析至少一个域。
2、辅助(从)DNS服务器:负责解析至少一个域,是主DNS服务器的辅助。
3、缓存DNS服务器:不负责解析域,只是缓存域名解析结果。
四、配置文件及资源记录类型
1、配置文件:/etc/named.conf(主配置文件,服务器主要运行参数);/etc/named.rfc1912.zones(区域文件,主要指定要解析哪个域名);/var/named/xxx.xx(数据文件,用来正向和反向的解析)。
2、资源记录类型:包括A记录(正向解析,将主机名与IP地址关联)、PTR记录(反向解析,将IP地址对应到主机名)、CNAME记录(别名)、MX记录(邮件交换记录,用于电子邮件系统定位邮件服务器)、NS记录(域名服务器记录,指定该域名由哪个DNS服务器来进行解析)等。
五、不同操作系统下的DNS设置方法
1、Windows系统:打开“网络和共享中心”,选择正在使用的网络连接,进入属性设置,找到“Internet Protocol Version 4 (TCP/IPv4)”选项并选中,点击“属性”,选择“使用下面的DNS服务器地址”,输入首选和备用DNS服务器地址(如Google DNS的首选8.8.8.8和备用8.8.4.4),点击“确定”保存设置。
2、macOS系统:打开“系统偏好设置”,点击“网络”图标,选择正在使用的网络连接(如WiFi或以太网),点击右下角的“高级”按钮,切换到“DNS”标签,点击左下角的“+”按钮添加新的DNS服务器地址(如1.1.1.1),点击“好”并“应用”以保存设置。
3、Linux系统:通常需要通过终端编辑/etc/resolv.conf文件来设置DNS,使用文本编辑器打开该文件,添加nameserver语句指定DNS服务器(如nameserver 8.8.8.8和nameserver 8.8.4.4),保存文件并退出编辑器。
六、常见问题与解答
1、为什么需要更改DNS?:默认情况下,计算机或移动设备会自动从网络提供商获取DNS设置,但这些默认设置可能不够稳定或者不具备优化性能的能力,手动配置DNS可以带来更好的上网体验,例如某些公共DNS服务器(如Google DNS和Cloudflare DNS)通常比ISP提供的DNS更快、更可靠,还能提高隐私保护,有时ISP的DNS可能会出现故障,导致无法访问某些网站,切换到其他DNS可以解决这个问题。
2、如何验证DNS设置是否成功?:在Windows系统中,可以打开命令提示符,输入nslookup www.example.com命令;在macOS和Linux系统中,可以打开终端,输入nslookup www.example.com命令,如果返回的IP地址与实际网站的IP地址相符,则说明DNS设置成功。