Linux之DNS服务--主从服务器的顶替工作

目录

  • 引言
  • 一、DNS介绍
    • 1.1:DNS功能
    • 1.2:DNS分层结构
    • 1.3:DNS解析过程
    • 1.4:DNS作用
    • 1.5:协议和端口
  • 二:DNS实验
    • 主服务器配置
    • 备用DNS服务器部署
    • 客户机

引言

  DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

一、DNS介绍

1.1:DNS功能

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。主机名到IP地址的映射有两种方式:

1.静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2.动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1]

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

1.2:DNS分层结构

  • 根域: " . "

  • 国家域:cn、uk

  • 顶级域:com、edu、net

  • 二级域:个性化名称

  • 主机名(用途):www(网页)、mail(邮件)

1.3:DNS解析过程

以www.baidu.com为例
  一般客户机将解析的请求发送给它的DNS服务器,DNS服务器首先是从根DNS服务器(.)开始发送域名解析请求,根将COM域的IP反馈给客户机的本地DNS服务器,本地DNS服务器访问COM域服务器,COM域服务器反馈baidu IP给本地DNS服务器,本地DNS服务器访问baidu域服务器询问www域服务器的ip,baidu域服务器给dns服务器反馈www域的ip,这时本地DNS服务器得到www. baidu. com的精确ip后,直接将这个映射记录反馈给客户机,客户机真接访问www. baidu. com服务器,服务器反馈相应的数据。

1.4:DNS作用

将域名解析成IP地址

1.5:协议和端口

既属于UDP又属于TCP,53端口

二:DNS实验

实验环境

两台初始化完成的虚拟机,之前文章有详细过程

准备三台虚拟机,一台主用DNS服务器,一台备用,一台作客户机验证
主服务器 192.168.1.10
备服务器 192.168.1.20
客户机 192.168.1.30
都设置为VMnet1,仅主机模式
Linux之DNS服务--主从服务器的顶替工作_第1张图片
Linux之DNS服务--主从服务器的顶替工作_第2张图片
设置主用服务器为192.168.1.10,备用为192.168.1.20,客户机为192.168.1.30,并设置DNS服务器地址,主用为192.168.1.10,备用为192.168.1.20。
主DNS服务器

Linux之DNS服务--主从服务器的顶替工作_第3张图片
备用DNS服务器
Linux之DNS服务--主从服务器的顶替工作_第4张图片
systemctl stop firewalld
setenforce 0

主服务器配置

  • 安装DNS服务
[root@server1 ~]# yum -y install bind*
  • 修改配置文件
[root@server1 ~]# vi /etc/named.conf

Linux之DNS服务--主从服务器的顶替工作_第5张图片

options {
     
        listen-on port 53 {
      192.168.1.10; };
        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";
        allow-query     {
      any; };
zone "tom.com" IN {
     
       type master;
       file "tom.com.zone";
       allow-transfer {
      192.168.1.20; };
       also-notify {
      192.168.1.20; };
};
zone "1.168.192.in-addr.arpa" IN {
     
       type master;
       file "tom.com.local";
       allow-transfer {
      192.168.1.20; };
};
  • 带属性复制区域文件,并修改区域文件配置
[root@server1 ~]# cd /var/named/
总用量 24K
drwxr-x---. 7 root  named   61 922 23:45 chroot
drwxrwx---. 2 named named   23 923 09:32 data
drwxrwx---. 2 named named   60 929 19:04 dynamic
drwxrwx---. 2 root  named    6 810 2017 dyndb-ldap
-rw-r-----. 1 root  named 2.3K 522 2017 named.ca
-rw-r-----. 1 root  named  152 1215 2009 named.empty
-rw-r-----. 1 root  named  152 621 2007 named.localhost
-rw-r-----. 1 root  named  168 1215 2009 named.loopback
drwxrwx---. 2 named named    6 84 2017 slaves
-rw-r-----. 1 root  named  217 923 09:32 tom.com.local   #反向区域文件
-rw-r-----. 1 root  named  223 923 09:00 tom.com.zone    #正向区域文件
  • 反向解析文件
$TTL 1D
@       IN SOA  tom.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      tom.com.
        A       192.168.1.10
19 IN  PTR      www.tom.com.
20 IN  PTR      ftp.tom.com.                            
  • 正向解析文件
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.1.10
www IN  A       192.168.1.10
ftp IN  A       192.168.1.20
mail IN CNAME   www
                               
  • 启动DNS服务
[root@server1 named]# systemctl restart named
[root@server1 named]# netstat -anptu | grep named
tcp        0      0 192.168.1.10:53         0.0.0.0:*               LISTEN      17371/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      17371/named         
tcp6       0      0 ::1:53                  :::*                    LISTEN      17371/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      17371/named         
udp        0      0 192.168.1.10:53         0.0.0.0:*                           17371/named         
udp6       0      0 ::1:53                  :::*                                17371/named       
  • 验证本地服务
[root@server1 named]# nslookup www.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
Name: www.tom.com
Address: 192.168.1.10
[root@server1 named]# nslookup ftp.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server1 named]# nslookup mail.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10

备用DNS服务器部署

  • 安装DNS服务
[root@server2 ~]# yum -y install bind*
  • 修改配置文件
[root@server2 ~]# vi /etc/named.conf
options {
     
        listen-on port 53 {
      192.168.1.20; };
        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@server2 ~]# vi /etc/named.rfc1912.zones

##末行加入
zone "tom.com" IN {
     
    type slave;
    masters {
      192.168.1.10; };
    allow-notify {
      192.168.1.10; };
    file "slaves/tom.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
     
    type slave;
    masters {
      192.168.1.10; };
    allow-notify {
      192.168.1.10; };
    file "slaves/tom.com.local";
};
  • 启用DNS服务,并且能查看到获取的正向反向解析文件
[root@server2 ~]# systemctl start named
[root@server2 ~]# cd /var/named/
[root@server2 named]# ll
总用量 16
drwxr-x---. 7 root  named   61 923 10:00 chroot
drwxr-x---. 7 root  named   61 923 10:00 chroot_sdb
drwxrwx---. 2 named named   23 923 11:32 data
drwxrwx---. 2 named named   60 923 11:33 dynamic
drwxrwx---. 2 root  named    6 41 10:16 dyndb-ldap
-rw-r-----. 1 root  named 2253 45 2018 named.ca
-rw-r-----. 1 root  named  152 1215 2009 named.empty
-rw-r-----. 1 root  named  152 621 2007 named.localhost
-rw-r-----. 1 root  named  168 1215 2009 named.loopback
drwxrwx---. 2 named named   47 923 11:32 slaves
[root@server2 named]# cd slaves
[root@server2 slaves]# ls -lh
总用量 8.0K
-rw-r--r--. 1 named named 343 923 11:32 tom.com.local
-rw-r--r--. 1 named named 301 923 11:32 tom.com.zone

客户机

  • 客户机验证主用DNS服务器
[root@server3 ~]# nslookup www.tom.com
Server:  192.168.1.10
Address: 192.168.1.10#53
Name: www.tom.com
Address: 192.168.1.10
[root@server3 ~]# nslookup ftp.tom.com
Server:  192.168.1.10
Address: 192.168.1.10#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server3 ~]# nslookup mail.tom.com
Server:  192.168.1.10
Address: 192.168.1.10#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10
  • 将主用DNS服务器挂起,备用DNS服务器已经接替工作
[root@server3 ~]# nslookup www.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
Name: www.tom.com
Address: 192.168.1.10
[root@server3 ~]# nslookup ftp.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server3 ~]# nslookup mail.tom.com
Server:  192.168.1.20
Address: 192.168.1.20#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10

如此实验正常
如果觉得有用的话,欢迎三联哟!求求啦

你可能感兴趣的:(Linux,linux,运维,dns服务器,云计算,网络)