DNS的诞生背景

早期的网络,我们都是通过IP来访问网络资源
随着网络不断发展,规模逐渐庞大起来,点分十进制的IP地址难以记忆
为了将IP地址变得跟容易记忆,于是繁衍出了DNS
不易记忆

Hosts

在早期网络中只有几百台主机,他们使用一个叫hosts的文件,来实现主机名与IP地址之间的映射,我们最常见的localhost其实就是我们的127.0.0.1
Hosts
但是网络规模越大,手动添加进hosts的配置就会越来越麻烦
维护起来更是一件要命的事情

DNS简介

为了解决Hosts维护困难的问题,上世纪80年代IETF发布了DNS域名系统(Domain Name System)
该系统采用C/S架构,用于域名和IP地址的互相解析
工作在应用层,使用的传输协议是TCP、UDP,服务端口号%3

域名

域名采用的是树型层次结构化
结构树
域名的根域以"."结尾表示符合FQDN(FullQualified Domain Name)
例如我博客www.breezecloud.cn
cn是我的顶级域名,breezecloud是我的二级域名,www则表示为二级域名中的主机,每一级的域名都由英文字母和数字组成,域名不区分大小写,但是长度不能超过 63 字节,一个完整的域名不能超过 255 个字节
有几个特殊的域名需要了解一下

  • 国家顶级域名:
    采用ISO3166规定,.CN表示中国,.US表示美国,.UK表示英国
  • 国际顶级域名:
    .INT结尾的都是国际顶级域名,国际性组织使用
  • 通用顶级域名:
    最早最常用的有6个.COM表示企业公司,.ORG表示非盈利组织,.GOV表示政府部门或机构(只有美国能用,国内用gov作为二级域名来表示,例如:www.gov.cn),.EDU表示交于机构(也仅限美国使用,国内同样采用二级域名).AERO用于航空运输业,.BIZ用于企业公司,还有更多的通用顶级域名各位自行查阅文献

DNS解析流程

解析

  • 第1步:
    DNS 客户端向本地域名服务器发送请求,查询 www.h3c.com.cn 主机的 IP 地址
  • 第2步:
    本地域名服务器检查其数据库,发现数据库中没有域名为 www.h3c.com.cn 的主机,于是将此请求发送给根域名服务器
  • 第3步:
    根域名服务器查询其数据库,发现没有该主机记录,但是根域名服务器知道能够解析该域名的 cn 域名服务器的地址,于是将 cn 域名服务器的地址返回给本地域名服务器
  • 第4步:
    本地域名服务器向 cn 域名服务器查询 www.h3c.com.cn 主机的 IP 地址
  • 第5步:
    cn 域名服务器查询其数据库,发现没有该主机记录,但是 cn 域名服务器知道能够解析该域名的 com.cn 域名服务器的地址,于是将 com.cn 的域名服务器的地址返回给本地域名服务器
  • 第6步:
    本地域名服务器再向 com.cn 域名服务器查询 www.h3c.com.cn 主机 IP 地址
  • 第7步:
    com.cn 域名服务器查询其数据库,发现没有该主机记录,但是 com.cn 域名服务器知道能够解析该域名的 h3c.com.cn 域名服务器的 IP 地址,于是将 h3c.com.cn 的域名服务器的 IP 地址返回给本地域名服务器
  • 第8步:
    本地域名服务器向 h3c.com.cn 域名服务器发送查询 www.h3c.com.cn 主机的 IP地址请求
  • 第9步:
    h3c.com.cn 域名服务器查询其数据库,发现有该主机记录,于是给本地域名服务器返回“www.h3c.com.cn”所对应的 IP 地址
  • 第10步:
    最后本地域名服务器将 www.h3c.com.cn 的 IP 地址返回给客户端。至此,整个解析过程完成

简单的来说分为四步

  1. 检查域名是否是本机域名
  2. 检查本地的DNS缓存
  3. 检查本机的hosts文件 C:\windows\system32\drivers\etc
  4. 查询DNS服务器
    ipconfig /displaydns 查看本机DNS缓存
    ipconfig /flushdns 清空本机DNS缓存

DNS 的查询方式

三种查询方式递归查询迭代查询反向查询

递归查询

递归查询
DNS 服务器如果不能直接回应解析请求,它将以 DNS 客户端的方式继续请求其他 DNS 服务器,直到查询到该主机的域名解析结果

迭代查询

迭代查询
服务器查不到相应的记录,会向客户端返回一个可能知道结果的
域名服务器地址,由客户端继续向新的服务器发送查询请求

反向查询

反向查询
客户端希望知道域名所对应的 IP 地址,这种查询我们称为正向查询,大部分的 DNS 查询都是正向查询
而反向查询,它允许 DNS 客户端根据已知的 IP 地址查找主机所对应的域名

华三设备实现DNS功能

目前能实现以下三种功能:静态解析动态解析DNS代理

静态解析

手动在设备上建立域名和IP地址之间的对应关系,有点像hosts

动态域名解析

动态域名解析就是由设备查询 DNS 域名服务器,由 DNS 域名服务器完成解析

DNS代理

DNS 代理(DNS proxy)用来在 DNS 客户端和 DNS 服务器之间转发 DNS 请求和应答报文,代替 DNS 客户端进行域名解析
和后面要将的DHCP中继代理原理差不多

相关配置

静态与动态的配置
/*配置静态域名解析表中主机名和对应IPv4地址*/
[Router] ip host [hostname] [ip-address] [ vpn-instance vpn-instance-name ]
/*配置指定域名服务器的IPv4地址*/
[Router] dns server [ip-address] [ vpn-instance vpninstance-name ]
/*配置域名后缀*/
[Router] dns domain [domain-name] [ vpn-instance vpn-instance-name]
DNS代理配置
/*开机DNS代理功能*/
[Router] dns proxy enable
/*设置指定的域名服务器地址*/
[Router] dns server [ip-address] [ vpn-instance vpninstance-name ]
常用的维护命令
/*显示静态域名解析表*/
[Router] display ip host [ ip | ipv6 ] [ vpn-instance vpn-instance-name ]
/*显示域名服务器的IPv4地址信息*/
[Router] display dns server [ dynamic ] [ vpninstance vpn-instance-name ]
/*显示域名后缀信息*/
[Router] display dns domain [ dynamic ] [ vpninstance vpn-instance-name ]