DNS域名解析服务器,dns服务器程序包名称为bind,程序名named。

安装DNS服务器:

yum install bind -y

配置文件:

/etc/named.conf        主配置文件

/etc/rndc.key              Remote Name Domani Controller

/var/namd/                 区域数据文件

/etc/rc.d/init.d/named        {start|stop|restart|status|reload}

/usr/sbin/named                主程序

/usr/sbin/named-checkconfig          检查配置文件

/usr/sbin/named-checkzone            检查zone

/usr/sbin/rndc-confgen                    生产rndc的配置文件

caching-nameserver      这是个软件包,能把DNS服务器变为缓存DNS服务器


配置文件:

1、修改监听地址:listen-on 改为外部可访问地址。

2、修改访问权限:allow-query 改为 any 表示任何人都可以访问。

3、注释掉dnssec。

options {
        listen-on port 53 { 192.168.1.141; 127.0.0.1; };// 多地址用分号,注释掉默认监听所有端口
        directory       "/var/named"; // 区域解析,options中最关键的一项,其他的都可以删除
        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; // 是否允许递归,一般yes
        forwarders { // 向上递归解析
                223.5.5.5;
                114.114.114.114;
        };
        //下面的4条都都是关于加密的,配置繁琐不实用,改成no
        dnssec-enable no;
        dnssec-validation no;
        //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";

启动:

systemctl start named.service

配置主DNS名称服务器:

在 /etc/named.rfc1912.zones 文件中添加如下内容:

zone "ziwei.wiki" IN {
	type master;
	file "ziwei.wiki.zone"; // 这里包含的文件相对于路径 /var/named/ 
};

创建解析文件:

vim /var/named/ziwei.wiki.zone

内容如下:

$TTL 1D
$ORIGIN ziwei.wiki.
@       IN      SOA     ns1.ziwei.wiki. admin.ziwei.wiki. (
                        2018112501
                        1H
                        5M
                        7D
                        1D )
        IN      NS      ns1
        IN      NS      ns2
ns1     IN      A       192.168.1.141
ns2     IN      A       192.168.1.141
www     IN      A       192.168.1.108

检查配置文件:

检查主配置文件命令

named-checkconf

检查区域配置文件,第一个参数为区域名称,第二个为区域地址。

named-checkzone "ziwei.wiki" ziwei.wiki.zone

修改配置文件的属组:

chmod 640 ziwei.wiki.zone
chown :named ziwei.wiki.zone

重读配置文件命令:

service named reload
或
rndc  reload

查看状态:

rndc status

查找解析记录:“@”表示指定DNS解析地址

dig -t A www.ziwei.wiki @192.168.1.141
dig -t A ipaipan.com @192.168.1.12 +trace
host -t A ipaipan.com
host -t A ipaipan.com 192.168.1.12 # ip为server
nslookup  ipaipan.com 192.168.1.12 # ip为server


DNS监听端口与协议:53/udp、53/tcp、953/tcp, rndc 默认监听端口


解析类型:

SOA:起始授权记录,一个区域解析库有且仅能有一个SOA记录,且必须为解析库的第一条。

A:FQDN-->ipv4

AAAA:FQDN-->ipv6

PTR:IP-->FQDN

NS:表名当前区域的DNS服务器name server 

CNAME:别名记录

MX:邮件交换器mail exchanger


解析记录:

SOA:区域名、TTL值、IN、SOA、主DNS服务地址、邮箱地址(邮箱的@符号有特殊用途用点代替)

scriptjc.com.    86400    IN    SOA    ns.scriptjc.com.    admin.scriptjc.com.(
    201712292200 ;版本号,任意值
    2H  ;刷新时间
    10M ;重试时间
    1W  ;过期时间
    1D  ;否定答案的TTL值
)

NS:为区域指定DNS服务器地址,从服务器

scriptjc.com.	IN	NS	ns1.scriptjc.com.
scriptjc.com.	IN	NS	ns2.scriptjc.com.
scriptjc.com.	IN	NS	192.168.1.12

MX:数字为权重,0-99之间

scriptjc.com.    IN    MX    10    mx1.scriptjc.com.
scriptjc.com.    IN    MX    20    mx1.scriptjc.com.

A:有多个值则轮询解析

www.scriptjc.com.    IN    A    192.168.1.12
www.scriptjc.com.    IN    A    192.168.1.13
  *.scriptjc.com.    IN    A    192.168.1.13
    scriptjc.com.    IN    A    192.168.1.13

PTR:IP解析到主机名,反解析,IP要反过来写

12.1.168.192.in-addr.arpa    IN    PTR    www.scriptjc.com. 
12    IN    PTR    www.scriptjc.com. # 简写

CNAME:

m.scriptjc.com.    IN    CNAME    www.scriptjc.com.

简单示例:

@ 表示 example.com 域名本身,也就是 example.com. 的简写的方式,写 example.com. 也可以。

$TTL 1D
$ORIGIN ipaipan.com.
@       IN SOA  ns.ipaipan.com. admin.ipaipan.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      ns
ns      IN      A       192.168.1.12
@       IN      A       192.168.1.16
*       IN      A       192.168.1.16


子域名配置


主域名配置:

named.conf:

zone "example.com" IN {
    type master;
    file "/etc/namedb/example.com.zone";
    allow-update { none; };
};

/etc/namedb/example.com.zone:

$ORIGIN example.com.
$TTL 1d
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023121801      ; serial
                        3h              ; refresh
                        1h              ; retry
                        1w              ; expire
                        1d )            ; minimum

@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.11

www     IN      A       192.168.1.100
mail    IN      A       192.168.1.101

子域名配置:

named.conf:

zone "example.com" IN {
    type master;
    file "/etc/namedb/example.com.zone";
    allow-update { none; };
};

zone "demo.example.com" IN {
    type master;
    file "/etc/namedb/demo.example.com.zone";
    allow-update { none; };
};

/etc/namedb/demo.example.com.zone:

$ORIGIN demo.example.com.
$TTL 1d
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023121801      ; serial
                        3h              ; refresh
                        1h              ; retry
                        1w              ; expire
                        1d )            ; minimum

@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

www     IN      A       192.168.1.100
mail    IN      A       192.168.1.101

加载配置:

rndc reload