更新:
2019年05月29日 新增:多域名
最近在部署腾讯的BlueKing自动化运维平台,需要映射一些顶级域名,默认采用bk.com,映射的服务器仍然不变,仍然为192.168.1. * 范围内。思路是新增加域名,则需要新增一份正向区域文件,而服务器不变,则只需要增加反向区域文件内容即可。


在公司内网环境中,经常需要用到一些特定的域名,这些就需要公司内网搭建DNS服务器,对于使用Windows全家桶的对于搭建DNS很简单,特别是用Windows Exchange的,但是缺点是比较大型,使用小型CentOS搭建更顺手。

一、准备阶段

  • 操作系统:CentOS 7.6
  • IP:192.168.1.2
  • 测试域名:spex.top, bk.com
  • 测试系统:svn.spex.top -> 192.168.1.10, pssa.bk.com -> 192.168.1.8

二、安装阶段

安装Bind

yum install -y bind-chroot bind-utils

# 开机启动
systemctl enable named

配置Bind

其实就是简单的修改,将127.0.0.1修改为any

> cat /etc/named.conf
options {
    listen-on port 53 { any; };  # 监听任何ip对53端口的请求
    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; }; # 接收任何来源查询dns记录

    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    bindkeys-file "/etc/named.iscdlv.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;
        };
};

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

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

添加正向反向区域

刚刚的配置文件中include的文件,我们来修改它,添加正向反向区域。

> cat /etc/named.rfc1912.zones 
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};

//spex.top 正向区域
zone "spex.top" IN {
        type master;
        file "named.spex.top";
        allow-update { none; };
};
//spex.top与bk.com 反向区域,文件名需要倒写
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.arpa";
        allow-update { none; };
};
//bk.com 正向区域
zone "bk.com" IN {
        type master;
        file "named.bk.com";
        allow-update { none; };
};

创建正向反向区域资源文件

刚刚的named.conf中我们设定的默认的资源文件目录。

进入目录查看文件
> cd /var/named/
> ls -al
总用量 24
drwxr-x---. 7 root  named   61 3月  29 09:52 chroot
drwxrwx---. 2 named named   23 3月  29 10:25 data
drwxrwx---. 2 named named   31 3月  29 10:42 dynamic
-rw-r-----. 1 root  named 2281 5月  22 2017 named.ca
-rw-r-----. 1 root  named  152 12月 15 2009 named.empty
-rw-r-----. 1 root  named  152 6月  21 2007 named.localhost
-rw-r-----. 1 root  named  168 12月 15 2009 named.loopback
drwxrwx---. 2 named named    6 1月  30 01:23 slaves
复制三份空文件进行修改
> cp named.empty named.spex.top
> cp named.empty named.bk.com
> cp named.empty 192.168.1.arpa

然后修改三份文件,注意域名后有一个"."

正向文件spex.top
> cat named.spex.top 
$TTL 3H
@       IN SOA  spex.top. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
svn IN A 192.168.1.10
正向文件bk.com
> cat named.bk.com
$TTL 3H
@       IN SOA  bk.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
paas IN A 192.168.1.8
反向文件
> cat 192.168.1.arpa 
$TTL 3H
@       IN SOA  sepx.top. rname.incalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
//10与8的意思为服务器的IP地址,比如10为192.168.1.10,8为192.168.1.8,可重复
10 IN PTR svn.spex.top.
8 IN PTR psss.bk.com.

以上资源文件均为用户named进行操作,如果使用root账号进行如上操作,最终还需修改文件权限
如果不修改文件拥有者,虽然named可以正常启动,但规则并不会生效,切记!

> chown named:named 192.168.1.arpa
> chown named:named named.spex.top
> chown named:named named.bk.com

启动服务

# 防火墙放行,也可放行tcp 53端口
> firewall-cmd --add-service=dns --permanent
> firewall-cmd --reload

# 启动named
systemctl start named

三、测试阶段

修改DNS服务器

这个每个系统不同,修改方式也不同,自己修改即可,如我们的例子中,需要把dns服务器修改为192.168.1.2

Nslookup测试

我们使用nslookup进行测试,对于Linux如果没有此命令可以安装(例Centos):

yum install -y bind-utils
测试
> nslookup
# 正向测试

> svn.spex.top
Server:        192.168.1.2
Address:    192.168.1.2#53

Name:    svn.spex.top
Address: 192.168.1.10

# 反向测试
> 192.168.1.10
Server:        192.168.1.2
Address:    192.168.1.2#53

10.1.168.192.in-addr.arpa    name = svn.spex.top.

测试成功,至此DNS服务器已经搭建完毕,可以将其配置后投入使用。

Last modification:May 29th, 2019 at 09:32 am