DNS域名解析服务

164 阅读3分钟

DNS概述

DNS(Domain Name System)是互联网中用于将域名转换为对应IP地址的分布式命名系统。

为什么会有DNS

IP地址不便于记忆,DNS使用户可以通过易记的域名快速访问各种网络资源。

域名结构

以www.example.com为例
.com是一级域名
example是二级域名
www是主机名
#主机名用于标识特定的设备或计算机,而子域名用于对主域名下的特定部分进行分类或组织

域名解析类型

  • A记录:将域名解析为IPv4地址。
  • AAAA记录:将域名解析为IPv6地址。
  • CNAME记录:将域名解析为另一个域名,可用于创建别名。
  • MX记录:指定接收某域名邮件的邮件服务器地址。
  • NS记录:指定管理域名解析的权威域名服务器。
  • PTR记录:用于反向解析,将IP地址解析为域名。

本地host文件位置

/etc/hosts

DNS架构

  • 根域 使用“.”表示,位于域命名空间层次结构的最高层; 在根域服务器中只保存了其下层的一级域的DNS服务器名称和IP地址对应关系;
  • 顶级域/一级域 顶级域位于根域下层,可以分为两类: 组织域(.com,.net,.org,.gov,.edu,.mil等) 国家域(.iq,.tw,.hk,.jp,.cn等);
  • 二级域 二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
  • 子域 子域是根据具体情况从二级域中按部门或地理位置创建;
  • 主机名 位于DNS域命名空间的最低层,主要指计算机的主机名;

查询方式

  • 正向解析:由域名查找IP地址;
  • 反向解析:由IP地址查找域名;

原理详解

  1. 用户所要查找的域名,程序会发送域名解析请求
  2. 先查询本地DNS缓存,如果有解析历史就直接访问
  3. 如果没有本地DNS缓存,就在hosts文件中查找相关配置,如果有相关配置就直接访问
  4. 如果hosts文件中没有相关配置,会向本地DNS服务器发送递归查询,等待反馈
  5. 本地DNS服务器先检查本地DNS缓存,如果有缓存直接访问,没有缓存就发起迭代查询
  6. 迭代查询会先向根域服务器发起请求,然后找到一级域服务器
  7. 再向一级域服务器发送迭代请求,找到二级域服务器
  8. 本地DNS服务器会一直发起迭代查询,直到找到权威服务器并发起递归查询,等待权威服务器反馈对应IP地址
  9. 本地DNS服务器将IP地址反馈给程序,递归查询结束

bind服务端程序

什么是bind

BIND是DNS服务器软件。

BIND 服务器可以提供域名解析服务,能够接收客户端的 DNS 查询请求,并返回相应的 IP 地址。

安装DNS服务程序

[root@localhost ~]# yum -y install bind bind-utlis

查询DNS配置文件路径

[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf                 #DNS配置文件路径
/etc/named.iscdlv.key
/etc/named.rfc1912.zones        #域名文件路径
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost      #数据库文件示例存放路径
/var/named/named.loopback
​

配置文件格式

[root@localhost ~]# vim /etc/named.conf 
options {
//        listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//        allow-query     { localhost; };
​

域名文件格式

[root@localhost ~]# vim /etc/named.rfc1912.zones 
10 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 11 //
 12 
 13 zone "hzw.com" IN {
 14         type master;
 15         file "hzw.com.zone";
​

数据库文件格式

[root@localhost ~]# cp -p /var/named/named.localhost /etc/named.conf 
cp:是否覆盖"/etc/named.conf"? y
$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.137.101
www     A       192.168.137.105
​
​

配置网卡配置

vim /etc/sysconfig/network-scripts/ifcfg-ens33  #编辑网卡配置
​
systemctl restart network #重启网络服务

开启服务

systemctl start named
​
host master.hzw.com