• DNS服务器搭建(主、从、缓)



    主dns服务器搭建

    在本机上搭建一个管理hngd.com域名的域名服务器
    1. 确保安装好以下bind域名服务器

    [root@主人 ~]# rpm -qa |grep ^bind
    bind-chroot-9.8.2-0.17.rc1.el6.x86_64
    bind-libs-9.8.2-0.17.rc1.el6.x86_64
    bind-9.8.2-0.17.rc1.el6.x86_64
    bind-utils-9.8.2-0.17.rc1.el6.x86_64

    2. 在主配置文件定义hngd.com正向区域和反向区域,定义完成后使用named-checkconf检查语法是否正确。

    [root@主人 ~]# vim /etc/named.conf
    options {
    listen-on port 53 { 192.168.100.20; }; //监听ip为192.168.100.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";
    allow-query { any; }; //允许任何地址来访问
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;

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

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

    logging {
    channel default_debug {
    file "data/named.run";
    severity dynamic;
    };
    };

    zone "." IN {
    type hint;
    file "named.ca";
    };
    zone "hngd.com" IN{ //配置域名hngd.com正向解析
    type master;
    file "hngd.zones";
    allow-update { none; }; //是否允许客户机对dns配置进行更新,none表示不允许
    };

    zone "100.168.192.in-addr.arpa" IN{ //配置域名hngd.com的反向解析
    type master;
    file "192.168.100.zone";
    allow-update{ none; };
    };
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    [root@主人 ~]# named-checkconf /etc/named.conf //检测/etc/named.conf文件有没有语法错误
    [root@主人 ~]#

    3. 在/var/named目录下编辑正、反解析数据文件,要注意域名必须以‘.’结尾

    [root@主人 ~]# cat /var/named/hngd.zones //hngd.com的正向解析数据文件
    $ORIGIN hngd.com. //声明该文件属于哪个域名
    $TTL 1D
    @ IN SOA dns.hngd.com. admin.hngd.com. ( //在‘(’前需要留一个空格
    2016032011
    1D
    1H
    1W
    3H
    )
    NS dns.hngd.com. //名字服务器
    MX 5 mail.hngd.com. //邮件服务器
    dns IN A 192.168.100.20
    mail IN A 192.168.100.10
    www IN A 192.168.100.11
    bbs IN CNAME www

    [root@主人 ~]# cat /var/named/192.168.100.zone //反向解析文件
    $ORIGIN 100.168.192.in-addr.arpa.
    $TTL 1D
    @ IN SOA dns.hngd.com. admin.hngd.com. (
    2016032011
    1D
    1H
    1W
    3H
    )
    NS dns.hngd.com.
    20 IN PTR dns.hngd.com.
    10 IN PTR mail.hngd.com.
    11 IN PTR www.hngd.com.

    4. 用named-checkzone检测正、反解析数据文件语法的正确性

    [root@主人 ~]# named-checkzone hngd.com /var/named/hngd.zones
    zone hngd.com/IN: loaded serial 2016032011
    OK

    [root@主人 ~]# named-checkzone 100.168.192.in-addr.arpa /var/named/192.168.100.zone
    zone 100.168.192.in-addr.arpa/IN: loaded serial 2016032011
    OK

    5.做完上面这些我们还要更改/etc/resolv下面的域名服务器
    [root@主人 ~]# cat /etc/resolv.conf
    ; generated by /sbin/dhclient-script
    #nameserver 114.114.114.114
    nameserver 192.168.100.20

    6. 虽然现在重启named服务不会报错,但如果我们去查看/var/log/messages文件会发现权限问题,我们需要将/var/named目录下所有文件的属主和属组改为named,selinux记得也要关闭
    #/var/logmessages
    Mar 20 14:20:20 主人 named[3186]: none:0: open: /etc/rndc.key: permission denied
    Mar 20 14:20:20 主人 named[3186]: couldn't add command channel 127.0.0.1#953: permission denied

    [root@主人 ~]# chown named:named /var/named/*

    7. 现在因该没问题了,让我们来重启named服务,发现卡在Generating /etc/rndc.key:上很长时间
    解决方法:
    执行以下命令:rndc-confgen -r /dev/urandom -a
    然后再重启DNS服务:service named start 服务正常启动

    8. 查看53号端口有没有打开
    [root@主人 ~]# lsof -i :53
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    named 3288 named 20u IPv4 17544 0t0 TCP localhost:domain (LISTEN)
    named 3288 named 21u IPv4 17546 0t0 TCP 10.0.6.77:domain (LISTEN)
    named 3288 named 22u IPv4 17548 0t0 TCP dns.hngd.com:domain (LISTEN)
    named 3288 named 23u IPv6 17550 0t0 TCP localhost:domain (LISTEN)
    named 3288 named 512u IPv4 17543 0t0 UDP localhost:domain
    named 3288 named 513u IPv4 17545 0t0 UDP 10.0.6.77:domain
    named 3288 named 514u IPv4 17547 0t0 UDP dns.hngd.com:domain
    named 3288 named 515u IPv6 17549 0t0 UDP localhost:domain

    [root@主人 ~]# netstat -anptlu |grep named //这个命令也可以获得同样的效果

    9. 用nslookup来检测dns
    [root@主人 ~]# nslookup
    > www.hngd.com
    Server: 192.168.100.20
    Address: 192.168.100.20#53

    Name: www.hngd.com
    Address: 192.168.100.11
    > 192.168.100.20
    Server: 192.168.100.20
    Address: 192.168.100.20#53

    20.100.168.192.in-addr.arpa name = dns.hngd.com.
    > set type=MX
    > 192.168.100.10
    Server: 192.168.100.20
    Address: 192.168.100.20#53

    10.100.168.192.in-addr.arpa name = mail.hngd.com.


    从DNS域名服务器的搭建

    构建辅助域名服务器
    辅助域名服务器也可以向客户机提供域名解析功能,但它与主域名服务器不同的是,它的数据不是直接输入的,而是从其他服务器(主域名服务器或其他辅助域名服务器)中复制过来的,只是一份副本,所以辅助服务器中的数据无法被修改

    在一个区域设置多台辅助域名服务器具有以下优点:
    1. 提供容错功能。当主域名服务器发生故障时,由辅助域名服务器提供服务
    2. 分担主域名服务器的负担。在DNS客户端较多的情况下,通过假设辅助域名服务器完成对客户端的查询服务,可以有效的减轻主域名服务器的负担
    3. 加快查询的速度

    Slave端的配置
    1. 辅助域名服务器的主配置文件的配置
    [root@lcl ~]# cat /etc/named.conf
    options {
    listen-on port 53 { 192.168.100.2; };
    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; };
    recursion yes;

    bindkeys-file "/etc/named.iscdlv.key";

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

    logging {
    channel default_debug {
    file "data/named.run";
    severity dynamic;
    };
    };

    zone "." IN {
    type hint;
    file "named.ca";
    };
    zone "hngd.com" IN {
    type slave; //声明从域名服务器
    masters { 192.168.100.20; }; //指明主服务器地址
    file "slaves/hngd.zones"; //从域名服务器的区域文件存放位置
    };
    zone "100.168.192.in-addr.arpa" IN {

    type slave;
    masters { 192.168.100.20; };
    file "slaves/192.168.100.zone";
    };
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";

    2. 将/etc/resolv.conf的nameserver指向192.168.100.2
    3. 关闭防火墙和selinux
    4. 重启named服务,再查看/var/named/slaves,发现自动生成正、反解析数据文件
    [root@lcl ~]# ls /var/named/slaves/
    192.168.100.zone hngd.zones
    5. 测试是否能进行dns解析
    [root@lcl ~]# nslookup www.hngd.com
    Server: 192.168.100.2
    Address: 192.168.100.2#53

    Name: www.hngd.com
    Address: 192.168.100.11

    6. 现在我再来做个测试,我将主域名服务器的正、反解数据文件进行更新,将序列号加1,并添加slave这个域名,如下所示:
    [root@主人 ~]# cat /var/named/hngd.zones
    $ORIGIN hngd.com.
    $TTL 1D
    @ IN SOA dns.hngd.com. admin.hngd.com. (
    2016032012
    1D
    1H
    1W
    3H
    )
    NS dns.hngd.com.
    NS slave.hngd.com.
    MX 5 mail.hngd.com.
    slave IN A 192.168.100.2
    dns IN A 192.168.100.20
    mail IN A 192.168.100.10
    www IN A 192.168.100.11
    bbs IN CNAME www
    [root@主人 ~]# cat /var/named/192.168.100.zone
    $ORIGIN 100.168.192.in-addr.arpa.
    $TTL 1D
    @ IN SOA dns.hngd.com. admin.hngd.com. (
    2016032012
    1D
    1H
    1W
    3H
    )
    NS dns.hngd.com.
    20 IN PTR dns.hngd.com.
    10 IN PTR mail.hngd.com.
    11 IN PTR www.hngd.com.
    2 IN PTR slave.hngd.com.

    7. 由于更新时间太长,所以我直接将从域名服务器下的正、反解析数据文件删除,再重启named服务,再查看发现那两个文件也进行了更新
    [root@lcl ~]# cd /var/named/slaves/
    [root@lcl slaves]# rm -rf *
    [root@lcl slaves]# service named restart
    停止 named:. [确定]
    启动 named: [确定]
    [root@lcl slaves]# ls
    192.168.100.zone hngd.zones
    [root@lcl slaves]# cat 192.168.100.zone
    $ORIGIN .
    $TTL 86400 ; 1 day
    100.168.192.in-addr.arpa IN SOA dns.hngd.com. admin.hngd.com. (
    2016032012 ; serial
    86400 ; refresh (1 day)
    3600 ; retry (1 hour)
    604800 ; expire (1 week)
    10800 ; minimum (3 hours)
    )
    NS dns.hngd.com.
    $ORIGIN 100.168.192.in-addr.arpa.
    10 PTR mail.hngd.com.
    11 PTR www.hngd.com.
    2 PTR slave.hngd.com.
    20 PTR dns.hngd.com.
    [root@lcl slaves]# cat hngd.zones
    $ORIGIN .
    $TTL 86400 ; 1 day
    hngd.com IN SOA dns.hngd.com. admin.hngd.com. (
    2016032012 ; serial
    86400 ; refresh (1 day)
    3600 ; retry (1 hour)
    604800 ; expire (1 week)
    10800 ; minimum (3 hours)
    )
    NS dns.hngd.com.
    NS slave.hngd.com.
    MX 5 mail.hngd.com.
    $ORIGIN hngd.com.
    bbs CNAME www
    dns A 192.168.100.20
    mail A 192.168.100.10
    slave A 192.168.100.2
    www A 192.168.100.11


    cache only DNS服务器

    配置缓存Cache-only服务器



    Cache-only服务器是很特殊的DNS服务器,它本身并不管理任何区域,但是DNS客户端仍然可以向它请求查询。Cache-only服务器类似于代理服务器,它没有自己的域名数据库,而是将所有查询转发到其他DNS服务器处理。当Cache-only服务器收到查询结果后,除了返回给客户机外,还会将结果保存在缓存中。当下一个DNS客户端再查询相同的域名数据时,就可以从高速缓存里查出答案,加快DNS客户端的查询速度。如果在局域网中建立一台这样的DNS服务器,就可以提高客户机DNS的查询效率并减少内部网络与外部网络的流量。

    架设Cache-only服务器非常简单,只需要建立好主配置文件named.conf即可。架设Cache-only服务器的主配置文件/etc/named.conf也需要设置服务器的选项,方法与设置主要名称服务器的方法相同,这里就不再重复了。下面通过实例来讲解各项配置。

    案例:将当前ip为192.168.100.254的主机配置为缓存域名服务器

    1. 建立named.conf主配置文件

    [root@dns ~]# cat /etc/named.conf
    options {
    listen-on port 53 {192.168.100.254; };
    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; };
    recursion yes; //是否允许递归

    forward only; //仅转发;forward first :首先使用转发,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答
    forwarders { 192.168.100.20; }; //将收到的所有dns请求转发给192.168.100.20服务器
    };

    logging {
    channel default_debug {
    file "data/named.run";
    severity dynamic;
    };
    };

    zone "." IN {
    type hint;
    file "named.ca";
    };

    2. 用named-checkconf检测named.conf的语法
    [root@dns ~]# named-checkconf /etc/named.conf
    [root@dns ~]#

    3. 将/etc/resolv.conf的nameserver指向缓存域名服务器
    [root@dns ~]# cat /etc/resolv.conf
    nameserver 192.168.100.254

    4. 重启named服务
    5. 现在如果检测,会发现不能进行域名解析,会出现这个问题的原因可能是192.168.100.20域名服务器的防火墙和selinux没有关闭
    6. 解决完以上问题后,我们再来检测
    [root@dns ~]# nslookup
    > server 192.168.100.254
    Default server: 192.168.100.254
    Address: 192.168.100.254#53
    > www.hngd.com
    Server: 192.168.100.254
    Address: 192.168.100.254#53

    Non-authoritative answer:
    Name: www.hngd.com
    Address: 192.168.100.11
    >


    上面的缓存域名服务器是转发所有的域名解析请求,当然我们也可以针对一个域名进行转发,如:
    zone IN "qq.com" {
    type master;
    forwarders{ 192.168.100.20; };
    }

    我们知道 DNS 会同时启用 UDP/TCP 的 port 53,而且是针对所有接口,因此上面的数据并没有什么特异的部分。不过,怎么会有 port 953 且仅针对本机来监听呢?其实那是 named 的远程控制功能,称为远程名称解析服务控制功能 (remote name daemon control, rndc)。预设的情况下,仅有本机可以针对 rndc 来控制。我们会在后续的章节再来探讨这个 rndc 啦,目前我们只要知道 UDP/TCP port 53 有启动即可
    (5) 测试:如果你的 DNS 伺服器具有连上因特网的功能,那么透过『 dig www.baidu.com @127.0.0.1 』这个基本指令执行看看, 如果有找到 baidu 的 IP ,并且显示『 SERVER: 127.0.0.1#53(127.0.0.1) 』的字样, 那就代表应该是成功啦!


    问题:

    什么时候有架设 cache-only DNS 的需求?

    在某些公司行号里头,为了预防员工利用公司的网络资源作自己的事情,所以都会针对 Internet 的联机作比较严格的限制。当然啦,连 port 53 这个 DNS 会用到的 port 也可能会被挡在防火墙之外的~这个时候, 你可以在『防火墙的那部机器上面,加装一个 cache-only 的 DNS 服务!』
    这是什么意思呢?很简单啊!就是你自己利用自己的防火墙主机上的 DNS 服务去帮你的 Client 端解译 hostname <--> IP 啰!因为防火墙主机可以设定放行自己的 DNS 功能,而 Client 端就设定该防火墙 IP 为 DNS 服务器的 IP 即可!哈哈!这样就可以取得主机名与 IP 的转译啦!所以,通常架设 cache only DNS 服务器大都是为了系统安全啰。
    Address: 192.168.100.20#53

    10.100.168.192.in-addr.arpa name = mail.hngd.com.

  • 相关阅读:
    [P1034][NOIP2001]一元三次方程求解 (二分)
    考前停课集训 Day7 嘞
    [P4995]跳跳!(贪心)
    [P4994]终于结束的起点 (递推)
    考前停课集训 Day6 垒
    [BZOJ1899][ZJOI2004]Lunch 午餐 (DP)
    考前停课集训 Day5 累
    任务查询系统 【主席树】
    主席树入门
    HNOI2002 营业额统计 平衡树模板题 【splay】
  • 原文地址:https://www.cnblogs.com/losbyday/p/5860678.html
Copyright © 2020-2023  润新知