Linux之DNS服务器

一、DNS 简介

  1. 定义与作用:DNS(Domain Name System)是互联网上的一项服务,作为将域名和 IP 地址相互映射的分布式数据库,使人更方便地访问互联网。使用 53 端口,通常以 UDP 查询,未查到完整信息时用 TCP 重新查询。
  2. 因特网的域名结构
    • 国家顶级域名:采用 ISO3166 规定,如 cn、us、uk 等,记为 ccTLD。
    • 通用顶级域名:有 com、net、org、int、gov、mil 等。
    • 基础结构域名:只有 arpa,用于反向域名解析。

二、域名服务器的类型划分

  1. 根域名服务器:最高层次,最重要。知道所有顶级域名服务器的域名和 IP 地址,若本地域名服务器无法解析,先求助根域名服务器。全球有 13 个根服务器,美国占多数,"雪人计划"形成了 13 台原有根加 25 台 IPv6 根的新格局,中国部署了 4 台。
  2. 顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
  3. 权限域名服务器:负责一个"区"的域名服务器。
  4. 本地域名服务器:对域名系统非常重要,当主机发出 DNS 查询请求时,报文发送给本地域名服务器。
  5. 主从 DNS 服务器:主 DNS 服务器负责解析至少一个域,辅助域名服务器辅助主服务器,当主服务器故障时保证查询工作不中断,数据复制由主到从,更改数据只能在主服务器进行。
  6. 缓存 DNS 服务器:不负责解析域,只缓存域名解析结果。

三、DNS 域名解析的过程

  1. 先检查本地 hosts 文件是否有网址映射关系,有则调用完成解析。
  2. 若 hosts 没有,查找本地 DNS 解析器缓存,有则返回完成解析。
  3. 若前两者都没有,找首选 DNS 服务器(本地 DNS 服务器),若该服务器区域解析有结果则返回,完成解析;若已缓存网址映射关系也可完成解析。
  4. 若本地 DNS 服务器本地区域文件与缓存解析都失效,未用转发模式则向 13 台根 DNS 服务器请求,根服务器返回负责该顶级域名服务器的 IP,本地服务器继续联系,直至找到目标主机;若用转发模式则转发至上一级 DNS 服务器,循环查询。
  5. 从客户端到本地 DNS 服务器是递归查询,DNS 服务器之间是迭代查询。114.114.114.114 是国内常用 DNS,解析成功率高、速度快稳定;8.8.8.8 是谷歌提供的全球通用 DNS,更适合国外及访问国外网站用户。

四、DNS 服务器配置

提供DNS服务的软件叫bind,服务名是named。
[root@localhost ~]# yum install bind -y
[root@localhost ~]# rpm -ql bind
/etc/named.conf # bind主配置文件
/var/named/slaves # 从dns服务器文件夹
[root@localhost ~]# vim /etc/named.conf
options {
    #定义监听端口,如果所有地址都监听,则只写端口
    listen-on port 53 { 127.0.0.1; };
    listen-on-v6 port 53 { ::1; };
    #定义数据文件目录
    directory "/var/named";
    #只允许本地主机进行查询
    allow-query { localhost; };
};
#定义区域
zone "." IN {
    type hint;
    file "named.ca";
};

实验 1:配置 DNS 正向解析

[root@localhost ~]# vim /etc/named.conf主配置文件
options {  
	#监听端口为53,大括号内数据内容可以为any
	listen-on port 53 { 192.168.121.10; }; 
	directory       "/var/named";
};
zone "baidu.com" IN {                  
	        type master;              
	        file "named.baidu.com";
};  

正向解析文件资源记录(Resource Record,RR),常见的正解文件RR相关信息:

domain IN RR type RR data
主机名. IN A IPv4的IP地址
主机名. IN AAAA IPv6的IP地址
域名. IN NS 管理这个域名的服务器主机名字,即由哪一台主机去解析当 前所定义的域主机
域名. IN SOA起始授 权记录 管理这个域名的七个重要参数
域名. IN MX 顺序数字,接收邮件的服务器主机名字
主机别 名. IN CNAME 实际代表这个主机别名的主机名字

SOA主要是与区域有关,所以domain要写域名。而SOA后面会接七个参数,这七个参数的意义如下:

  • Master DNS服务器主机名:这个区域主要是哪台DNS作为Master的意思。
  • 管理员的Email,发生问题可以联系这个管理员。由于@在数据库文件中有特殊含义,所以将用"."代替@
  • 序号(Serial),这个序号代表的是这个数数据库文件的新旧,序号越大代表越新。所以当你更改了数据库内容时,需要将这个数值放大。
  • 更新频率(Refresh)定义slave多久向Master要求数据更新。
  • 失败重新尝试时间(Retry),如果Slave无法对Master实现连接,那么在多长时间内,Slave会尝试重新连接到Master。
  • 失效时间(Expire),如果一直尝试失败,持续连接到达这个设置值时限,那么Slave将不再继续尝试连接,并且尝试删除这份下载的zone file信息。
  • 缓存时间(Minumum TTL),如果这个数据库zone file中,每条记录都没有写到TTL缓存时间的话,那么就以这个SOA的设置值为主。ttl的意思是当这笔记录被其他DNS服务器查询到后,这个记录会在对方DNS服务器的缓存中,保持多久时间。如果写了$TTL,则以该值为准。

时间单位:M(分钟),H(小时),D(天),W(周),默认是秒

[root@localhost ~]# vim /var/named/named.baidu.com
$TTL 1D
@ IN SOA @ admin.baidu.com. ( 0 1D 1H 1W 3H )
 IN NS ns.baidu.com. 
 IN MX 10 mail.baidu.com.
ns IN A 192.168.121.10
mail IN A 192.168.121.10
www IN A 192.168.121.10
ftp IN CNAME www
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl disable firewalld --now
[root@webserver ~]# setenforce 0

#客户端测试
host [-a] FQDN [server]
nslookup [FQDN] [server]
dig [options] FQDN [@server]
 options:+trace代表从.开始追踪;-t type查询的数据主要有MX、NS、SOA、A等类型;-x查
询反解信
息
[root@localhost ~]# host www.baidu.com 192.168.121.10
[root@localhost ~]# nslookup www.baidu.com 192.168.121.10
[root@localhost ~]# dig -t A www.baidu.com @192.168.121.10

实验 2:反向解析

[root@localhost ~]# vim /etc/named.conf
zone "121.168.192.in-addr.arpa" IN { 
    type master;
    file "named.192.168.121";
};
#反向区域文件
[root@localhost ~]# vim /var/named/named.192.168.121
$TTL 1D
@ IN SOA ns.baidu.com. admin.baidu.com. ( 0 1D 1H 1W 3H )
	IN NS ns.baidu.com.
10 IN PTR ns.baidu.com.
10 IN PTR www.baidu.com.
10 IN PTR mail.baidu.com.
10 IN PTR ftp.baidu.com.
#反解需要注意:主机名尽量使用完整的FQDN,即要写上"."

#客户端测试
[root@localhost ~]# host 192.168.121.10 192.168.121.10
[root@localhost ~]# nslookup 192.168.121.10 192.168.121.10
[root@localhost ~]# dig -x 192.168.121.10  @192.168.121.10

实验 3:主从 DNS 服务器

  • 完全区域传送:主服务器配置允许区域传送并设置从服务器 IP,编辑区域文件并添加从服务器信息;从服务器安装 bind,配置区域为 slave 类型并指定主服务器 IP 和文件存储位置,重启服务后进行测试。

  • 增量区域传送:修改主服务器区域配置文件,增大序号并添加新记录,重启服务。

    #主DNS服务器的配置【主dns服务器的ip地址为192.168.121.10】
    [root@localhost ~]# vim /etc/named.conf
    options {
    listen-on port 53 { 192.168.121.10; };
    directory "/var/named";
    allow-transfer { 192.168.121.11; };
    };
    zone "baidu.com" IN {
    type master;
    file "named.baidu.com";
    };
    [root@localhost ~]# vim /var/named/named.baidu.com
    $TTL 1D
    @ IN SOA @ admin.baidu.com. ( 0 1D 1H 1W 3H )
    IN NS ns.baidu.com.
    IN MX 10 mail.baidu.com.
    ns IN A 192.168.121.10
    slave IN A 192.168.121.11
    mail IN A 192.168.121.10
    www IN A 192.168.121.10
    ftp IN CNAME www
    [root@localhost ~]# systemct restart named
    #从DNS服务器的配置【从dns服务器的ip地址为192.168.121.11】
    [root@localhost ~]# yum install bind -y
    [root@localhost ~]# vim /etc/named.conf
    options {
    listen-on port 53 { 192.168.121.10; };
    directory "/var/named";
    };
    zone "baidu.com" IN {
    type slave;
    file "slaves/named.baidu.com";
    masters {192.168.121.10;};
    };
    [root@localhost ~]# systemctl restart named
    #测试
    [root@localhost ~]# host www.baidu.com 192.168.121.11

#修改主服务器的区域配置文件,序号比之前的序号大【注:区域文件里面必须要写从服务器的NS和A记
录】
#主DNS服务器的配置【主dns服务器的ip地址为192.168.121.10】
[root@localhost ~]# vim /var/named/named.baidu.com
$TTL 1D 
@ IN SOA @ admin.baidu.com. ( 1 1D 1H 1W 3H )
 IN NS ns.baidu.com. 
 IN NS slave.baidu.com.
 IN MX 10 mail.baidu.com. 
ns IN A 192.168.121.10
slave IN A 192.168.121.11
mail IN A 192.168.121.10
www IN A 192.168.121.10
ftp IN CNAME www
www1 IN CNAME www
[root@localhost ~]# systemct restart named
相关推荐
sinat_384241091 小时前
使用 npm 安装 Electron 作为开发依赖
服务器
朝九晚五ฺ1 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream1 小时前
Linux的桌面
linux
xiaozhiwise2 小时前
Makefile 之 自动化变量
linux
Kkooe2 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒3 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
意疏4 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师4 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu4 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器