小Q:世上最恐怖的事-------拿自己的时间去见证别人的梦想成真;

            世上最悲哀的事-------自己不敢尝试还去嘲笑身边为梦想而奔跑的人。

我发现一个挺奇怪的事,我好像每学到一个知识点,记录的时候都把标题写成什么什么配置,我就这么喜欢配置吗。。。其实细想想,最近这么多的知识点,而且就算是实际工作中,应该也是各种调整配置文件吧;我是这么想的,应该是对的吧?


=====================================步入正题=====================================

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS协议运行在UDP协议之上,使用端口号53。

主机名到IP地址的映射有两种方式

1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址

下面这幅图很形象的描述了DNS工作过程;

wKiom1YZBmOjeDlTAAVNTYK1SmA416.jpg

==========================配置DNS服务器===============

主要就是为了能让域名解析一个IP,但我们没办法在外网的环境下创建,只能用内网建一个只能内网识别的假的域名;

1. 安装bind

yum install -y bind

cp /etc/named.conf /etc/named.conf.bak  

>/etc/named.conf

vim /etc/named.conf 

模板如下:

options {
    directory "/var/named";
};
zone "." IN  {
    type hint;
    file "named.ca";
};
zone "localhost" IN {
    type master;
    file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
};

chown named /etc/named.conf

cd /var/named/

dig -t NS . > named.ca

vim localhost.zone //加入

@                   IN      SOA     localhost.  admin.localhost.     (
                                                                        2015081601
                                                                        1H
                                                                        10M
                                                                        7D
                                                                        1D
                                                                           )
@                   IN          NS          localhost.
localhost.          IN          A           127.0.0.1

vim named.local //加入

$TTL 86400
@                    IN      SOA     localhost.  admin.localhost.      (
                                                                        2015081601
                                                                        1H
                                                                        10M
                                                                        7D
                                                                        1D
                                                                        )
@                    IN          NS          localhost.
1                    IN          PTR         localhost

检测配置是否有问题: named-checkconf 

检测正解析: named-checkzone "localhost" /var/named/localhost.zone 

检测反解析: named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local

rndc-confgen -r /dev/urandom -a  // 生成 rndc.key, 如果没有这个key namd 是启动不了的。

chown named:named /etc/rndc.key

/etc/init.d/named start

netstat -lnp  |grep named  // 查看一下named进程是否监听了53端口

首先测试正向解析:dig @127.0.0.1 localhost. 

接着测试反解析:dig @127.0.0.1 -x 127.0.0.1

wKioL1YZB-bBRrCyAADgetL-_B8100.jpg



=====================增加域名解析==========================

vim /etc/named.conf //底部增加

zone "abc.com" IN {
    type master;
    file "abc.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.zone";
};

编辑正解析zone文件: vim /var/named/abc.com.zone//增加

$TTL    600
@               IN      SOA     abc.com.      root.abc.com.    (
                                                        2013081601
                                                        1H
                                                        10M
                                                        7D
                                                        1D
)
                 IN      NS      ns.abc.com.
                 IN      MX  10  mail.abc.com.
ns               IN      A       192.168.0.11
www              IN      A       192.168.137.73
mail             IN      A       192.168.137.10
bbs              IN      CNAME    www.abc.com.

编辑反解析文件: vim /var/named/192.168.zone //增加

$TTL 600
@               IN      SOA     ns.abc.com.      root.abc.com. (
                                                        2013081601
                                                        1H
                                                        10M
                                                        7D
                                                        1D
)
@               IN      NS      ns.abc.com.
10              IN      PTR     ns.abc.com.
11              IN      PTR     mail.abc.com.
73              IN      PTR     www.abc.com.
$TTL 1D                                                             # 生存周期一天
@       IN SOA  @ admin.123.com. (
                               201501090   ; serial      #数字是时间和更新数据库的次数
                               1D      ; refresh                #从同步主机的刷
                               1H      ; retry                   #主从机 通信时间
                               1W      ; expire                 # 过期时间
                               3H )    ; minimum                 #TTL不定义时,以它为准
        IN  NS     ns.123.com.            
103     IN  PTR    ns.123.com.                 # 103是我们终端IP
20      IN  PTR    mail.123.com.               # 20另一台虚拟机IP
#因为我们用的192.168.1网段反解析的域名,所以把bbs那些不再这网段的IP域名去掉了

分别检测两个配置文件是否有问题:

named-checkzone "abc.com" abc.com.zone

named-checkzone "137.168.192.in-addr.arpa" 192.168.zone 

重启测试 dig @127.0.0.1  www.abc.com 

              dig @192.168.1.103  mail.123.com

         dig @192.168.1.103  bbs2.123.com          解析不到,因为bbs2没有配置

         dig @127.0.0.1   -x   192.168.1.11

         dig @192.168.1.103  -x  192.168.1.20

         dig @192.168.1.103  -x  192.168.2.10             不再网段内,解析不到


wKiom1YZB-fxpL4MAAA7pw0o6lk084.jpg

这时主配置文件中监听端口配置,可以添加严重哦解析的网段或IP,注释或删掉表示能监听所有IP;


=================配置DNS转发==================

我们配置的DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。

配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的确在使用,也就是说这个域名已经被某个DNS服务器解析了。

vim  /etc/named.conf //在options{} 里面增加

forward first;  

forwarders { 8.8.8.8; };

这两行就是用来配置转发的,该DNS服务器不能解析的域名会转发到8.8.8.8这个DNS服务器上去解析。


=================DNS主从配置==================

当一个服务器配置完DNS后,大量的IP域名对应,为了防止他宕掉,会设置多台 从 服务器,备份;

比如在另一台服务器为192.168.1.1 

从服务器上 yum install -y bind

拷贝主上的配置文件,有/etc/named.conf, /var/named/localhost.zone, /var/named/named.local  

拷贝过来后,修改一下从的/etc/named.conf 内容:

options {
    directory "/var/named";
};
zone "." IN  {
    type hint;
    file "named.ca";
};
zone "localhost" IN {
    type master;
    file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
};
zone "abc.com" IN {
    type slave;
    file "slaves/abc.com.zone";
    masters { 192.168.0.103; };
};
zone "137.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/192.168.zone";
    masters { 192.168.0.103; };
};

从上生成rndc.key: rndc-confgen -r /dev/urandom -a 

                 chown named:named /etc/rndc.key

从上启动named: /etc/init.d/named  start 

启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有192.168.zone, abc.com.zone这两个文件,内容是和主上的一样的

在从上测试: dig @127.0.0.1  www.abc.com 

           dig  @192.168.1.103 bbs.123.com

反解析:   dig  @192.168.1.103 -x  192.168.1.103




==================测试主从同步===================

在主dns上更改文件 /var/named/abc.com.zone // 在最后增加一行:

123      IN   A    1.1.1.1

另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变,数字只能是变大,不能减小,2013081601 -> 2013081602

重启主namd服务: /etc/init.d/named restart

主服务器 上 

dig  @192.168.1.103   teng.123.com                可以解析到

从服务器上

dig  @192.168.1.103    teng.123.com               会发现解析不到

查看域名文件:

cat    /var/named/slaves/123.com                会发现他的serial还是01

按理说配置完成后,主 一更改,从 也会更新;其实会看到他的refresh(刷新时间)是1天,就是说他会在一天的时间里才会去访问主,然后更新;

而我们不会让他这么等,我们可以强制它立刻更新;

进入主的配置文件:

vim   /etc/named.conf

在解析和反解析的模块下都添加

notify   yes;
also-notify  { 192.168.1.1;};

重启服务: /etc/init.d/named    restart              

现在到从服务器上再看,就可以了


扩展: http://blog.sina.com.cn/s/blog_6151984a0100f1f3.html 
          =  http://blog.chinaunix.net/uid-15084954-id-190335.html 
配置详解  http://fighter.blog.51cto.com/1318618/500957 
故障排除  http://skytech.blog.51cto.com/2955395/548236 
排版清晰  http://evolution.blog.51cto.com/3343305/643520  
51汇总     https://blog.51cto.com/zt/127/