您现在的位置是:首页 >技术教程 >Linux DNS服务网站首页技术教程

Linux DNS服务

低温热源 2023-06-02 08:00:03
简介Linux DNS服务

 DNS

作用

DNS是 域名系统 的英文缩写,作为将域名与IP地址相互映射的一个分布式数据库,让人可以通过域名访问互联网

  • 正向解析 将域名解析为IP
  • 反向解析 根据IP查找对应域名

域名结构

http://www.sina.com.cn./

http://主机名.子域.二级域.顶级域.根域 /

每一级的域名长度限制63字符,总长度不能超过253字符

根据域名查看网站ip

nslookup www.naidu.com
host www.naidu.com
dig www.naidu.com

DNS端口

  • TCP 53         用于连接DNS服务器
  • UDP 53         用于解析地址

DNS系统的分布式数据结构

根域                                     域名空间顶层,用“ . ”表示

顶级域                                 一般代表组织机构或国家

二级域                                 标明顶级域内的一个特定的组织(可有可无)

子域                                     二级域下创建的各级域统称为子域

主机名                                 位于域名空间最底层,具体的计算机。

DNS解析过程(面试常问)

解析过程分迭代模式和递归模式。

迭代查询较为常用,因为他不像递归查询一样容易占用上层域服务器的资源

递归模式解析过程:

客户端发出请求 查找本地缓存域服务器,若没有

将相关请求转发给根域服务器解析,

根域服务器将请求转发给相应顶级域服务器,

顶级域服务器再转发给二级域服务器,

二级域服务器再转发给子域服务器,根据主机名解析出ip地址,

逐层返回给客户端,客户端即可使用ip地址访问对方主机。

同时本地缓存域服务器记录对应关系,以便下一次的访问。

迭代模式解析过程:

客户端发出请求 查找本地缓存域服务器,若没有

向根域服务器发送解析请求,返回顶级域服务器地址

向顶级域服务器发送解析请求,返回二级域服务器地址

向二级域服务器发送解析请求,返回子域服务器地址

向子域服务器发送解析请求,解析出IP地址并返回结果给本地缓存域服务器

本地缓存域服务器返回结果给客户端,并且记录对应关系,以便下一次的访问

DNS服务器类型

主域名服务器

负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
从域名服务器

当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
缓存域名服务器

只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名顺务器查询的结果,并放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
转发域名服务器

负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。

设置DNS服务器地址

  • Linux系统

    • vim /etc/resolv.conf → nameserver IP   (直接保存生效)
    • /etc/sysconfig/network-scripts/ifcfg-ens33   (需要重启)
  • windows系统

    • 网卡适配器→属性→ipv4→DNS服务器地址

本地host文件映射

hosts文件映射 更快 优先级更高

但是 hosts文件 只对本机有效,所以集群管理时 DNS解析 更方便

优先选择本地hosts文件映射,然后才是网络请求DNS服务器

  • Linux系统

    • 更改/etc/hosts 本地映射      [IP 域名1 域名2 ...]
  • windows系统

    • 更改C:/windows/system32/drivers/etc/hosts




DNS服务器搭建

安装bind软件包

yum install -y bind 

配置正向解析

查看需要修改的配置文件的路径

rpm -qc bind                #查询bind软件配置文件所在路径
/etc/named.conf                #主配置文件
/etc/named.rfc1912.zones       #区域配置文件
/var/named/named.localhost     #区域数据文件,在rfc1912文件中可自由指定位置,对应即可

1.修改主配置文件(修改监听端口 允许解析的主机)

注意格式!地址后要;并且加一个空格!!!

vim /etc/named.conf

options {
        listen-on port 53 { 192.168.80.101; };  #✨监听53端口 IP地址填入网卡地址 也可any表示所有
        #listen-on-v6 port 53 { ::1; };          #ipv6设置 不用可以注释掉
        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"; #内存统计文件的位置
        allow-query     { 192.168.80.101/24; 172.16.100.0/24; }; #✨允许使用本DNS解析服务的网段 也可any表示所有
        recursion yes;      #递归查询
..............................................

zone "." IN {                #正向解析 . 根区域
        type hint;           #类型为根区域
        file "named.ca";     #区域数据文件为named.ca 记录了13台根域服务器的域名与IP 
};    #此条定义了一个根域,文件位于named.ca

include "/etc/named.rfc1912.zones";  #引入区域配置文件里的所有配置,为了方便管理不写在一起

2.修改区域配置文件(修改需要解析的域名和其数据文件位置)

vim /etc/named.rfc1912.zones

zone "xue.com" IN {                 #✨设置域名 正向解析xue.com区域
        type master;                #✨设置为主域名服务器
        file "xue.com.zone";        #✨设置区域数据文件存放位置
        allow-update { none; };
};
systemctl restart named

3.修改区域数据文件(记录域名与IP对应关系 主从域服务器设置)

复制一定要带上文件权限!这个文件的属主是named!不带权限复制会出错!

cd /var/named/
cp -p named.localhost xue.com.zone   #保留源文件的权限和属主的属性复制
cp -a named.localhost xue.com.zone   #-a 比-p功能更全 相当于组合选项

注意配置文件中域名后都有个 . 若缺少会导致失效!

vim /var/named/xue.com.zone

$TTL 1D        #有效解析记录的生存周期 1天
@       IN SOA  @ mailbox.xue.com. (    #等同下条
@       IN SOA  xue.com. admin.xue.com. (   #✨邮箱(管理员地址)为admin@xue.com 但是@指代当前域名,用 . 代替
    #“@"符号表示当前的DNS区域名,如果仅是正向解析不用改,可用xue.com.替代 
    #SOA用于同步主从服务器区域数据 
    #mailbox.xue.com为域名的邮箱名

                   #此段只需要关注serial序列号主从不能一样,其他一般默认
                   20230419       ; serial #✨更新序列号,可以是 10 位以内的整数,主从不能一样
                   1D      ; refresh  #刷新时间,重新下载地址数据的间隔,1天
                   1H      ; retry    #重试延时,下载失败后的重试间隔 1小时
                   1W      ; expire   #失效时间,超过该时间仍无法下载则放弃 1周
                   3H )    ; minimum  #无效解析记录的生存周期 3小时
        
        NS      @      #与下一条同义,@代表当前域名
        NS      xue.com.            #✨记录当前区域的DNS服务器的名称
        A       192.168.80.101      #✨记录主机IPv4地址
        #AAAA    ::1                #记录主机IPv6地址,此处不用ipv6,注释掉
IN   MX 10      mail.xue.com.       #Mx为邮件交换记录,数字越大优先级越低,通过域名找到邮件服务器
www  IN A       192.168.80.33       #✨IN A代表正向解析 记录www.xue.com对应的IP
mail IN A       192.168.80.66       #✨IN A代表正向解析 记录mail.xue.com对应的IP
ftp  IN CNAME   www                 #✨CNAME使用别名,ftp是www的别名,解析为www相同IP
*    IN A       192.168.80.222      #✨泛域名解析,*代表任意主机名,除了上方设置的以外的主机名全部解析为此IP

注意@位置,可以填域名也可以用@指代

 

启动DNS服务

systemctl start named      
#软件名为bind,服务名为named

netstat -lntup | grep :53
#验证端口
journalctl -xe
vim /var/log/messages   #按 G 到底

#若报错查看日志

 关闭防火墙

systemctl stop firewalld
setenforce 0

修改客户机DNS服务器地址 

客户机DNS服务器地址为刚刚配置的地址

vim /etc/resolv.conf             #DNS配置文件中指定服务器地址
     nameserver 192.168.80.101    

DNS配置文件路径vim /etc/resolv.conf  (面试会问)

验证

此时成功获取到刚刚设置的域名与ip映射关系

配置反向解析(很少用到 了解即可)

1.修改主配置文件(刚刚已经修改过)

2.修改区域配置文件(修改需要解析的网段和其数据文件位置)

vim /etc/named.rfc1912.zones

zone "80.168.192.in-addr.arpa" IN {   #只需要写网段 不需要写主机 倒序
        type master;
        file "xue.com.local";
        allow-update { none; };
};
systemctl restart named

3.修改区域数据文件(记录IP与域名对应关系 主从域服务器设置)

复制一定要带上文件权限!这个文件的属主是named!不带权限复制会出错!

cd /var/named/
cp -p named.localhost xue.com.local    #保留源文件的权限和属主的属性复制
cp -a named.localhost xue.com.local    #-a 比-p功能更全 相当于组合选项

注意配置文件中域名后都有个 . 若缺少会导致失效!

vim xue.com.local

$TTL 1D
@       IN SOA  xue.com. admin.xue.com. (    #此处的@在反向解析时必须修改(正向解析可以不改)
                                        20230419        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      xue.com.           #域名
        A       192.168.80.101     #域服务器地址(此处本机作为域服务器)

33 IN PTR www.xue.com.
66 IN PTR mail.xue.com.     #与正向解析反着写。PTR:反向指针

 重启DNS服务

systemctl restart named

关闭防火墙

systemctl stop firewalld
setenforce 0

修改客户机DNS服务器地址

vim /etc/resolv.conf
    nameserver 192.168.80.101

验证

主从域服务器设置

主服务器 192.168.80.101

从服务器 192.168.80.102

验证客户机 192.168.80.103

 1.修改主配置文件(主服务器已经设置 这里只需要设置从服务器)

注意格式!地址后要;并且加一个空格!!!

##########从服务器##########
vim /etc/named.conf

options {
        listen-on port 53 { any; };       #✨✨改了any 也可为192.168.80.102(本机)
        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; };         #✨✨改了any 也可为192.168.80.102(本机)

2.修改区域配置文件(主服务器要允许从服务器获取数据 从服务器填写主服务器地址)

##########主服务器##########
vim /etc/named.rfc1912.zones

zone "xue.com" IN {                 #✨设置域名 正向解析xue.com区域
        type master;                #✨设置为主域名服务器
        file "xue.com.zone";        #✨设置区域数据文件存放位置
        allow-transfer{ 192.168.80.102; };    #✨✨设置允许从服务器获取数据
};


zone "80.168.192.in-addr.arpa" IN {  #✨只需要写网段 不需要写主机 倒序
        type master;
        file "xue.com.local";
        allow-transfer{ 192.168.80.102; };     #✨✨反向解析也设置允许从服务器获取数据
};


##########从服务器##########
vim /etc/named.rfc1912.zones

zone "xue.com" IN {
        type slave;                           #✨✨设置从服务器
        masters { 192.168.80.101; };          #✨✨设置主服务器地址
        file "slaves/xue.com.zone";
};
zone "80.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.80.101; };          #✨✨设置反向解析
        file "slaves/xue.com.local";
};

systemctl restart named

3.修改区域数据文件(主服务器已经设置过 从服务器无须设置自动同步)

关闭主服务器和从服务器防火墙

systemctl stop firewalld
setenforce 0

修改客户机DNS服务器地址 

客户机DNS服务器地址为刚刚配置的地址

##########192.168.80.103验证客户端##########

vim /etc/resolv.conf             #DNS配置文件中指定服务器地址
     nameserver 192.168.80.101      #主
     nameserver 192.168.80.102      #从  
  

验证

关闭主服务器

#####主服务器#####
systemctl stop named

此时解析全部走从服务器

 

补充: 默认域名

/etc/resolv.conf ——search

vim /etc/resolv.conf
    search xue.com

此时只需要输入主机名(www、ftp)即可补全后面的域名

 

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。