美文网首页python爬虫
linux中DNS解析服务器搭建

linux中DNS解析服务器搭建

作者: 苦海飘摇 | 来源:发表于2020-10-14 15:09 被阅读0次

    想在局域网弄一个dns解析服务器,我看了dnsmasq和bind,最终打算用bind搭建。
    首先,需要伯克利大学互联网域名工具(Berkeley Internet Name Domain),简称BIND,可以使用yum或rpm安装。

    • BIND 简介:全称为Berkeley Internet Name Domain(伯克利因特网名称域系统).BIND 主要有三个版本:BIND4、BIND8、BIND9.
    • BIND8 融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等.

    一、安装

    yum -y install bind bind-chroot bind-utils
    

    bind ---> 该包为DNS服务的主程序包
    bind-utils ---> 该包为客户端工具,默认安装,用于搜索余名指令
    bind-chroot ---> 该包提高安全性
    bind-chroot是bind的一个功能包,使bind可以在一个chroot的模式下运行.
              也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,
              只是系统中的一个子目录.这样做的目的是为了提高安全性.
              因为在chroot模式下,bind只可以方位这个子目录的范围.
              而不能进入这个子目录外其他的地方.

    二、根目录挂载

    mount --bind /var/named /var/named/chroot/var/named
    
    • 修改/var/named/chroot/下的文件的优点很突出:如果umount后,原本非/var/named/chroot/下的文件不发生改变(无论你在chroot/下的文件中做什么),安全性非常好。所以,我们在学习配置过程中是可以忽略这部分知识的,等到配置过程都掌握后,在生产系统的配置过程中,一定是配置chroot/下的文件,也就是说,生产系统中下面的操作过程是针对chroot/下的对应文件,这点一定要注意。

    三、修改配置

    (1)named.conf

    vim /etc/named.conf  # options修改如下
    
    options {
            listen-on port 53 { any; };   #监听地址,和端口 IPV4
            listen-on-v6 port 53 { none; };  #监听地址,和端口 IPV6,这里不使用ipv6,若启用可改为any
            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; };    #允许解析的IP地址
            recursion yes;    # 开启递归查询
            dnssec-enable yes;    #开启加密
            dnssec-validation yes;    #在递归查询服务器上开启DNSSEC验证
    
            /* Path to ISC DLV key */
            bindkeys-file "/etc/named.root.key";      # isc dlv key 的地址
            managed-keys-directory "/var/named/dynamic";    #key的保存目录
            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    };
    

    (2)named.rfc1912.zones

    vim /etc/named.rfc1912.zones  # 增加如下内容 
    
    zone "luqin.com" IN {     # 指定区域名为luqin.com
        type master;    # 指定工作模式 为主dns服务器
        file "luqin.com.zone";   # 指定配置文件为 luqin.com.zone
    };
    
    • 我希望的服务器使用luqin.com这个域名的zone文件
    • 这个luqin.com.zone就是bind需要的zone文件,下面要配置这个文件。
    cp -a /var/named/named.localhost /var/named/luqin.com.zone
    # 在拷贝配置文件的时候,尽量使用-a选项 (拷贝所有属性)
    vim /var/named/luqin.com.zone
    
    $TTL 1D                                         ;设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。
    @       IN SOA  @ rname.invalid. (              ;域名 IN SOA 域 以.结尾
                                            0       ; serial 版本号
                                            1D      ; refresh 从服务器的更新频率 1 day
                                            1H      ; retry 从服务器更新失败的重试间隔 1 hour
                                            1W      ; expire 从服务器不能更新时的失效时间 1 week
                                            3H )    ; minimum 查询不到时的失效时间 3 hour
            NS      @                               ; 设置 dns 服务器的域名
            A       127.0.0.1                       ; 设置 dns 服务器的 ip 地址
            AAAA    ::1                             ; 设置域名服务器的A记录,地址为ipv6的地址。
    www     IN A    172.17.0.3                      ; 把FQDN(完全合格域名标识)映射到IP地址
    
    • zone文件的定义别名cname命令
      www2.****.cn. CNAME www.****.cn. # 定义别名 www.****.cn 的别名为 www2.****.cn

    四、启动与测试

    (1)启动

    systemctl start named
    # 检测是否启动成功
    [root@localhost ~]# ps -ef | grep named
    named      2461      1  0 14:44 ?        00:00:00 /usr/sbin/named -u named -c /etc/named.conf
    root       2567   1578  0 14:59 pts/0    00:00:00 grep --color=auto named
    

    (2)测试

    # 配置dns
    vim /etc/resolv.conf   # 增加下面一行
    nameserver 127.0.0.1    # 如果不是本机,将服务器ip替换127.0.0.1
    
    # 使用检测host、dig验证dns配置
    host www.luqin.com
    dig www.luqin.com
    ping www.luqin.com
    
    host dig

    五、dnsmasq的使用

    1.安装dnsmasq

    yum install -y dnsmasq

    2.配置配置文件vim /etc/dnsmasq.conf

    resolv-file=/etc/resolv.dnsmasq.conf
    strict-order #dnsmasq会从resolv.dnsmasq.conf这个文件中找上游dns服务器。

    listen-address=127.0.0.1 #让DNS只对本机有效,如果是自己所在的局域网,那就再加上自己的内网ip,比如listen-address=192.168.1.6,127.0.0.1

    vim /etc/resolv.conf 设置成 nameserver 127.0.0.1

    vim /etc/resolv.dnsmasq.conf nameserver 8.8.8.8 nameserver 115.115.115.115

    vim /etc/dnsmasq.conf 增加addn-hosts=/etc/dnsmasq.hosts

    cp /etc/hosts /etc/dnsmasq.hosts 把/etc/hosts拷贝过来

    3.配置需要解析的域名

    vim /etc/dnsmasq.hosts 添加 ip 域名
    192.168.1.7 nexus.szhmxxkj.com

    4.启动服务

    service dnsmasq start

    5.测试本地能否解析域名

    ping nexus.szhmxxkj.com
    ping baidu.com

    6.关闭防火墙,或者开放53端口,设置其他电脑的dns服务器为dnsmasq的局域网ip

    service iptables stop 建议关闭防火墙,开放了防火墙端口有时无法解析域名

    7.设置开机自启

    chkconfig dnsmasq on
    chkconfig iptables off 关闭防火墙的开机自启

    8. 重新启动了网卡,会导致本地/etc/resolv.conf文件更改,写入网关ip,导致dns服务无法ping通自定义域名

    将本地dns服务器的网关改为该地址

    9.将路由器的的dns服务器改为自己的地址,这样在内网就能使用自己的dns服务器了

    相关文章

      网友评论

        本文标题:linux中DNS解析服务器搭建

        本文链接:https://www.haomeiwen.com/subject/tfoipktx.html