linux中DNS解析服务器搭建

想在局域网弄一个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解析服务器搭建)