昨天有一个兄弟找我研究DNS服务器,答应他了,给他写一篇关于DNS的服务搭建的例子,这个DNS服务器是基于bind的,这个玩意在linux服务器上,配置了nameserver就好使,在window系统配置上服务器dns,不能立即好使,得过一会儿才好使,还没研究明白。

简介

DNS系统的作用:
1、正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)
2、反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)

安装

#安装bind
yum install -y bind bind-libs bind-utils bind.x86_64


#检查安装情况
rpm -qa bind*

查看安装情况

CentOS之DNS服务器安装-yellowcong_vim

配置named服务

修改named.conf

通过修改named.conf 来配置dns绑定的ip,可以访问的人等。

#修改named.conf配置
vim /etc/named.conf

#可以复制粘贴以下配置,修改绑定的主机ip即可
//
// named.conf
//
options {

        //listen-on port 53 { 127.0.0.1; };
        //本机
        listen-on port 53 { 192.168.100.10; };
        //取消ip6
        //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     { localhost; };
        //修改为所有人都可以访问这台dns服务器
        allow-query     { any; };
        //指定上一层的dns服务器
        //设定了这个,如果访问外网的网站,咋们dns主机也能解析
        forwarders { 114.114.114.114; };
        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.

        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        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";


#测试配置是否正确
named-checkconf /etc/named.conf
#如果没有报错,就表示正确

CentOS之DNS服务器安装-yellowcong_其他_02

测试配置正确性

CentOS之DNS服务器安装-yellowcong_DNS_03

配置named.rfc1912.zones

在这个文件里面配置正向解析和反向解析

#修改named.rfc1912.zones 添加正向解析
vim /etc/named.rfc1912.zones

#添加下面配置

//正向解析
zone "yellowcong.com" IN {
        type master;
        file "yellowcong.com.zone";
};

//反向解析
//我的目标ip是 192.168.100.xx
//反响解析的时候,就需要反过来命名 100.168.192.in-addr.arpa
//in-addr.arpa 这个是固定的,不可以瞎改哦
zone "100.168.192.in-addr.arpa" IN {
        type master;
        file "100.168.192.zone";
};

CentOS之DNS服务器安装-yellowcong_DNS_04

配置解析

配置正向

配置正向解析的时候,必须配置dns的解析,然后给dns添加一条a记录
我这个地方都是测的本机的ip,搭建也可以 拿局域网的其他机器进行测试

#创建空文件
touch /var/named/yellowcong.com.zone

#修改文件所属组
chown root:named /var/named/yellowcong.com.zone
chmod 640 /var/named/yellowcong.com.zone

#编辑文件
vim /var/named/yellowcong.com.zone

#添加如下配置
$TTL 1D
@   IN SOA  dns.yellowcong.com admin.yellowcong.com. (
                    123 ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
#配置ns 管理这个领域名的dns服务(不用修改,默认这个即可)
@   IN  NS  dns
#邮件服务需要指定数字
@   IN  MX  5   mail
#解析上面的dns
dns     IN  A   192.168.100.10
#解析上面的mail
mail    IN  A   192.168.100.10
#添加域名  www.yellowcong.com,指向192.168.100.10
www IN  A   192.168.100.10

#配置完了,监测是否配置正确
#第一个参数:yellowcong.com.zone 这个是文件名
#第二个参数:/var/named/yellowcong.com.zone 路径
named-checkzone "yellowcong.com.zone" /var/named/yellowcong.com.zone

CentOS之DNS服务器安装-yellowcong_IPV6_05

测试配置是否正确,下图可以看到配置完犊子了,有问题,自己检查一下

CentOS之DNS服务器安装-yellowcong_centos_06

测试通过

CentOS之DNS服务器安装-yellowcong_其他_07

修改文件的权限,需要将用户组修改为named,以及修改权限为640

CentOS之DNS服务器安装-yellowcong_其他_08

配置规则

[domain]

IN

[[RR type]

[RR data]]

主机名.

IN

A

IPv4 的 IP 地址

主机名.

IN

AAAA

IPv6 的 IP 地址

区域名.

IN

NS

管理这个领域名的服务器主机名字.

区域名.

IN

SOA

管理这个领域名的七个重要参数(如上说明)

区域名.

IN

MX

顺序数字

主机别名.

IN

CNAME

实际代表这个主机别名的主机名字.

配置反向

配置反向解析的时候,需要注意域名后面有一个点 .,而且反向需要和正向配置对上,不然就会 报错。。。

#创建空文件
touch /var/named/100.168.192.zone

#修改文件所属组
chown root:named /var/named/100.168.192.zone
chmod 640 /var/named/100.168.192.zone

#编辑文件
vim /var/named/100.168.192.zone

#添加一下配置
$TTL 1D
@    IN SOA dns.yellowcong.com. admin.yellowcong.com. (
                    124 ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
@   IN  NS  dns.yellowcong.com.
10  IN  PTR dns.yellowcong.com.
10  IN  PTR mail.yellowcong.com.
10  IN  PTR www.yellowcong.com.


#配置完了,监测是否配置正确

named-checkzone "100.168.192.zone" /var/named/100.168.192.zone

修改文件的所在组

CentOS之DNS服务器安装-yellowcong_其他_09

配置文件

CentOS之DNS服务器安装-yellowcong_vim_10

测试是否添加成功

CentOS之DNS服务器安装-yellowcong_其他_11

启动服务

#启动服务
service named start

#添加到开机启动
systemctl enable named

CentOS之DNS服务器安装-yellowcong_其他_12

linux测试

dig -t A www.yellowcong.com @192.168.100.10

#查看反向解析
dig -x 192.168.100.10 @192.168.100.10

查看A 记录

CentOS之DNS服务器安装-yellowcong_vim_13

查看ns记录

CentOS之DNS服务器安装-yellowcong_vim_14

反向代理测试

CentOS之DNS服务器安装-yellowcong_centos_15

window客户端测试

#进入window的测试端口
nslookup

#登录ns服务
server 192.168.100.10

#域名解析
set q=NS

#PTR反向解析,输入ip,查看所表示的域名
set q=PTR

#解析A记录,输入域名查看ip 
set q=A

#别名解析,输入域名查看ip
set q=CNAME

解析a记录

CentOS之DNS服务器安装-yellowcong_centos_16

解析NS记录

CentOS之DNS服务器安装-yellowcong_IPV6_17

反向解析,没有问题啊

CentOS之DNS服务器安装-yellowcong_其他_18

添加DNS到系统

1、linux添加DNS

这种,直接修改resolv.conf的方法,会被网卡的默认配置给刷新掉,所以建议使用更改网卡默认的dns的方式进行修改。

第一种方法:修改resolv.conf

这种方式是临时的,重启网卡后,就刷新掉了

vim /etc/resolv.conf
#服务的地址
nameserver 192.168.100.10

curl www.yellowcong.com
curl

CentOS之DNS服务器安装-yellowcong_DNS_19

访问网页

没有更改nameserver之前

CentOS之DNS服务器安装-yellowcong_vim_20

更改nameserver之后

CentOS之DNS服务器安装-yellowcong_其他_21


第二种方法:修改网卡的dns的方式

这种方式是比较靠谱的,会永久设定dns,不会像第一种,别顶掉

#直接修改网卡的 dns
vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
#UUID=e84159d1-62e6-4937-9c91-08a2f6adeda1
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.100.11
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.10
#DNS1=119.29.29.29
DNS2=182.254.116.116


#重启网卡
systemctl  restart network

CentOS之DNS服务器安装-yellowcong_DNS_22

重启网卡后,自动将dns刷新到了/etc/resolv.conf

CentOS之DNS服务器安装-yellowcong_DNS_23

添加到window

如果遇到不能立即生效的问题,可以手动刷新dns缓存,自动生效得等半个多点。

配置到了window平台

CentOS之DNS服务器安装-yellowcong_其他_24

刷新dns缓存

俺刷新了,就是不好用,坑
ipconfig  /flushdns

#这个后面跟的是 一级域名yellowcong.com
nslookup -qt=ns yellowcong.com

CentOS之DNS服务器安装-yellowcong_DNS_25

更新window上的dns

CentOS之DNS服务器安装-yellowcong_其他_26

配置文件打包

如果配置任然不成功,可以用我配置好的,修改修改

http://yellowcong.qiniudn.com/%E9%85%8D%E7%BD%AE-named.zip

CentOS之DNS服务器安装-yellowcong_DNS_27

错误集合

/etc/named.conf:59: missing ‘;’ before ‘include’

这个错虽然是/etc/named.conf报的错,但是有可能是named.rfc1912.zones配置有问题导致的

#执行,查看named.rfc1912.zones 是否存在问题
named-checkconf /etc/named.rfc1912.zones

100.168.192.zone:2: SOA record not at top of zone (100.168.192.in-addr.arpa.100.168.192.zone)

配置反向解析的有问题,是文件配置问题,仔细检查

has no address records (A or AAAA)

这个是没有记录,所以我赶紧查看了一下正向解析的地址,发现尼玛 ,ip给弄串了。

CentOS之DNS服务器安装-yellowcong_其他_28

#查看正向解析,是否存在dns的配置
vim /var/named/yellowcong.com.zone

#修改记录

大家发现192.168.100.10的记录部不存在,我写的是11,尴尬了

CentOS之DNS服务器安装-yellowcong_IPV6_05

修改后

CentOS之DNS服务器安装-yellowcong_DNS_30

执行测试

named-checkzone "100.168.192.zone" /var/named/100.168.192.zone

CentOS之DNS服务器安装-yellowcong_其他_11

参考文章
http://blog.51cto.com/yueyuanyuan/360317