DNS域名系统

DNS的诞生

DNS(Domain Name System) 是一套从域名到IP的映射系统。

在网络中要确定一台主机,可以通过IP地址来做到。但是IP地址不方便记忆, 于是人们发明了一种叫主
机名的东西 。

最初时候人们把主机名和IP地址的对应关系都写在一个hosts文件里面,然后这个hosts文件由“互联网信
息中心(SRI-NIC)”来管理和分发。也就是人们需要定期更新hosts文件。这个文件目前在windows系统
的 C:\Windows\System32\drivers\etc\hosts 中。

时间长了,这个Hosts的机制并不好用,而且更新不及时,主机名多了之后hosts文件太大了,后来就不
用这个机制了。

人们后来改用域名解析系统DNS

  • 一个组织的系统管理机构,维护系统内的每个主机的 IP和主机名 的对应关系
  • 如果新计算机接入网络,将这个信息注册到 数据库 中
  • 用户输入域名的时候,会自动查询 DNS 服务器,由 DNS服务器 检索数据库, 得到对应的IP地址。

域名

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。
例如:http://www.baidu.com(域名使用.连接)

  • .:根域名
  • com: 一级域名,表示这是一个企业域名。同级的还有 “net”(网络提供商),”org”(非盈利组织) 等。
  • baidu: 二级域名, 公司名。
  • www: 只是一种习惯用法,并不是每个域名都支持
  • http:// : 使用http协议来连接这个主机名。

    域名解析的过程

    1. 浏览器缓存
    2. 系统缓存,查找hosts文件
    3. 路由器缓存————————以上三步均为DNS客户端的缓存!!
    4. ISP DNS缓存
    5. 根域名服务器
  1. 顶级域名服务器

  2. 主机名服务器

  3. 保存结果至缓存

DNS查询类型

本地解析:过以前查询获得的缓存信息就地应答查询

递归查询:DNS服务器代表请求客户机联系其他DNS服务器,以完全解析,返回给客户机

迭代查询:客户机自己不断请求DNS服务来解析名称,典型的DNS服务器之间的交互

当你在浏览器输入www.baidu.com之后会发生什么?
1. 浏览器发起域名解析,首先查询浏览器缓存,如果没有,就查询hosts文件,如果没有就提出域名
解析请求
2. 客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
3. 当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接
把查询的结果返回。
4. 如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务
器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
5. 本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没
有该纪录,则返回相关的下级的域名服务器的地址。
6. 重复第四步,直到找到正确的纪录。
7. 本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机

域名解析记录

A:记录地址,返回的域名所指向IP地址
NS:域名服务器,返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址
MX:邮箱记录,返回接收电子邮箱的服务器地址
CNAME:规范名称记录,返回另一个域名,即当前查询的域名是另一个域名的跳转
PTR:逆查域名,只用于IP地址查询域名
dig -x
dig [a ns mx ] 查询指定的记录类型
扩展:
TXT:用来做SPF(反垃圾邮箱)
AAAA:用来指定主机名(或域名)对应的IPv6记录。 SRV:记录哪台计算机提供哪个服务。格式:服务
名字、点、协议的类型。
显性URL:从一个地址301重定向另一个地址的时候。 隐性URL:类似显性URL、区别在于隐形URL不会改
变地址中的域名。

实验

拓扑

H])DDXW7PSHH61X7~{~DVGO.png

需求

实验一共需要三台设备
R1作为dns服务器
R2作为客户端1
R3作为客户端2
需要在R1上配置dhcp,下发的默认网关为自己,下发的dns为自己
R1需要添加一条主机记录,将www.r3.com翻译成192.168.13.3
R3手动配置地址,然后增加一条默认路由
ip route 192.168.12.0 255.255.255.0 192.168.13.1
R1的地址全部手动配置
R2的地址通过dhcp的方式获取
最终现象是在R2上ping www.r3.com能够ping通

步骤

  • 配置路由器地址

    1. R1(config)#int e0/0
    2. R1(config-if)#ip add 192.168.12.1 255.255.255.0
    3. R1(config-if)#no sh
    4. R1(config-if)#int e0/1
    5. R1(config-if)#ip add 192
    6. *Feb 1 07:28:01.664: %LINK-3-UPDOWN: Interface Ethernet0/0, changed state to up
    7. *Feb 1 07:28:02.670: %LINEPROTO-5-UPDOWN: Line protocol on Interface
    8. Ethernet0/0, changed state to up.
    9. R1(config-if)#ip add 192.168.13.1 255.255.255.0
    10. R1(config-if)#no sh
    11. R1(config-if)#int lo0
    12. R1(config-if)#ip add
    13. *Feb 1 07:28:12.133: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up
    14. R1(config-if)#ip add 1.1.1.1
    15. *Feb 1 07:28:13.082: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
    16. changed state to up
    17. *Feb 1 07:28:13.139: %LINEPROTO-5-UPDOWN: Line protocol on Interface
    18. Ethernet0/1, changed state to up
    19. R1(config-if)#ip add 1.1.1.1 255.255.255.0
    20. R2(config)#int e0/0
    21. R2(config-if)#ip add dhcp
    22. R2(config-if)#no sh
    23. R3(config)#int e0/0
    24. R3(config-if)#ip add 192.168.13.3 255.255.255.0
    25. R3(config-if)#no sh
  • 配置dns服务端

    1. R1(config)#ip dns server
    2. R1(config)#ip host www.r3.com 192.168.13.3
    3. R1(config)#ip name-server 1.1.1.1
    4. R1(config)#ip domain lookup
    5. R1(config)#do ping www.r3.com
    6. Type escape sequence to abort.
    7. Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
    8. .!!!!
    9. Success rate is 80 percent (4/5), round-trip min/avg/max = 1/4/6 ms
  • 配置dhcp

    1. R1(config)#ip dhcp pool cisco
    2. R1(dhcp-config)#network 192.168.12.0 /24
    3. R1(dhcp-config)#default-router 192.168.12.1
    4. R1(dhcp-config)#dns-server 1.1.1.1
    5. R1(config)#ip dhcp exclude 192.168.12.1
  • 在R3上配置默认路由

    1. R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.13.1
  • 在R2上配置默认路由, 开启域名解析并验证

    1. R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.1
    2. R2(config)#ip domain lookup
    3. R2(config)#do ping www.r3.com
    4. Translating "www.r3.com"...domain server (1.1.1.1) [OK]
    5. Type escape sequence to abort.
    6. Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
    7. !!!!!
    8. Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms