详解Linux搭建DNS服务器

1.DNS服务器概念

在互联网上通信需要借助于IP地址,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决IP地址与主机名的转换问题,DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址 联机分布式数据库系统,DNS大多数名字在本地解析,仅少量需要在网上通讯,所以效率高

2.DNS相关概念

DNS利用树形目录结构,将主机名的管理分配给不同的层级,这样可以实现更加快速的完成主机名的查找, 修改主机名解析时也更加方便

域:

TLD:   Top Level Domain (顶级域名)

组织域:.com, .org, .net, .edu,.gov,.mil,.cc,…

国家域:.cn, .us, .tw, .iq,…

反向域:.in-addr-arpa

FQDN:

FQDN全称为Fully Qualified Domain Name,即完全合格域名
FQDN由两个部分组成:主机名和域名。
因为DNS是逐级管理的 ,所以在不同的层级中主机名与域名也是不同的;
www.google.com为例:
在第二层中,.com就是域名,google就是主机名;
而到了第三层中,.google.
正向解析: 从FQDN转换为IP地址称为正向解析

反向解析: 从IP地址转换为FQDN称为反向解析

区域:正向解析或反向解析中,每个域的记录就是一个区域

3.DNS服务器解析

DNS的主要作用是进行主机名的解析

解析:

根据用户提供一种名称,去查询解析库,以得到另一种名称。 域名—>IP,IP—>域名

资源记录:rr(resource record) 有类型的概念;用于此记录解析的属性

  1. *SOA记录:起始授权记录,一个区域文件只能有一个
  2. *A记录:用来指定主机名(或域名)对应的IP(ipv4)地址记录。(AAAA ipv6)
  3. *CNAME记录:别名解析(域名)
  4. *NS记录:域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
  5. *MX记录:邮件交换记录,指向邮件服务器
  6. *PTR记录:反向DNS记录,A记录的反向
  7. *TTL值:生存时间,DNS记录在DNS服务器上缓存时间

4.DNS服务器原理

DNS采用两种查询机制:递归和迭代

客户端向DNS服务器发起查询请求,DNS服务器搜索本地解析库没有结果,于是向根域发起查询请求,根域告诉DNS服务器.com服务器上有它需要的资源,DNS服务器又向.com服务器发起查询请求,结果被告知.google.com服务器上有它想要的结果,后终于在.google.com服务器上找到了解析记录,并返回给了客户端 在上面的查询过程中,客户端只发起了一次请求,并得到了后的结果,这种查询方式被称为递归
而DNS服务器在查询过程中不停的发起请求,直到找到想要的结果,这种查询方式被称为迭代

5.DNS查询顺序

  1. 本地hosts文件
  2. 本地DNS缓存
  3. 本地DNS服务器
  4. 发起迭代查询

6.DNS服务器端口 TCP UDP 53

7.DNS服务器类型

主DNS服务器:

为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务

从DNS服务器:

  1. 1.主服务器DNS长期无应答,从服务器也会停止提供服务
  2. 2.主从区域之间的同步采用周期性检查+通知的机制
  3. 3.从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录

缓存服务器:

服务器本身不提供解析区域,只提供非权威应答

转发服务器:

当DNS服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的DNS服务器,此时本地DNS服务器就是转发服务器

配置:

nslookup,dig dns客户端测试工具
#tcpdump,wireshark抓包分析工具

DNS服务器搭建,正向解析、反向解析

1.关闭防火墙&Selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
getenforce

 2.安装DNS服务器软件

yum install bind-chroot
#主配置文件/etc/named.conf
#区域配置文件/etc/named.rfc1912.zones 用来保存域名和IP地址对应关系
#数据配置文件目录/var/named 用来保存域名和IP地址对应关系的所在位置

3.修改主配置文件

vi /etc/named.conf
listen-on port 53 { any; }; #服务器上的所有IP地址均可提供DNS域名解析服务
allow-query { any; };  #允许所有人对本服务器发送DNS查询请求
#named-checkconf 命令检测语法

4.修改区域配置文件

#用来保存域名和IP地址对应关系的所在位置,在这个文件中,定义了域名与IP地址解析规则,保存的文件位置,以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器
zone "c74.com" IN {
     type master; #服务类型
     file "c74.com.zone";  #域名与IP地址解析规则保存文件
     allow-update { none; };  #允许哪些客户机动态更新解析信息
     }; #正向解析参数
zone "1.168.192.in-addr.arpa" IN {  #表示为192.168.1.0/24网段的反射解析区域
     type master;
     file "192.168.1.arpa";
     }; #反向解析参数

5.正向解析

5.1 vi /etc/named.rfc1912.zones

可在原有的基础上进行修改,也可清空,保留只用的信息
zone "c74.com" IN {        #服务类型
     type master; #域名与IP地址解析规则保存文件
     file "c74.com.zone";    #允许哪些客户机动态更新解析信息
     allow-update { none; };
     };
#named-checkzone 检测zone文件的配置

5.2#编辑数据配置文件。从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写到数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息

cd /var/named
cp -a named.localhost c74.com.zone #将named.localhost中的文件内容(模板)复制到c74.com.zone里
vi c74.com.zone
$TTL 1D #生存周期为1天 @  IN SOA c74.com. root.c74.com.( #@当前的域名 #授权信息开始 #DNS区域的地址 #域名管理员邮箱不要用@符号
        0  ; serial #更新序列号
        1D  ; refresh #更新时间
        1H  ; retry  #重试延时
        1W  ; expire #失效时间
        3H ) ; minimum #无效解析记录时间
       NS  ns.c74.com.  #域名服务器记录
 ns  IN A 192.168.5.153 #地址记录ns.c74.com.
 IN MX 10 mail.c74.com. #邮箱交换记录10为优先级数字越小级别越高
 mail IN A 192.168.5.153 #地址记录mail.c74.com.
 www  IN A 192.168.5.153 #地址记录www.c74.com.
 news IN A 192.168.5.153 #地址记录news.c74.com.

5.3 启动服务及测试

 systemctl restart named
 yum install bind-utils -y
 #bind-utils为客户端 测试dns使用
 nslookup
 > www.c74.com
 Server:   192.168.5.153
 Address:  192.168.5.153#53
 #其它也要测试,这里省略

6.反向解析

#反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件

6.1 vi /etc/named.rfc1912.zones

zone "1.168.192.in-addr.arpa" IN {
 type master;
 file "192.168.1.arpa";
 };

6.2 编辑配置文件

 #从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中
 cd /var/named
 cp -a named.loopback 192.168.1.arpa
 vi 192.168.1.arpa
 $TTL 1D
 @  IN SOA c74.com. root.c74.com. (
       0  ; serial
       1D  ; refresh
       1H  ; retry
       1W  ; expire
       3H ) ; minimum
      NS  ns.c74.com.
  ns  A  192.168.5.153
  153  PTR  ns.c74.com.  #PTR为指针记录,仅用于反向解析中
  153  PTR  mail.c74.com.
  153  PTR  www.c74.com.
  153  PTR  news.c74.com.

6.3 测试

 systemctl restart named
  nslookup

7.DNS高级之主从服务

#由于上边已部署主服务器,下主要介绍从服务器
 #在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率
#测试需要两台服务器!主192.168.10.10,从192.168.10.20

7.1#在主服务器的区域配置文件中允许该从服务器的更新请求,即修改allow-update {允许更新区域信息的主机地址;};参 数,然后重启主服务器的DNS服务程序

 vi /etc/named.rfc1912.
  zones zone "c74.com" IN {
        type master;
        file "c74.com.zone";
        allow-update { 192.168.10.20; };
        };
  zone "10.168.192.in-addr.arpa" IN {
        type master; file "192.168.10.arpa";
        allow-update { 192.168.10.20; };
        };
  systemctl restart named

7.2#在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从), 而不再是master(主)。masters参数后面应该为主服务器的IP地址,而且file参数后面定义的是同步数据配置文件后 要保存到的位置,稍后可以在该目录内看到同步的文件

 vi /etc/named.rfc1912.zones
  zone "c74.com" IN {
       type slave;
       masters { 192.168.10.10; };
       file "slaves/c74.com.zone";
       };
  zone "10.168.192.in-addr.arpa" IN {
       type slave;
       masters { 192.168.10.10; };
       file "slaves/192.168.10.arpa";
       };   #file参数后面定义的是同步数据配置文件后 要保存到的位置,稍后可以在该目录内看到同步的文件}; systemctl restart named

7.3 #检验解析结果。当从服务器的DNS服务程序在重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件 默认会放置在区域配置文件中所定义的目录位置中。随后修改从服务器的网络参数,把DNS地址参数修改成 192.168.10.20,这样即可使用从服务器自身提供的DNS域名解析服务。后就可以使用nslookup命令顺利看到解析结果了

 cd /var/named/slaves
  ls #注意从服务器会同步主服务器的文件!
  nslookup
  www.c74.com
  192.168.10.10 

以上所述是小编给大家介绍的Linux搭建DNS服务器详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 用DNSPod和Squid打造自己的CDN (三) 安装CentOS Linux

    第 4 章 安装CentOS Linux 1.基本安装 把光盘塞进光驱,设置BIOS从光驱启动(别告诉我你不会),然后会看到启动界面,上面有一些提示,可以输入一些命令进行高级安装或者进入系统修复模式.不用管,直接按回车. 稍等一下,会出现一个界面要求你做光盘的完整性检查.一般来说现在刻出来的盘不会有坏的,除非是下载回来的ISO文件有问题.所以这里我们跳过. 跳过的方法是:按键盘的TAB键进行控件的选择,被选择上的控件会高亮,我们选择Skip(建议大家随时打开翻译工具或者网站对不懂的英文进行翻译)

  • linux下如何快速让DNS修改生效

    如何快速使DNS修改生效 OSX, Chrome, and DNS 在开发中,经常会给域名绑定一些ip,然后又需要经常切换,那么在linux下如何快速让DNS修改声息呢? 1.先用dig命令查询域名对应的ip是否已经生效 shell$ dig grepalex.com ;; ANSWER SECTION: grepalex.com.3600INA66.216.100.140 2.如何是chrome,则可以在地址栏上输入下面命令,让浏览器DNS缓存失效 chrome://net-internals

  • Linux下修改IP、DNS和路由命令行配置方法

    一.快速修改,重启后设置就没了 ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up route add default gw 192.168.1.2 二.修改配置文件,重启设置还在 (一)ubuntu 版本命令行设置静态IP 修改 /etc/network/interfaces # This filedescribes the networ k interfaces available onyour system # and how toact

  • Linux下用dnsmasq做dns cache server的配置方法

    目前最新版是2.7.1 ,可去其FTP下载:http://www.thekelleys.org.uk/dnsmasq/ 安装过程比较简单 yum -y install dnsmasq* wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz tar zxvf keepalived-1.2.9.tar.gz cd keepalived-1.2.9 ./configure --prefix=/usr/local/keepaliv

  • Linux命令行修改IP、网关、DNS的方法

    网卡eth0    IP修改为 102.168.0.1   复制代码 代码如下: ifconfig eth0 102.168.0.1 netmask 255.255.255.0 网关修改为 102.168.0.254 复制代码 代码如下: route add default gw 102.168.0.254 Linux命令行修改DNS 复制代码 代码如下: echo "nameserver 202.202.202.20 ">> /etc/resolv.conf 重启网络服务

  • linux apache泛域名解析及dns相关

    1.vim /var/named/chroot/var/named/hrsx.com.zone加入一行: 复制代码 代码如下: *  IN A  192.168.0.204 2.到apache服务器上,vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 复制代码 代码如下: <VirtualHost *:80>      setEnv APPLICATION_ENV testing      #ServerAdmin webmaster@du

  • DDNS 的工作原理及其在 Linux 上的实现

    DDNS 工作原理的分析 DDNS 的实现最根本的一点是当主机的 IP 地址发生变化的时候,实现 DNS 映射信息的及时更新,应用程序需要及时地获得这一信息,主要的方法可分为两大类: 一类是轮询机制,即:应用程序每隔一定的时间,去从查询主机当前的 IP 地址,并与之前的进行比较,从而判断网络地址是否发生了变化.显然,这种方法不仅效率低下,而且对每次查询 IP 地址的时间间隔很难得到一个折中的数值. 第二类方法是异步实现方式,即:每当主机的 IP 地址发生变化的时候,应用程序能够被及时地通知到.这

  • linux中查询dns示例

    dns.c 复制代码 代码如下: /* * DNS Query Program on Linux * * Author : ismdeep@live.com * * *///Header Files#include<stdio.h> //printf#include<string.h> //strlen#include<stdlib.h> //malloc#include<sys/socket.h> //you know what this is for#i

  • Mac OS X/Linux系统下清除DNS缓存命令整理

    Mac OS X/Linux系统下怎么清除DNS缓存呢?在不同的系统中刷新DNS缓存的方法如下: Mac OS X 系统,终端输入: sudo dscacheutil -flushcache Linux系统,终端输入: /etc/init.d/nscd restart Windows 系统,CMD 命令行窗口输入: ipconfig /flushdns 查看

  • Linux中BT5关于修改静态IP和DNS方法

    先查看网络接口配置信息 ifconfig 注意:这里的网络接口为eth0,如果是其他接口名字如eth1,以下注释就为eth1的 vim /etc/network/interfaces 把iface eth0 inet dhcp 注释掉(在前面添加#) #iface eth0 inet dhcp //更改以后 添加 注意:一定要把含有dhcp的代码行注释掉 iface eth0 inet static address 10.10.10.128 //ip根据桥接模式或NAT模式进行更改 netmas

随机推荐