DNS

发布时间 2023-11-19 21:39:39作者: 一个低调的wy

DNS

1. 基本概念

/etc/named.conf配置文件

listen-on port 53 { 192.168.32.0/24; }; 表示谁可以使用该dns解析,可以有三种写法

  • listen-on port 53 { 192.168.32.0/24; }; # 直接写192.168.32.0/24的网段
  • listen-on port 53 { any; }; # any —— 任意网段,这种比较危险
  • // listen-on port 53 { 192.168.32.0/24; }; # 注释掉

allow-query { localhost; }; 表示权限,允许哪个用户使用dns解析

  • allow-query { localhost; 192.168.32.0/24; }; # 允许这个网段的用户使用该dns解析
  • allow-query { any; }; # 任何主机,这种比较危险
  • // allow-query { localhost; }; # 注释掉

各种资源记录

区域解析库:由众多资源记录RR(Resource Record)组成

name	  [TTL]		    IN			rr_type			 value
域名	   生命周期	  使用internet协议	记录类型:A  PTR		IP地址

记录类型:A AAAA PTR SOA NS CNAME MX

  • SOA start Of Authority 起始授权记录,一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,说明了在众多NS记录中哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA记录开始

  • NS(Name Server) NS记录,用于表示当前区域的DNS服务器,服务器类型为域名服务器

  • A(internet Address) A记录,正向域名解析,域名 -> IP地址

  • AAAA AAAA记录,IPv6

  • PTR(PoinTeR) PTR记录,反向解析,IP地址 -> 域名

  • CNAME(Canonical Name) 别名记录

  • MX(mali eXchanger) MX记录, 邮件交换器

  • TXT TXT记录,对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如SPF(反垃圾邮件)记录,https验证等

SOA与NS记录的区别:NS表示域名服务器记录,用来指定该域名由哪个DNS服务器来解析;SOA表示起始记录,记录了当前域名的基本信息,以及主从域名服务器之间同步的信息

/var/named/named.localhost配置文件

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        NS      master
master	A		192.168.32.50     
www		A		192.168.32.100  
ftp.wy.com	IN	CNAME	mail.wy.com


  • $TTL 1D: 生命周期,1天,全局配置

  • 第一个@:指代域名,wy.com

  • IN:表示使用internet协议解

  • SOA:表示起始记录,记录了当前域名的基本信息,和主从域名服务器之间同步的规定

  • 第二个@(或者wy.com.): 当前服务器的名称

  • rname.invalid. : 邮箱地址,邮箱rname与invalid之间应该用@,但是@被用掉了,@有其他含义了

db数据库中,一行行的数据表示记录;一列列的数据表示字段

  • 0 ; seria 版本号,表示是否更新,如果0变为1,表示数据库内容发生了改变,从域名服务器需要赶紧来跟主域名服务器更新数据,取值范围0-10
  • 1D ; refresh 刷新时间,拉取时间,有两种拉取方式:① 从服务器主动向主服务器拉取数据;② 主服务器主动给数据给从服务器
  • 1H ; retry 如果从服务器这次更新失败了,1个小时后再试一次
  • 1W ; expire 过期时间,如果从服务器老是拉取不了数据,1周以后过期
  • 3H ; minimum 如果有一个无聊的人老是来查找错误的解析地址,那么在3小时内,用户再查找直接返回找不到

固定格式

name [TTL] IN rr_type value

域名 缓存时间 internet记录 区域解析库 值

master A 192.168.32.50

域名 记录类型 IP地址

ftp.wy.com IN CNAME mail.wy.com

域名 internet记录 别名记录 别名的域名

注意事项

A记录中的IP地址可以随意设置

例如NS记录中有master,那么下面的A记录中也必须要有master记录

2. 实验

正向解析

目的(用途):将域名解析成IP地址

实验准备

  1. 一台主机

  2. 关闭防火墙、关闭核心防护

1. yum安装bind
[root@localhost ~]# rpm -q bind
未安装软件包 bind 
[root@localhost ~]# yum install -y bind*



2. 将网卡的DNS改为自己的建立的dns服务器的IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=114.114.114.114
# 改为以下dns
DNS1=192.168.32.11
[root@localhost ~]# systemctl restart network
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.32.11
[root@localhost ~]# 



3. 修改named的主配置文件 /etc/named.conf
[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { 192.168.32.0/24; };
        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; };
# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named
2)[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]#



4.修改named的区域配置文件 /etc/named.rfc1912.zones 
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "wy.com" IN {
        type master;          # 指定类型为主域名服务器
        file "wy.com.zone";   # 在named的家目录(/var/named)下必须有和该文件一样的文件名
};
# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named
2)[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]#



5. 进入到named的家目录中,利用“named.localhost”这个文件作为模板,cp -a一个和“wy.com.zone”同名的文件,并修改“wy.com.zone”文件的内容(注意“wy.com.zone”的权限必须和“named.localhost”的权限一致)
[root@localhost ~]# cd /var/named                           # 进入named的家目录
[root@localhost named]# cp -a named.localhost wy.com.zone   # 保留权限复制文件,并改为名“wy.com.zone”
[root@localhost named]# ll
总用量 20
drwxr-x--- 7 root  named   61 11月 14 11:39 chroot
drwxr-x--- 7 root  named   61 11月 14 11:39 chroot_sdb
drwxrwx--- 2 named named   23 11月 14 13:59 data
drwxrwx--- 2 named named   60 11月 14 14:04 dynamic
drwxrwx--- 2 root  named    6 4月   1 2020 dyndb-ldap
-rw-r----- 1 root  named 2253 4月   5 2018 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
drwxrwx--- 2 named named    6 10月 16 21:26 slaves
-rw-r----- 1 root  named  152 6月  21 2007 wy.com.zone
[root@localhost named]# vim /var/named/wy.com.zone       # 修改wy.com.zone配置文件
$TTL 1D
@       IN SOA  master rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.32.50
www     A       192.168.32.100
[root@localhost ~]# systemctl restart named
# 重启named



6. host 域名  查看域名是否能解析成IP地址
[root@localhost named]# host www.wy.com
www.wy.com has address 192.168.32.100
[root@localhost named]# 



*  泛域名
@  不需要输入主机名
[root@localhost named]# vim /var/named/wy.com.zone  
www     A       192.168.32.100
[root@localhost ~]# host wwwwwww.wy.com
wwwwwww.wy.com has address 192.168.32.100
# *泛域名起作用,当我们主机名输入不正确,多输或少输,都应该不影响我解析该域名

[root@localhost ~]# host wy.com
wy.com has address 192.168.32.100
# @起作用,可以让我们不输入主机名也可以正确解析出域名

反向解析

目的(用途):将IP地址解析成域名


主从复制

目的:高可用,防止主域名服务器瘫痪

实验准备

  1. 两台主机 192.168.32.11(主域名服务器) 192.168.32.12(从域名服务器)

  2. 关闭防火墙、关闭核心防护

1. yum安装bind
[root@localhost ~]# rpm -q bind
未安装软件包 bind 
[root@localhost ~]# yum install -y bind*



2. 将两台主机的网卡DNS改为自己的建立的dns服务器的IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=114.114.114.114
# 改为以下dns
DNS1=192.168.32.11
[root@localhost ~]# systemctl restart network
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.32.11
[root@localhost ~]# 



3. 修改两台主机的named的主配置文件 /etc/named.conf
[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { any; };
        allow-query     { any; };
# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named   # 关机,重启
2)[root@localhost ~]# rndc reload     # 不关机,重启
server reload successful
[root@localhost ~]#



4.修改两台主机的named的区域配置文件 /etc/named.rfc1912.zones 
主机ip:11
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "wy.com" IN {
        type master;          # 指定类型为主域名服务器
        file "wy.com.zone";   # 在named的家目录(/var/named)下必须有和该文件一样的文件名
        allow-transfer {192.168.32.12;};  # 允许192.168.32.12IP地址通过
};

# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named    # 关机,重启
2)[root@localhost ~]# rndc reload       # 不关机,重启
server reload successful
[root@localhost ~]#


主机ip:12
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "wy.com" IN {
        type slave;          # 指定类型为主域名服务器
        file "slaves/wy.com.zone"; 
        masters {192.168.32.11;};
};

# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named   # 关机,重启
2)[root@localhost ~]# rndc reload    # 不关机,重启
server reload successful
[root@localhost ~]#



5. 主机11,进入到named的家目录中
利用“named.localhost”这个文件作为模板,cp -a一个和“wy.com.zone”同名的文件
并修改“wy.com.zone”文件的内容
(注意“wy.com.zone”的权限必须和“named.localhost”的权限一致)
[root@localhost ~]# cd /var/named                           # 进入named的家目录
[root@localhost named]# cp -a named.localhost wy.com.zone   # 保留权限复制文件,并改为名“wy.com.zone”
[root@localhost named]# vim wy.com.zone 
$TTL 1D
@       IN SOA  master rname.invalid. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
        NS      slave
slave   A       192.168.32.51
master  A       192.168.32.50
www     A       192.168.32.100
# 检查配置文件是否有问题
1)[root@localhost ~]# systemctl restart named   # 关机,重启
2)[root@localhost ~]# rndc reload    # 不关机,重启
server reload successful
[root@localhost ~]#


6. 主机12测试结果
[root@localhost ~]# systemctl restart named   # 关机,重启
[root@localhost ~]# cd /var/named/slaves
[root@localhost slaves]# ls
wy.com.zone
[root@localhost slaves]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.32.11
[root@localhost slaves]# echo "nameserver 192.168.32.12" > /etc/resolv.conf
[root@localhost slaves]# cat /etc/resolv.conf
nameserver 192.168.32.12    # 使用从服务器的dns还是可以解析出结果,说明从服务器复制了主服务器的数据库数据
[root@localhost ~]# host www.wy.com
www.wy.com has address 192.168.32.100
[root@localhost ~]# 




分离解析

目的:不同网段的主机输入同样的域名,根据主机IP地址的不同,解析的结果也不同