第十三周

1、简述DNS服务器原理,并搭建主-辅服务器。

DNS(domain name system)域名系统或者(domain named system)区域名称服务,分为正向与反向域名解析,适用C/S,端口路53/udp,53/tcp,属于应用层协议;

  作用:人得记忆有限,如果没有dns得记下多少IP地址;从网络来说由于tcp/ip协议族是基于ip地址,所以需要一个翻译器即DNS;可以1对多也可以多对1,那么正向解析即域名解析为ip地址,反向解析即ip地址解析为域名。有人说DNS就是一个本大得电话本,说的挺贴切。

  正反向解析事两个不同得名称空间,是两颗不同得解析树;

  正向:ip---》主机名

  反向:主机名---》ip

  当今得业界标准BIND(berkeley internet name domain)dns软件

配置主DNS服务器

1.修改主DNS服务器配置文件
vim /etc/named.conf
options {
    listen-on port 53 { 127.0.0.1; };                     #(监听端口和IP) IP修改成0.0.0.0或localhost或直接注释掉
    listen-on-v6 port 53 { ::1; };                        #IPV6的监听端口和IP
    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; };         #(允许查询的IP) localhots可以修改成需要查询的网段或any或注释掉
    allow-transfer  { 10.0.0.174;};         #允许拉取解析配置文件的IP,填写从服务器的IP,没有从服务器就填写none拒绝所有
2.在配置文件中定义区域
vim /etc/named.rfc1912.zones
zone "berta.top" IN{                      #定义域名
      type master;                        #类型:master主|slave从|hint|forward转发
      file "berta.top.zone";              #定义域名的配置文件
      allow-update { 10.0.0.174; };       #允许某个主机更新
};
3.创建域名的配置文件
touch /var/named/berta.top.zone

该程序是以named身份运行的,所以需要修改配置文件的所属组为named

chgrp named berta.top.zone

为了防止被入侵了配置文件泄露,修改该文件权限为640

chmod 640 /var/named/berta.top.zone

开始写配置文件

vim /var/named/berta.top.zone
$TTL 1D                                      #缓存时间
@  IN    SOA       ns1  (                    #固定格式 SOA解析类型 ns1全称是ns1.berta.top.(后面省略了没写会自动补全)
                          0     ; serial     #序列号
                         1D     ; refresh    #刷新时间(从服务器拉取主服务器的时间间隔)
                         1H     ; retry      #重试时间(如果同步失败重试的时间间隔)
                         1W     ; expire     #过期时间(如果一直同步失败的过期间隔)
                         3H )   ; minimum    #否定答案的TTL值(不存在的解析值的缓存时间)
          NS      ns1                        #@的NS1解析记录 (TTL  @  IN 前面有写,后面可以不写继承前面的)
          NS      ns2                        #@的NS2解析记录(从DNS服务器)
ns1       A       10.0.1.173                 #ns1的A解析记录
ns2       A       10.0.1.174                 #ns2的A解析记录
web1      A       10.0.1.200                 #web1的A解析记录
www      CNAME    web1                       #www的CNAME解析记录,指向web1
@        CNAME    web1 
web2      A       10.0.1.201
app      CNAME    web2
db        A       10.0.1.202
*        CNAME    web1                      #泛域名解析,只要是以上解析不存在的都解析到10.01.200     

检查区域数据库文件语法是否正确

named-checkzone berta.top /var/named/berta.top.zone 

重新加载配置文件

rndc reload

配置从DNS服务器

1.修改主DNS服务器配置文件
vim /etc/named.conf
options {
    listen-on port 53 { 127.0.0.1; };
    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; };
    allow-transfer  { none;};
2.在配置文件中定义区域
vim /etc/named.rfc1912.zones
zone "berta.top" IN{                              #定义域名
      type slave;                                 #类型:master主|slave从|hint|forward转发
      master {10.0.0.173;};                       #定义主DNS服务器地址为10.0.0.173
      file "slaves/berta.top.zone.slave";         #定义域名的配置文件
};

2、搭建并实现智能DNS。

1.主DNS服务器定义用户网段分配至哪里
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

//alc访问控制列表
acl beijing {
              192.168.1.100;
};

acl shanghai {
              192.168.1.200;
};

acl other    {
              any;
};


options {
//    listen-on port 53 { 127.0.0.1; };
    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; };

    /* 
     - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
     - If you are building a RECURSIVE (caching) DNS server, you need to enable 
       recursion. 
     - If your recursive DNS server has a public IP address, you MUST enable access 
       control to limit queries to your legitimate users. Failing to do so will
       cause your server to become part of large scale DNS amplification 
       attacks. Implementing BCP38 within your network would greatly
       reduce such attack surface 
    */
    recursion yes;

    dnssec-enable no;
    dnssec-validation no;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.root.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
//因一旦启用了view,所有的zone都只能定义在view中,该zong迁移至 /etc/named.rfc1912.zones
//zone "." IN {
//    type hint;
//    file "named.ca";
// };

//view将前面定义的ACL与稍候设置的解析地址数据库进行关联
// 注意:
//(1) 一旦启用了view,所有的zone都只能定义在view中
//(2) 仅在允许递归请求的客户端所在view中定义根区域
//(3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表

view   beijing_view   {                                    //定义view的名称,这里定义的是beijing_view
             match-clients { beijing; };                   //填写对应acl访问控制列表名称,上面定义的名称是beijing 这里就填写beijing
//            zone “berta.top” {
//                      type master;
//                     file “berta.top.zone.beijing”;
//            };
include “/etc/named.rfc1912.zones.beijing”;
};

view   shanghai_view   {
             match-clients { shanghai; };
//           zone “berta.top” {
//                    type master;
//                     file “berta.top.zone.shanghai”;
//            };
include “/etc/named.rfc1912.zones.shanghai”;
};

view   other_view   {
             match-clients { other; };
//            zone “berta.top” {
//                     type master;
//                    file “berta.top.zone”;
//            };
include “/etc/named.rfc1912.zones.other”;
};

include "/etc/named.root.key";
2.创建三个区域对应的zong文件
/etc/named.rfc1912.zones.beijing
/etc/named.rfc1912.zones.shanghai
/etc/named.rfc1912.zones.otcher

添加配置定义域名的配置文件名称,三个文件内都添加这一段即可

zone "berta.top" IN {                       // 定义域名
  type master;                                //类型:master主|slave从|hint|forward转发
  file "berta.top.zone.beijing";                      // 定义域名的配置文件
};
3.创建3个解析地址数据库分别对应beijing,shanghai,other

berta.top.zone.beijing

$TTL 1D             
@  IN                       SOA       ns1.beijing      mail.berta.top. ( 0   1D    1H    1W     3H )   
                             NS       ns1.beijing 
ns1.beijing                A            10.0.0.10
@                          A            1.1.1.1
www                        A            1.1.1.1

berta.top.zone.shanghai

$TTL 1D             
@  IN                       SOA       ns1.shanghai      mail.berta.top. ( 0   1D    1H    1W     3H )   
                             NS       ns1.shanghai 
ns1.shanghai                A          10.0.0.10
@                          A            2.2.2.2
www                        A            2.2.2.2

berta.top.zone.other

$TTL 1D             
@  IN                       SOA        ns1.other       mail.berta.top. ( 0   1D    1H    1W     3H )   
                             NS        ns1.other 
ns1.other                A             10.0.0.10
@                          A            3.3.3.3
www                        A            3.3.3.3

总结 配置十分钟排错一小时, 最大的坑就是文件权限问题,因为bind是以named用户运行的,一定要将这些文件的所属组改成named,

 listen-on port 53 { 127.0.0.1; };                //这一项要注释掉或者修改为0.0.0.0或localhost
allow-query     { localhost; };                 //这一项也要注释掉,或修改成允许查询的指定IP或IP段,或any允许所有
 allow-transfer  { 10.0.0.174;};              //允许拉取解析配置文件的IP,填写从服务器的IP,没有从服务器就填写none拒绝所有
dnssec-enable no;                                                            //关闭dnssec功能
dnssec-validation no;                                                       //关闭dnssec功能

view这里注释掉的是两种写法,测试都可以正常运行,这个是第二种写法, 这种写法可以省略第二部,

view   shanghai_view   {
             match-clients { shanghai; };
          zone “berta.top” {
                  type master;
                    file “berta.top.zone.shanghai”;
            };
include “/etc/named.rfc1912.zones”;
};

3、编译安装Mariadb,并启动后可以正常登录

你可能感兴趣的:(第十三周)