基础知识-DNS服务
1. 概念
- 名称: DNS: Domain Name System 域名系统
- 作用: 用于域名解析的 域名<—>IP (DNS实现域名和IP之间的转换) DNS是访问公网的必备条件之一
QQ和微信能够正常聊天, 但是打不开网页: DNS故障
QQ和微信只有在登录的时候才会找到服务器通过DNS进行解析来分析IP, 但是后续登录后,再进行聊天是通过qq号来定位的,不需要考虑域名的问题
问题1: 是否需要背诵一个首选DNS地址
不能够DHCP自动获取, 因为普通用户自动获取的是管理员配上去的, 我们作为管理员是需要手工来配置的
不能够百度搜一个, 因为百度也是需要通过DNS解析才能访问的
记住一个首选DNS: 8.8.8.8 推荐: 北京网通: 202.106.0.20
问题2: 是否需要背一个国外的DNS?
不需要, 因为我们记住了一个DNS, 可以直接访问百度, 然后在百度搜国外的DNS, 这样就可以解决问题了
2. hosts文件解释
- hosts的作用: 也可以用来做域名解析(临时解析(DNS里面不解析的域名,直接放在里面,比如steam社区的进入),特殊解析), 优先级大于DNS, 如果hosts里面有,直接取hosts里面的域名解析, 不会从首选DNS里面找
- hosts文件的路径: 注意Windows和Linux斜杠的方向
Windows: C:\Windows\System32\drivers\etc\hosts
Linux: /etc/hosts
钓鱼网站的原理: 修改你hosts里面的域名解析, 把你常用的域名指向钓鱼网站的ip, 此时进入的就是钓鱼网站了
钓鱼网站防范: 我们只要确认一级域+二级域没有问题即可,因为一级域名+二级域名是唯一的
ta0ba0.com
taobao.com
补充:
Windows 和 Linux 的斜杠是反着的
Linux 最左侧的 / 是根目录的意思,不能省略(省略就成了相对路径), 右侧的 /etc/ 斜杠可以省略(打了斜杠我们就晓得是/etc是目录, 不打斜杠我们就知道/etc/是文件,打不打都行,只要后面没有其他文件名就可以)
目录和文件的概念
绝对路径 vs 相对目录
绝对路径: cd /etc/ 绝对路径的参照物是根目录 / , 不管你在哪执行都可以生效,因为参照物是根目录
相对路径: cd etc/ 相对路径的参照物是当前你所在的位置为参照物, 比如 root:#, 此时就不能生效, 因为我们root下面没有etc目录
怎么把Windows用户权限修提升:
1> 命令行切换为管理员用户(win 10 隐藏了管理员的权限, 环境变量每个用户是不同的)
2> 手工改文件权限(第一次改,系统会显示危险操作) - DNS VS hosts
是否可以使用hosts文件替代DNS服务?
不可以
- hosts是静态文件, 所有的域名和IP存在里面,太大了,无法处理(主要原因,2^32的ip,文本超过80GB,根本打不开)
- hosts是静态文件, 域名更新处理麻烦(每天数不清多少个新网站诞生,多少个旧网站死亡, 临时解析,特殊解析)
- hosts是静态文件, 只针对单一电脑生效(所有人都要改, 不然不生效)
- DNS 的优点
① 分布式: 全球分布13组根域名DNS服务器, 所有的DNS服务器都知道根域服务器的位置(我们解析域名的时候,找离我们最近的DNS服务器,这样压力就被平摊了)
② 层次性: 根域管理一级域名,一级域管理二级域,二级域管理三级域
缺点: 针对所有使用这个DNS的用户, 如果DNS被劫持了, 影响会很大(DNS被篡改,直接都访问到钓鱼网站),但是没有取代技术,必须使用
根域: .
一级域名: .com
二级域名+一级域名: .163.com
三级域名: www.163.com
FQDN(Fully Qualified Domain Name): 完全合格域名(域名书写的时候出现了根域) www.163.com.
3 DNS服务原理
- DNS域名解析过程
(顺序执行,哪一种资源消耗最少,就用哪个)
客户端工作: 客户端想去查询域名: www.souhu.com, 在客户端输入这个域名
- 客户端查询本机 hosts 文件
- 没找到再去查询首选DNS服务器(手工配置的8.8.8.8)
首选DNS服务器:
1> 查询首选DNS服务器本机解析域名(查的也是hosts), 可以作为二级域服务器
所有的域名都保存在不同的首选DNS服务器里面, 如果恰好www.souhu.com在这个8.8.8.8的首选DNS, 就可以直接返回
2> 查询首选DNS服务器的缓存(缓存时间: 1天,超过这个时间就刷新)
缓存(cache):
① 优点: 保护后台服务器的读取性能的(缓存是放在内存里面的,后台服务器访问数量高的时候,假设第一个用户搜游戏本,会把数据库的数据遍历,然后返回结果,此时会把这样的结果直接放在缓存里面,第二个用户再搜游戏本,直接从缓存里面返回给用户,这样就节约了后台服务器的读取性能)
② 缺点: 前后台数据不同步(间隔一段时间,前后台数据需要同步一下)、缓存的命中问题(关键字补全,商品分类(用户输入搜索的关键字不正规:游戏本(能打游戏的电脑))
3> 首选DNS服务器查询后端DNS服务器
① 首选DNS服务器查询根域, 根域是否知道域名的IP地址, 根域返回一级域IP地址(根域管理一级域,一级域管理二级域…)->.com
② 首选DNS服务器查询一级域, 一级域会返回二级域的IP->souhu.com
③ 首选DNS查询二级域, 返回查询域名的IP地址->www.souhu.com
4> 首选DNS服务器把域名的IP记录在缓存中
5> 首选DNS服务服务器,把域名的IP返回给客户端
- 两种查询方式
- 递归查询: 客户端向首选DNS中的查询,要求首选DNS返回准确结果,如果不知道可以查询其他DNS服务器
- 迭代查询: 首选DNS向后端DNS的查询, 允许后端DNS返回近似结果
问题: - 虚拟机中搭建的首选DNS服务器, 是否可以访问真公网?
可以, 原因: 所有的DNS服务器,都知道根域的IP(这样就可以完成解析过程) - 虚拟机中假首选DNS服务器,和真首选DNS服务,有什么区别?
有区别
真DNS的ip在根域里面注册过, 因此也可以看成二级域DNS, 首选DNS可以找到根域, 根域也可以找到真首选DNS
假 DNS ip都是假的,没有在根域里面注册过, 因此根域找不到假的首选DNS
为什么是二级域DNS, 因为在万网上注册的时候, 我们就选的域名, www.xiaobai.com xiaobai.com 就是二级域DNS服务器
4 区域、资源记录、解析数据
DNS: 区域–资源记录–解析数据 解析数据是放在资源记录里面的,资源记录是放在区域里面的
- 概念解释:
- 区域(Zone): DNS 服务器管理的最小管理单位,把同一后缀的域名打包成一块统一管理, 里面放资源记录
① 正向区域: 域名->IP (sc.com)
② 反向区域: IP->域名(网段: 168.166.10) - 资源记录 RR(Resource Record): 存放在区域文件里面的一条条配置条目, 所有解析数据全部放在资源记录里
每一条资源记录包含: 域名,类型,TTL 缓存时间, 解析数据(IP/别名/邮件服务器…) - 解析数据: 每条记录里真正用来查询的内容: IP地址, 别名,邮件服务器…,存在资源记录里面
Windows: 目录–文件–数据
Linux: 文件–标题–数据(以这个理解)
- 资源记录类型:
- SOA记录(Start of Authority 起始授权机构): FQDN、缓存时间(所有区域都群在) Fully Qualified Domain Name 完全合格域名 www.baidu.com.
作用: 用来标记这个区域的权威DNS服务器是谁(记录的FQDN就是那台DNS服务器IP转成的域名),携带相关时间 - NS记录(Name Server 名称服务器): FQDN(所有区域都存在
作用: 负责解析本区域域名的DNS服务器FQDN(域名转IP的查询工作)
例子: 外部用户想要查 www.sc.com的IP
① 先查找sc.com区域的NS记录
② NS 记录写了dns1.sc.com. 说明要查sc.com的域名, 去问这台DNS服务器
③ 系统再查 dns1.sc.com 这条 FQDN 对应的A记录, 拿到这台DNS服务器的IP
所有的区域都有上面俩个记录,在一个区域上面俩个的FQDN需要一样(二级或者三级域名) - A主机记录(Address):
作用: 正向解析记录(域名–>IP), 放入正向区域中 - PTR记录(Pointer 指针):
作用: 反向解析记录(IP->域名), 放入反向区域中 - MX(邮件交叉,Mail eXchange)记录: 指定邮箱服务器路由优先级,只有搭建邮件DNS的时候, 才需要在DNS里面加这个东西
- CNAME(别名)记录: Linux会说
- SRV(服务)记录:
例子:
正向区域: 把域名翻译成IP
sc.com
SOA (FQDN,相关事件)
NS (FQDN)
A: (www.sc.com—>IP)
abc.com
SOA (FQDN,相关事件)
NS (FQDN)
A: (www.abc.com—>IP)
sc.com.
SOA dns.sc.com. admin@sc.com (序列号 刷新 重试 过期 TTL)
NS dns.sc.com.
www IN A 168.166.10.89
abc.com.
SOA dns.abc.com. admin@abc.com (…)
NS dns.abc.com.
www IN A 对应IP
反向区域: IP解析成域名
10.166.168 ip前三个数是网段
SOA (FQDN,相关时间)
NS (FQDN)
PTR: (89(ip最后一个位->www.sc.com)
10.166.168.in-addr.arpa.
SOA dns.sc.com. admin@sc.com (…)
NS dns.sc.com.
89 IN PTR www.sc.com.
5 DNS实验
实验准备:
- 桥接网络,保证真实机和虚拟机网络通畅
- 虚拟机和真实机,首选DNS服务器,指向虚拟机的IP
- 建议关闭IPV6网络
- 把真实机和虚拟机的首选DNS都设置为我们自己搭建的假的DNS(写虚拟机的IP
我们需要搭建一个假的DNS服务器, 完成下面俩个问题的解释
① 虚拟机中搭建的首选DNS服务器, 是否可以访问真公网?
可以, 原因: 所有的DNS服务器,都知道根域的IP(这样就可以完成解析过程)
② 虚拟机中假首选DNS服务器,和真首选DNS服务,有什么区别?(实验用域名访问没有出来)
有区别, 真DNS的ip在根域里面注册过, 因此也可以看成二级域DNS, 首选DNS可以找到根域, 根域也可以找到真首选DNS
实验步骤: - 添加角色
服务器管理->添加角色->勾选DNS服务->安装
安装完毕后, 真实机使用我们虚拟机搭建好的DNS服务器, 访问百度, 发现可以访问
此时回答了第一个问题[虚拟机中搭建的首选DNS服务器, 是否可以访问真公网?] 因为所有的DNS服务器都知道根域, 直接通过根域一级一级的把域名解析成IP就可以访问了
所有的DNS都保存了根域, 下面是我搭建好的DNS服务器里面的13组根域名 - 配置DNS服务
新建正向查找区域: 正向查找区域->新建区域->使用主要区域->填写根域名称(sc.com)->不允许动态更新->完成
此时就建立了sc.com的正向区域, 自动生成了SOA和NS俩个资源记录类型
SOA: 完全合格域名(FQDN)+缓存时间
NS: FQDN(完全合格域名)
新建A记录:填写名称,IP地址(一定要写对)->添加主机
然后我们可以在真实机来解析一下/访问一下我们的域名:www.sc.com 发现显示出来的是我们搭建的IIS服务, 说明我们在虚拟机搭建的DNS服务域名解析成功了, 只要使用的是这个DNS, 那么输入这个域名就会显示IIS服务页面, 而不是国外的那个页面
指令: nslookup 域名
不搭建反向区域是不影响网页访问的, 但是解析域名会报错(邮箱服务是必须要搭建反向区域
新建反向查找区域: 新建区域->使用主要区域->写网段->不允许动态更新->完成
新建PTR记录: 填写虚拟机IP地址+主机名->确定
再次使用nslookup来解析域名
补充:
主要区域(主DNS): 允许手工搭建本机域名,也允许去找根域访问公网的域名
辅助区域(辅DNS): 不允许手工搭建本机域名,需要从主DNS同步本机域名, 允许去找根域访问公网的域名
要想搭建辅DNS就必须要有主DNS, 辅DNS的本机数据是从主DNS同步过去的,这样访问压力过大, 可以搭建个主从集群, 一部分用主DNS来上网, 一部分用辅DNS来上网, 这样可以分摊访问压力, 此时如果需要维护数据,如:改一个域名或者改一个IP, 主DNS修改了,辅DNS就能直接同步过来, 不需要改俩次, 这样可以节约资源
注意浏览器的缓存: 之前访问的是用8.8.8.8的DNS服务器访问的www.sc.com, 后面改成我自己搭建的DNS服务器, 再去访问www.sc.com, 可能会有缓存导致浏览器还是能够访问www.sc.com, 清掉缓存即可