千家信息网

理论 :DNS域名解析服务-——理论讲解

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,前言:BIND域名服务基础DNS系统的作用及类型BIND的安装和配置文件使用BIND构建域名服务器构建缓存域名服务器构建主、从域名服务器重点步骤:找主配置文件,找启动脚本一: DNS系统的作用1.1
千家信息网最后更新 2024年11月25日理论 :DNS域名解析服务-——理论讲解

前言:

  • BIND域名服务基础
    • DNS系统的作用及类型
    • BIND的安装和配置文件
  • 使用BIND构建域名服务器
    • 构建缓存域名服务器
    • 构建主、从域名服务器

重点步骤:找主配置文件,找启动脚本

一: DNS系统的作用

1.1 正向解析:根据主机名称(域名)查找对应的IP地址

1.2 反向解析:根据IP地址查找对应的主机域名

ip解析域名,多用于测试

1.3 DNS系统的分布式数据结构

www.sina.com.cn. 最后一个点是根,整体就是完全合格域名

www是主机名称,sina二级域名,com.cn是顶级域名 .是根

二 : DNS系统类型

2.1 缓存域名服务器

  • 也称为高速缓存服务器
  • 通过向其他域名服务器查询获得域名->IP地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

在服务安装完毕时,就是缓存服务器

2.2 主域名服务器(master)

  • master主服务器
  • 特定DNS区域的官方服务器,具有唯一性
  • 负责维护该区域内所有域名->IP地址的映射记录

2.3 从域名服务器(slave)

  • slave 服务器
  • 也称为辅助域名服务器
  • 其维护的域名->IP地址记录,来源于主域名服务器

三 : BIND 域名服务

3.1 BIND服务简述

  • BIND(Berkeley Internet Name Daemon)
    • 伯克利Internet域名服务
  • 相关软件包
    • bind-9.9.4-37.el7.x86_64.rpm
    • bind-untils-9.9.4-37.el7.x86_64.rpm
    • bind-libs-9.9.4-37.el7.x86_64.rpm
    • bind-chroot-9.9.4-37.el7.x86_64.rpm

3.2 BIND 域名服务端程序

  • 主要执行程序: /usr/sbin/named
  • 默认监听端口:53 TCP负责连接控制,UDP负责快速解析
  • 主配置文件: /etc/bind/named.conf
  • 保存DNS解析记录的数据文件位于 /var/named/

3.3 BIND域名服务程序主配置文件/etc/bind/named.conf

全局配置部分

  • 设置DNS服务器的全局参数
  • 包括监听地址/端口、数据文件的默认位置等
  • 使用options { ..... };的配置段
[root@localhost ~]# vim /etc/named.confoptions {       '选项'        listen-on port 53 { any; }; '监听地址所有'        listen-on-v6 port 53 { ::1; };        directory       "/var/named";   '目录在/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     { 192.168.10.0/24; };       '允许此网段前来解析'

区域配置部分 /etc/named.rfc1912.zones

  • 设置本服务器提供域名解析的特定DNS区域
  • 包括域名、服务器角色、数据文件名等
  • 使用zone "区域名" IN { ...... }; 的配置段
#正向解析zone "localhost" IN {       '主机名,例kgc.com'        type master;    'master类型,主服务器'        file "named.localhost";     '区域数据文件名,A记录,可以解析主机头,'        allow-update { none; };     '允许更新'        allow-transfer { 173.16.16.2 }  '从服务器的IP地址'};  #反向解析zone "16.16.173.in-addr.arpa" IN {      'ip地址反写'        type master;            '主服务器'        file "named.loopback";      '区域配置文件名'        allow-update { none; };     '允许更新'};

16.16.173.in-addr.arpa 是ip地址的反写 正写是'173.16.16.?',?作为一个选项

3.4 区域数据配置文件(A记录) 在区域配置选项中file "*"

3.4.1 全局TTL配置项及SOA记录 /var/named/目录下

  • $TTL (Time To Live, 生存时间)记录
  • SOA (Start Of Authority,授权信息开始)记录
  • 分号";"开始的部分表示注释信息
$TTL 1D     '有效解析记录的生命周期'@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'                                        0       ; serial                                            '更新序列号,可以是10位以内的整数,当前0'                                        1D      ; refresh                                           '刷新时间,重新下载地址数据的间隔,1天'                                        1H      ; retry                                         '重试延时,下载失败后的重试间隔,1小时'                                        1W      ; expire                                            '失效时间,超过改时间仍无法下载则放弃,1周'                                        3H )    ; minimum                                           '无效解析记录的生存周期 3小时'        NS      @   '@指自己'        A       127.0.0.1   '回环地址,此行的首位没写,默认是自己的主机名,即输入自己的主机名就是在ping自己'        AAAA    ::1~                       

若是找不到主服务器,就会每1小时找一次,持续1w即一周

3.4.2 域名解析记录

  • NS域名服务器(Name Server)记录
  • MX邮件交换(Mail Exchange)记录
  • A地址(address)记录,只用在正向解析区域中
  • CNAME 别名 (Canonical Name)记录
$TTL 1D     '有效解析记录的生命周期'@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'                                        0       ; serial                                            '更新序列号,可以是10位以内的整数,当前0'                                        1D      ; refresh                                           '刷新时间,重新下载地址数据的间隔,1天'                                        1H      ; retry                                         '重试延时,下载失败后的重试间隔,1小时'                                        1W      ; expire                                            '失效时间,超过改时间仍无法下载则放弃,1周'                                        3H )    ; minimum                                           '无效解析记录的生存周期 3小时'        NS      @               A       127.0.0.1        AAAA    ::1@   IN  NS  ns1.bdqn.com.   '自己的域名叫做ns1.bdqn.com.'    IN  MX 10   mail.bdqn.com.  '自己的邮件交换系统优先级别10的叫做mail.bdqn.com.'ns1 IN  A   58.119.74.203   '主机名即主机头为ns1时,对应的ip地址58.119.74.203'www IN  A   173.16.16.1     '主机名为www时,对应的ip地址为为173.16.16.1'mail    IN  A   173.16.16.4 ftp IN  CNAME   www 'cname,别名,即输入ftp相当于输入www'~                   

3.5 实验 :正向解析搭建

[root@dns named]# rpm -qc bind      '查看已安装bind软件的配置文件'/etc/logrotate.d/named/etc/named.conf/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@dns named]# 
[root@dns named]# vim /etc/named.conf   '配置主配置文件'options {        listen-on port 53 { any; }; '监听地址修改为所有'        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     { any; };   '允许所有主机前来解析'        /* 
[root@dns named]# vim /etc/named.conf   '配置主配置文件'zone "." IN {   '根域,不要去动它'        type hint;        file "named.ca";};include "/etc/named.rfc1912.zones";     '区域配置文件,接下来要配置它'include "/etc/named.root.key";
[root@dns named]# cd /var/named '去看一眼默认文件存放路径'[root@dns named]# lschroot      data     dyndb-ldap     kgc.com.zone  named.empty      named.loopbackchroot_sdb  dynamic  kgc.com.local  named.ca      named.localhost  slaves[root@dns named]# vim /etc/named.rfc1912.zones  '配置区域配置文件'

以ipv6反向解析zone为界限,上面的是正向解析zone,下面是反向解析zone

zone "kgc.com" IN {         '创建一个kgc.com正向解析区域'        type master;        file "kgc.com.zone";            '存放文件在默认目录/var/named下,名为kgc.com.zone文件,若是没有需要自己创建'        allow-update { none; };}; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {        type master;        file "named.loopback";        allow-update { none; };};zone "0.0.10.in-addr.arpa" IN {        type master;        file "kgc.com.local";        allow-update { none; };};
[root@dns named]# cp -p named.localhost kgc.com.zone                    '保留权限复制模板,重命名为kgc.com.zone'[root@dns named]# vim kgc.com.zone  ''修改区域数据,$TTL 1D@       IN SOA  @ rname.invalid. (                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      kgc.com.        A       127.0.0.1  IN    MX 5    mail.kgc.com.mail IN A       10.10.10.10www IN A        9.9.9.9ftp IN CNAME    www* IN A  8.8.8.8

@ 代表变量,在这里指域名

此时DNS的正向解析已经配置完毕

[root@dns named]# systemctl start named     '启动服务'[root@dns named]# netstat -natp |grep named     '查看端口状态-n 数字 -a 所有 -t tcp -p protocol 协议'tcp        0      0 192.168.139.132:53      0.0.0.0:*               LISTEN      40771/named         tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      40771/named         tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      40771/named         tcp6       0      0 ::1:53                  :::*                    LISTEN      40771/named         tcp6       0      0 ::1:953                 :::*                    LISTEN      40771/named         [root@dns named]# netstat -naup |grep named     '-u udp'udp        0      0 192.168.139.132:53      0.0.0.0:*                           40771/named         udp        0      0 127.0.0.1:53            0.0.0.0:*                           40771/named         udp        0      0 192.168.122.1:53        0.0.0.0:*                           40771/named         udp6       0      0 ::1:53                  :::*                                40771/named  
[root@dns named]# systemctl stop firewalld      '关闭防火墙'[root@dns named]# setenforce 0      '关闭安全增强服务'

验证一下

新建一台虚拟机,网卡模式也设置为nat模式,然后指定dns

C:\Users\GSY>nslookup mail.kgc.com服务器:  UnKnownAddress:  192.168.139.132名称:    mail.kgc.comAddress:  10.10.10.10C:\Users\GSY>nslookup qqq.kgc.com服务器:  UnKnownAddress:  192.168.139.132DNS request timed out.    timeout was 2 seconds.名称:    qqq.kgc.comAddress:  123.123.123.123
'也可以在本机的/etc/resolv.conf内输入dns服务器名,告诉主机dns的位置,进行本地验证 '[root@dns named]# echo "nameserver 192.168.139.132" > /etc/resolv.conf[root@dns named]# nslookup www.kgc.comServer:     192.168.139.132Address:    192.168.139.132#53Name:   www.kgc.comAddress: 10.0.0.10

3.6 反向域名解析记录 PTR

3.6.1 域名解析记录

  • PTR指针(Point)记录,只用在反向解析区域中
  • 记录的第一列指定IP地址中的主机地址部分即可
14 IN   PTR     www.kgc.com.13 IN PTR       ftp.kgc.com.

反向解析的区域数据文件配置

[root@dns named]# cp -p named.loopback kgc.com.local    '创建的文件名与区域反向解析配置的文件名一致'[root@dns named]# vim kgc.com.local$TTL 1D@       IN SOA  kgc.com. admin.kgc.com. (                                        0       ; serial                                        1D      ; refresh                                        1H      ; retry                                        1W      ; expire                                        3H )    ; minimum        NS      kgc.com.        A       14.0.0.1414 IN   PTR     www.kgc.com.13 IN PTR       ftp.kgc.com.2 IN PTR        WWW.GSYDSG.com.~                             

测试 nslookup 或者host都可以

[root@dns named]# systemctl restart named[root@dns named]# nslookup 14.0.0.2     '因为在配置文件中是大写的WWW,所以不是域名='2.0.0.14.in-addr.arpa   name = WWW.GSYDSG.com.[root@dns named]# host 14.0.0.1414.0.0.14.in-addr.arpa domain name pointer www.kgc.com.[root@dns named]# host 14.0.0.1313.0.0.14.in-addr.arpa domain name pointer ftp.kgc.com.[root@dns named]# 

3.7 区域数据配置文件的特殊应用--泛域名解析

3.7.1 基于域名解析的负载均衡

  • 同一域名对应到多个IP地址

3.7.2 泛域名解析

  • 找不到精确对应的A记录时,使用"*"进行匹配
www IN A        9.9.9.9www     IN      A       7.7.7.7www     IN      A       6.6.6.6* IN A  8.8.8.8

验证同一域名对应到多个IP地址

C:\Users\GSY>nslookup www.kgc.com服务器:  UnKnownAddress:  192.168.139.132DNS request timed out.    timeout was 2 seconds.名称:    www.kgc.comAddresses:  6.6.6.6          7.7.7.7          9.9.9.9

3.8 对配置文件进行语法检查 named-checkconf

3.8.1 named-checkconf 工具

[root@dns named]# named-checkconf /etc/named.conf[root@dns named]# named-checkconf /etc/named.rfc1912.zones 

没啥反应,因为是正常运转的,我把里面的数据改错验证一下

zoe "kgc.com" IN {      '去掉个字母'        type master;        file "kgc.com.zone";        allow-update { none; };};
[root@dns named]# named-checkconf /etc/named.rfc1912.zones /etc/named.rfc1912.zones:13: unknown option 'zoe'

错误改回来

[root@dns named]# named-checkconf -z  /etc/named.rfc1912.zones zone kgc.com/IN: loaded serial 0zone localhost/IN: loaded serial 0zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0zone 0.0.14.in-addr.arpa/IN: loaded serial 0zone 0.in-addr.arpa/IN: loaded serial 0

-z 选项,还会查看其中的zone项是否有误

不带-z选项,只查看整体的语法

3.8.2 named-checkzone 工具

[root@dns named]# named-checkzone kgc.com /var/named/kgc.com.zone zone kgc.com/IN: loaded serial 0OK

3.9 实验 :构建缓存域名服务器

3.10 构建主、从域名服务器

slave 从服务器

总结

使用dns域名解析服务

先管关掉防火墙再说

1.需要安装bind*软件

主配置文件/etc/bind/named.conf

数据文件 /var/named

程序 /usr/sbin/named

2.全局配置文件配置 /etc/named.conf

options {       '众多选项'        listen-on port 53 { 127.0.0.1; };   '监听此地址'        listen-on-v6 port 53 { ::1; };        directory       "/var/named";   '默认目录在/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; };     '允许此主机名前来解析'

3.区域配置文件 /etc/named.rfc1912.zones

#正向解析zone "localhost" IN {       "主机名"        type master;    'master类型,主服务器'        file "named.localhost";     '区域数据文件名,A记录,可以解析主机头'        allow-update { none; };     '允许更新'        allow-transfer { 173.16.16.2 }; '从服务器的IP地址'};  zone "localhost" IN {       "主机名"        type slave; 'slave类型,从服务器'        file "slaves/bdqn.com.zone";        allow-update { none; };     '允许更新'        masters { 192.168.10.10; }; '主服务器的IP地址'};#反向解析zone "16.16.173.in-addr.arpa" IN {      'ip地址反写'        type master;            '主服务器'        file "named.loopback";      '区域配置文件名'        allow-update { none; };     '允许更新'};

3.区域数据文件 /var/named/目录下

以其中的named.localhost为模板带权限复制,名字改为区域配置文件中file参数的名字

$TTL 1D     '有效解析记录的生命周期'@       IN SOA  @ rname.invalid. (      'SOA标记、@域名、管理者邮箱'                                        0       ; serial                                            '更新序列号,可以是10位以内的整数,当前0'                                        1D      ; refresh                                           '刷新时间,重新下载地址数据的间隔,1天'                                        1H      ; retry                                         '重试延时,下载失败后的重试间隔,1小时'                                        1W      ; expire                                            '失效时间,超过改时间仍无法下载则放弃,1周'                                        3H )    ; minimum                                           '无效解析记录的生存周期 3小时'        NS      @               A       127.0.0.1        AAAA    ::1@   IN  NS  ns1.bdqn.com.    IN  MX 10   mail.bdqn.com.mail    IN  A   173.16.16.4ns1 IN  A   58.119.74.203ftp IN  CNAME   wwwwww IN  A   173.16.16.1

nslookup可以去检验

可以在/etc/hosts 和/etc/resolv.conf文件中输入dns服务器主机名

并确认,用以快速访问dns地址

0